×

Red Hat OpenShift Service Mesh 由两部分组成

  • Red Hat OpenShift Service Mesh 资源

  • Red Hat 提供的 Kiali

Red Hat 提供的 Kiali 由三部分组成

  • Red Hat 提供的 Kiali 运算符

  • Kiali 服务器

  • OpenShift Service Mesh 控制台 (OSSMC) 插件

OpenShift Service Mesh 集成以下内容

  • 例如可观察性组件

    • OpenShift 监控

    • Red Hat OpenShift 分布式追踪平台

    • Red Hat OpenShift 分布式追踪数据收集运算符

  • cert-manager

  • Argo rollouts

Red Hat OpenShift Service Mesh 资源

Red Hat OpenShift Service Mesh 运算符管理 Istio 控制平面的生命周期。OpenShift Service Mesh 运算符 API 不是创建新的配置模式,而是围绕 Istio 的 Helm chart API 构建的。

  • 尽管 Red Hat OpenShift Service Mesh API 是围绕 Istio 的 Helm chart API 构建的,但不支持 Helm chart。

  • Istio 的 Helm chart 公开的全部安装和配置选项都可通过 Red Hat OpenShift Service Mesh 自定义资源定义 (CRD) 的 `values` 字段获得。

Istio 资源

`Istio` 资源用于管理 Istio 控制平面。这是一个集群范围的资源,因为 Istio 控制平面在整个集群中运行并需要访问整个集群。

要选择一个命名空间来运行控制平面 Pod,可以使用 `spec.namespace` 字段。

`spec.namespace` 字段是不可变的:要将控制平面移动到另一个命名空间,必须删除 `Istio` 资源并使用不同的 `spec.namespace` 重新创建它。

您可以通过 `spec.values` 字段访问所有 `Istio` 自定义资源定义 (CRD) 选项

示例 `Istio` 资源 CRD
apiVersion: sailoperator.io/v1alpha1
kind: Istio
metadata:
  name: default
spec:
  version: v1.22.3
  namespace: istio-system
  updateStrategy:
    type: InPlace
  values:
    pilot:
      resources:
        requests:
          cpu: 100m
          memory: 1024Mi

您可以运行以下命令查看所有自定义选项

$ oc explain istios.spec.values

为了支持控制平面的金丝雀更新,OpenShift Service Mesh 包含对多个 Istio 版本的支持。您可以通过将 `spec.version` 设置为您想要安装的版本(以 `v` 为前缀)来选择版本。只需更改此字段即可更新到新版本。

OpenShift Service Mesh 支持两种不同的控制平面更新策略

就地

OpenShift Service Mesh 运算符会立即将您现有的控制平面资源替换为新版本的控制平面资源。

基于修订版

通过创建第二个控制平面来使用 Istio 的金丝雀更新机制,您可以将工作负载迁移到该控制平面以完成更新。

创建 Istio 资源后,OpenShift Service Mesh 会根据 `updateStrategy` 为资源生成修订版名称,并创建相应的 `IstioRevision`。

IstioRevision 资源

`IstioRevision` 是一个集群范围的资源,也是 OpenShift Service Mesh 提供的最低级别 API。它通常不是由用户创建的,而是由运算符本身创建的。它的模式与 `Istio` 资源的模式非常相似 - 但它不是表示您希望在集群中存在的控制平面的状态,而是表示该控制平面的一个修订版。

您希望在集群中存在的控制平面修订版是具有特定版本和修订版名称的 Istio 实例,其修订版名称可用于将工作负载或整个命名空间添加到网格中。例如:使用istio.io/rev=<REVISION_NAME>标签。

您可以将IstioIstioRevision资源之间的关系视为类似于 Kubernetes 的副本集和 Pod 之间的关系:副本集可以由用户创建,并导致自动创建 Pod,这将触发容器的实例化。

类似地,用户创建Istio资源,指示 OpenShift Service Mesh Operator 创建匹配的IstioRevision资源,然后又触发 Istio 控制平面的创建。为此,OpenShift Service Mesh Operator 将把您所有相关的配置从Istio资源复制到IstioRevision资源。

IstioCNI 资源

使用 OpenShift Service Mesh Operator 时,Istio 的容器网络接口 (CNI) 插件的生命周期是单独管理的。要安装 Istio 的 CNI 插件,您需要创建一个IstioCNI资源。

IstioCNI资源是集群范围的资源,因为它安装了一个在集群所有节点上运行的守护程序集。您可以通过设置spec.version字段来选择版本,如下面的示例所示。要更新 CNI 插件,请将版本字段更改为您要安装的版本。与Istio资源一样,它也具有一个values字段,该字段公开了istio-cni图表中提供的所有选项。

IstioCNI资源示例
apiVersion: sailoperator.io/v1alpha1
kind: IstioCNI
metadata:
  name: default
