第 2 章 了解 OpenShift Service Mesh


Red Hat OpenShift Service Mesh 由两个部分组成:

  • Red Hat OpenShift Service Mesh 资源
  • 红帽提供的 Kiali

红帽提供的 Kali 由三个部分组成:

  • 红帽提供的 Kiali Operator
  • Kiali Server
  • OpenShift Service Mesh Console (OSSMC)插件

OpenShift Service Mesh 与以下内容集成:

  • Observability 组件,如:

    • OpenShift Monitoring
    • Red Hat OpenShift distributed tracing Platform
    • Red Hat OpenShift distributed tracing 数据收集 Operator
  • cert-manager
  • Argo rollouts

2.1. Red Hat OpenShift Service Mesh 资源

Red Hat OpenShift Service Mesh Operator 管理 Istio control plane 的生命周期。OpenShift Service Mesh Operator 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) 字段获得。

2.1.1. Istio 资源

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

要选择要在其中运行 control plane pod 的命名空间,您可以使用 spec.namespace 字段。

注意

spec.namespace 字段为 immutable:要将 control plane 移到另一个命名空间,您必须删除 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

为了支持 control plane 的 Canary 更新,OpenShift Service Mesh 包括对多个 Istio 版本的支持。您可以通过将 spec.version 设置为您要安装的版本来选择一个版本,前缀为 v。您可以通过更改此字段来更新到新版本。

OpenShift Service Mesh 支持 control plane 的两个不同的更新策略:

InPlace
OpenShift Service Mesh Operator 会立即将现有 control plane 资源替换为新版本。
基于修订
通过创建第二个 control plane 来利用 Istio 的 Canary 更新机制,您可以将工作负载迁移到完成更新。

创建 Istio 资源后,OpenShift Service Mesh 根据 updateStrategy 为资源生成一个修订名称,并创建一个对应的 IstioRevision

2.1.2. IstioRevision 资源

IstioRevision 是一个集群范围的资源,OpenShift Service Mesh 提供了最低级别的 API。它通常由用户创建,而是由 Operator 本身创建。其模式与 Istio 资源类似,但并不代表您要存在于集群中的 control plane 状态,而是代表该 control plane 的修订版本。

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

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

同样,用户会创建一个 Istio 资源,它指示 OpenShift Service Mesh Operator 创建匹配的 IstioRevision 资源,然后触发 Istio control plane 的创建。要做到这一点,OpenShift Service Mesh Operator 会将所有相关配置从 Istio 资源复制到 IstioRevision 资源。

2.1.3. IstioCNI 资源

在使用 OpenShift Service Mesh Operator 时,Istio 的 Container Network Interface (CNI)插件的生命周期会单独管理。要安装 Istio 的 CNI 插件,您可以创建一个 IstioCNI 资源。

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

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 logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.