spec:
  version: v1.22.3
  namespace: istio-cni
  values:
    cni:
      cniConfDir: /etc/cni/net.d
      excludeNamespaces:
      - kube-system

Red Hat OpenShift Service Mesh 和 Kiali

Kiali 基于开源 Kiali 项目。请参见Kiali 项目。Red Hat 提供的 Kiali 由三个部分组成:

  • Red Hat 提供的 Kiali 运算符

  • Kiali 服务器

  • OpenShift Service Mesh 控制台 (OSSMC) 插件

它们协同工作,构成 OpenShift Service Mesh 的用户界面 (UI)。Kiali 通过显示微服务及其连接方式来提供对服务网格的可见性。

Kiali 帮助您定义、验证和观察 Istio 服务网格。它通过推断拓扑结构来帮助您理解服务网格的结构,并提供有关服务网格健康状况的信息。

Kiali 提供了服务网格命名空间的近实时交互式图形视图,该视图可以提供对断路器、请求速率、延迟甚至流量流图等功能的可见性。Kiali 提供了关于不同级别组件(例如应用程序、服务、工作负载)的洞察力,并且可以在所选图形节点或边上显示具有上下文信息和图表交互。

Kiali 还提供验证 Istio 配置(例如网关、目标规则、虚拟服务、网格策略等)的功能。Kiali 提供详细的指标,并且可以使用基本的 Grafana 集成进行高级查询。通过将 Red Hat OpenShift 分布式跟踪平台 (Tempo) 和 Red Hat OpenShift 分布式跟踪数据收集集成到 Kiali 控制台中,提供分布式跟踪。

Kiali 架构

Kiali 服务器(后端)

此组件在容器应用程序平台中运行,并与服务网格组件通信,检索和处理数据,并将这些数据暴露给控制台。Kiali 服务器不需要存储。将服务器部署到集群时,配置在配置映射和密钥中设置。

Kiali 控制台(前端)

Kiali 控制台是一个 Web 应用程序。控制台查询 Kiali 服务器以获取数据并将其呈现给用户。

此外,Kiali 还依赖于容器应用程序平台和 Istio 提供的外部服务和组件。

Red Hat Service Mesh (Istio)

Istio 是 Kiali 的一个要求。Istio 是提供和控制服务网格的组件。虽然 Kiali 和 Istio 可以单独安装,但 Kiali 依赖于 Istio,如果没有 Istio,Kiali 将无法工作。Kiali 需要检索 Istio 数据和配置,这些数据和配置通过 Prometheus 和 Red Hat OpenShift Service Mesh 集群 API 公开。

Prometheus

专用 Prometheus 实例是可选的。启用 Istio 遥测时,指标数据存储在 Prometheus 中。Kiali 使用此 Prometheus 数据来确定网格拓扑,显示指标,计算运行状况,显示可能存在的问题等等。Kiali 直接与 Prometheus 通信,并假定 Istio 遥测使用的架构。Prometheus 是 Istio 的依赖项,也是 Kiali 的硬依赖项,许多 Kiali 的功能如果没有 Prometheus 将无法工作。

OpenShift Container Platform API

Kiali 使用 OpenShift Container Platform API 来获取和解析服务网格配置。例如,Kiali 查询集群 API 以检索命名空间、服务、部署、Pod 和其他实体的定义。Kiali 还进行查询以解析不同集群实体之间的关系。还查询集群 API 以检索 Istio 配置,例如虚拟服务、目标规则、路由规则、网关、配额等等。

追踪

追踪是可选的,但是当您安装 Red Hat OpenShift 分布式跟踪平台并且 Kiali 已配置时,Kiali 控制台将包含一个选项卡以显示分布式跟踪数据,以及图形本身的跟踪集成。请注意,如果您禁用 Istio 的分布式跟踪功能,则跟踪数据将不可用。还要注意,用户必须访问需要查看跟踪数据的命名空间。

Grafana

Grafana 是可选的。如果可用,Kiali 的指标页面将显示链接,以便用户直接在 Grafana 中查看相同的指标。请注意,Grafana 不受 OpenShift Container Platform 或 OpenShift Service Mesh 支持。

Kiali 功能

Kiali 控制台与 OpenShift Service Mesh 集成,并提供以下功能:

健康状况

快速识别应用程序、服务或工作负载的问题。

拓扑结构

通过 Kiali 图形可视化应用程序、服务或工作负载如何通信。

指标

预定义的指标仪表盘允许您绘制 Go、Node.js、Quarkus、Spring Boot、Thorntail 和 Vert.x 的服务网格和应用程序性能图表。您还可以创建自己的自定义仪表盘。

追踪

与 Red Hat OpenShift 分布式跟踪平台 (Tempo) 集成,使您可以跟踪请求通过构成应用程序的各种微服务的路径。

验证

对最常见的 Istio 对象(目标规则、服务条目、虚拟服务等)执行高级验证。

配置

使用向导或直接在 Kiali 控制台的 YAML 编辑器中创建、更新和删除 Istio 路由配置的可选功能。

OpenShift Service Mesh 控制台 (OSSMC) 插件

OpenShift Service Mesh 控制台 (OSSMC) 插件是 Red Hat OpenShift Service Mesh 的 OpenShift Container Platform 插件。它将 Red Hat 提供的 Kiali Operator 的大部分界面集成到 OpenShift 控制台中,注入服务网格主菜单选项以及专用屏幕,以及在整个控制台中集成服务网格选项卡。

OSSMC 插件使用 Red Hat 提供的 Kiali Operator 安装,并需要 Kiali Server 组件。OSSMC 插件有其自己的自定义资源 (CR) 配置。

Red Hat OpenShift Service Mesh 和可观察性

Red Hat OpenShift Service Mesh 与 Red Hat 可观测性组件集成,包括

OpenShift 监控

监控堆栈组件在每个 OpenShift Container Platform 安装中默认部署,并由集群监控操作符 (CMO) 管理。这些组件包括 Prometheus、Alertmanager、Thanos Querier 等。CMO 还部署 Telemeter Client,它将平台 Prometheus 实例的一部分数据发送给 Red Hat,以方便集群的远程健康监控。

将您的应用程序添加到网格后,您可以使用指标和针对 CPU 和内存使用率、网络连接和其他资源使用率的自定义警报来监控在 OpenShift Container Platform 上运行的应用程序的集群内健康状况和性能。

Red Hat OpenShift 分布式追踪平台

Red Hat OpenShift Service Mesh 使用 Red Hat OpenShift 分布式跟踪平台,允许开发人员查看微服务应用程序中的调用流程。

Red Hat OpenShift 分布式跟踪平台与 Red Hat OpenShift Service Mesh 的集成由两部分组成:Red Hat OpenShift 分布式跟踪平台 (Tempo) 和 Red Hat OpenShift 分布式跟踪数据收集。

Red Hat OpenShift 分布式跟踪平台 (Tempo)

提供分布式跟踪功能,用于监控和排查复杂分布式系统中的事务。它基于开源 Grafana Tempo 项目。

有关分布式跟踪平台 (Tempo) 的更多信息、其功能、安装和配置,请参阅:Red Hat OpenShift 分布式跟踪平台 (Tempo)

Red Hat OpenShift 分布式跟踪数据收集

基于开源 OpenTelemetry 项目,该项目旨在为云原生软件提供统一、标准化和与供应商无关的遥测数据收集。Red Hat OpenShift 分布式跟踪数据收集产品支持部署和管理 OpenTelemetry Collector,并简化工作负载检测。请参阅 OpenTelemetry 项目

OpenTelemetry Collector 可以接收、处理和转发多种格式的遥测数据,使其成为遥测处理和遥测系统之间互操作性的理想组件。Collector 提供了一个统一的解决方案,用于收集和处理指标、跟踪和日志。请参阅 OpenTelemetry Collector

有关分布式跟踪数据收集的更多信息、其功能、安装和配置,请参阅:Red Hat OpenShift 分布式跟踪数据收集

Red Hat OpenShift Service Mesh 和 cert-manager

cert-manager 工具是 Kubernetes 上 X.509 证书管理的解决方案。它提供了一个统一的 API,用于将应用程序与私钥或公钥基础设施 (PKI) 集成,例如 Vault、Google Cloud Certificate Authority Service、Let’s Encrypt 和其他提供商。

cert-manager 工具通过在证书过期前配置的时间尝试续订证书来确保证书有效且最新。

对于 Istio 用户,cert-manager 还提供与 istio-csr 的集成,istio-csr 是一个处理来自 Istio 代理的证书签名请求 (CSR) 的证书颁发机构 (CA) 服务器。然后,服务器将签名委托给 cert-manager,后者将 CSR 转发到已配置的 CA 服务器。

Red Hat OpenShift Service Mesh 和 Argo Rollouts

Red Hat OpenShift Service Mesh 与 Argo Rollouts 一起使用时,通过使用 Istio 提供更高级的路由功能,并且不需要配置 sidecar 容器。

您可以使用 OpenShift Service Mesh 在两个应用程序版本之间拆分流量。

  • 金丝雀版本:应用程序的新版本,您可以逐步路由流量。

  • 稳定版本:应用程序的当前版本。金丝雀版本稳定且所有用户流量都定向到它之后,它将成为新的稳定版本。之前的稳定版本将被丢弃。

Argo Rollouts 中的 Istio 支持使用 GatewayVirtualService 资源来处理流量路由。

  • Gateway:您可以使用 Gateway 来管理网格的入站和出站流量。网关是 OpenShift Service Mesh 的入口点,并处理发送到应用程序的流量请求。

  • VirtualServiceVirtualService 定义流量路由规则以及流向底层服务(例如稳定服务和金丝雀服务)的流量百分比。