×

关于 ServiceMeshControlPlane

控制平面包括 Istiod、入口和出口网关以及其他组件,例如 Kiali 和 Jaeger。控制平面必须部署在与服务网格操作符和数据平面应用程序和服务不同的命名空间中。您可以使用 OpenShift Dedicated Web 控制台或使用 `oc` 客户端工具的命令行部署 `ServiceMeshControlPlane` (SMCP) 的基本安装。

此基本安装是根据默认的 OpenShift Dedicated 设置配置的,并非设计用于生产环境。使用此默认安装验证您的安装,然后根据您的环境配置 `ServiceMeshControlPlane` 设置。

如果您正在部署用于 Red Hat OpenShift Dedicated 的控制平面,请参阅 Red Hat 知识库文章 OpenShift 服务网格操作符 Istio 基本启动失败,原因是身份验证错误,其中讨论了添加新项目和启动 Pod。

从 Web 控制台部署服务网格控制平面

您可以使用 Web 控制台部署基本的ServiceMeshControlPlane。在此示例中,istio-system 是服务网格控制平面项目的名称。

先决条件
  • 必须安装 Red Hat OpenShift Service Mesh Operator。

  • 您已以具有dedicated-admin角色的用户身份登录到 OpenShift Dedicated Web 控制台。

步骤
  1. 以具有cluster-admin角色的用户身份登录到 OpenShift Dedicated Web 控制台。如果您使用 Red Hat OpenShift Dedicated,则必须拥有具有dedicated-admin角色的帐户。

  2. 创建一个名为istio-system的项目。

    1. 导航到主页项目

    2. 单击创建项目

    3. 名称字段中,输入istio-systemServiceMeshControlPlane资源必须安装在与您的微服务和 Operators 分开的项目中。

      这些步骤使用istio-system作为示例,但您可以将服务网格控制平面部署到任何项目中,只要它与包含您服务的项目分开即可。

    4. 单击创建

  3. 导航到Operators已安装的 Operators

  4. 单击 Red Hat OpenShift Service Mesh Operator,然后单击Istio 服务网格控制平面

  5. Istio 服务网格控制平面选项卡上,单击创建 ServiceMeshControlPlane

    1. 接受默认的服务网格控制平面版本,以利用产品最新版本中提供的功能。控制平面的版本决定了可用的功能,而不管 Operator 的版本如何。

    2. 添加spec.security.identity.type.ThirdParty字段,Red Hat OpenShift Dedicated 需要此字段。

    3. 单击创建

    Operator 会根据您的配置参数创建 Pod、服务和服务网格控制平面组件。您可以在以后配置ServiceMeshControlPlane设置。

验证
  • 要验证控制平面是否已正确安装,请单击Istio 服务网格控制平面选项卡。

    1. 单击新控制平面的名称。

    2. 单击资源选项卡以查看 Operator 创建和配置的 Red Hat OpenShift 服务网格控制平面资源。

使用 CLI 部署服务网格控制平面

您可以从命令行部署基本的ServiceMeshControlPlane

先决条件
  • 必须安装 Red Hat OpenShift Service Mesh Operator。

  • 访问 OpenShift CLI (oc)。

  • 您已以具有dedicated-admin角色的用户身份登录到 OpenShift Dedicated。

步骤
  1. 创建一个名为istio-system的项目。

    $ oc new-project istio-system

    ServiceMeshControlPlane资源必须安装在istio-system项目中,与您的微服务和 Operators 分开。

  2. 使用以下示例创建一个名为istio-installation.yamlServiceMeshControlPlane文件。服务网格控制平面的版本决定了可用的功能,而不管 Operator 的版本如何。

    ServiceMeshControlPlane资源示例
    apiVersion: maistra.io/v2
    kind: ServiceMeshControlPlane
    metadata:
      name: basic
      namespace: istio-system
    spec:
      version: v2.6
      security:
        identity:
          type: ThirdParty (1)
      tracing:
        type: None
        sampling: 10000
      policy:
        type: Istiod
      addons:
        grafana:
          enabled: true
        kiali:
          enabled: true
        prometheus:
          enabled: true
      telemetry:
        type: Istiod
    1 指定 Red Hat OpenShift Dedicated 的必需设置。
  3. 运行以下命令以部署服务网格控制平面,其中<istio_installation.yaml>包含文件的完整路径。

    $ oc create -n istio-system -f <istio_installation.yaml>
  4. 要观察 Pod 部署的进度,请运行以下命令

    $ oc get pods -n istio-system -w

    您应该会看到类似于以下内容的输出

    NAME                                   READY   STATUS    RESTARTS   AGE
    grafana-b4d59bd7-mrgbr                 2/2     Running   0          65m
    istio-egressgateway-678dc97b4c-wrjkp   1/1     Running   0          108s
    istio-ingressgateway-b45c9d54d-4qg6n   1/1     Running   0          108s
    istiod-basic-55d78bbbcd-j5556          1/1     Running   0          108s
    kiali-6476c7656c-x5msp                 1/1     Running   0          43m
    prometheus-58954b8d6b-m5std            2/2     Running   0          66m

使用 CLI 验证您的 SMCP 安装

您可以从命令行验证ServiceMeshControlPlane的创建。

  1. 先决条件

    • 必须安装 Red Hat OpenShift Service Mesh Operator。

    • 访问 OpenShift CLI (oc)。

    • 您已以具有dedicated-admin角色的用户身份登录到 OpenShift Dedicated。

步骤
  1. 运行以下命令以验证服务网格控制平面安装,其中istio-system是您安装服务网格控制平面的命名空间。

    $ oc get smcp -n istio-system

    STATUS列为ComponentsReady时,安装已成功完成。

    NAME    READY   STATUS            PROFILES      VERSION   AGE
    basic   10/10   ComponentsReady   ["default"]   2.6.4     66m

关于控制平面和集群范围部署

集群范围部署包含一个服务网格控制平面,该平面监视整个集群的资源。监视整个集群的资源与 Istio 的功能非常相似,因为控制平面使用单个查询跨所有命名空间监视 Istio 和 Kubernetes 资源。因此,集群范围部署减少了发送到 API 服务器的请求数量。

您可以使用 OpenShift Dedicated Web 控制台或 CLI 配置服务网格控制平面以进行集群范围部署。

使用 Web 控制台配置控制平面以进行集群范围部署

您可以使用 OpenShift Dedicated Web 控制台配置ServiceMeshControlPlane资源以进行集群范围部署。在此示例中,istio-system 是服务网格控制平面项目的名称。

先决条件
  • 已安装 Red Hat OpenShift Service Mesh Operator。

  • 您已以具有dedicated-admin角色的用户身份登录到 OpenShift Dedicated。

步骤
  1. 创建一个名为istio-system的项目。

    1. 导航到主页项目

    2. 单击创建项目

    3. 名称字段中,输入istio-systemServiceMeshControlPlane资源必须安装在与您的微服务和 Operators 分开的项目中。

      这些步骤使用istio-system作为示例。您可以将服务网格控制平面部署到任何项目中,只要它与包含您服务的项目分开即可。

    4. 单击创建

  2. 导航到Operators已安装的 Operators

  3. 单击 Red Hat OpenShift Service Mesh Operator,然后单击Istio 服务网格控制平面

  4. Istio 服务网格控制平面选项卡上,单击创建 ServiceMeshControlPlane

  5. 单击YAML 视图。服务网格控制平面的版本决定了可用的功能,而不管 Operator 的版本如何。

  6. 修改spec.mode字段并添加spec.security.identity.type.ThirdParty字段

    ServiceMeshControlPlane资源示例
    apiVersion: maistra.io/v2
    kind: ServiceMeshControlPlane
    metadata:
      name: basic
      namespace: istio-system
    spec:
      version: v2.6
      mode: ClusterWide (1)
      security:
        identity:
          type: ThirdParty (2)
      tracing:
        type: Jaeger
        sampling: 10000
      policy:
        type: Istiod
      addons:
        grafana:
          enabled: true
        jaeger:
          install:
            storage:
              type: Memory
        kiali:
          enabled: true
        prometheus:
          enabled: true
      telemetry:
        type: Istiod
    1 指定资源用于集群范围部署。
    2 指定 Red Hat OpenShift Dedicated 的必需设置。
  7. 单击创建。Operator 会根据您的配置参数创建 Pod、服务和服务网格控制平面组件。如果作为默认配置的一部分不存在,运算符还会创建ServiceMeshMemberRoll

验证
  • 要验证控制平面是否已正确安装

    1. 单击Istio 服务网格控制平面选项卡。

    2. 单击新的ServiceMeshControlPlane对象的名称。

    3. 单击资源选项卡以查看 Operator 创建和配置的 Red Hat OpenShift 服务网格控制平面资源。

使用 CLI 配置控制平面以进行集群范围部署

您可以使用 CLI 配置ServiceMeshControlPlane资源以进行集群范围部署。在此示例中,istio-system 是服务网格控制平面命名空间的名称。

先决条件
  • 已安装 Red Hat OpenShift Service Mesh Operator。

  • 您可以访问 OpenShift CLI (oc)。

  • 您已以具有dedicated-admin角色的用户身份登录到 OpenShift Dedicated。

步骤
  1. 创建一个名为istio-system的项目。

    $ oc new-project istio-system
  2. 使用以下示例创建一个名为istio-installation.yamlServiceMeshControlPlane文件

    ServiceMeshControlPlane资源示例
    apiVersion: maistra.io/v2
    kind: ServiceMeshControlPlane
    metadata:
      name: basic
      namespace: istio-system
    spec:
      version: v2.6
      mode: ClusterWide (1)
      security:
        identity:
          type: ThirdParty (2)
    1 指定资源用于集群范围部署。
    2 指定 Red Hat OpenShift Dedicated 的必需设置。
  3. 运行以下命令以部署服务网格控制平面

    $ oc create -n istio-system -f <istio_installation.yaml>

    其中

    <istio_installation.yaml>

    指定文件的完整路径。

验证
  1. 要监视 Pod 部署的进度,请运行以下命令

    $ oc get pods -n istio-system -w

    您应该会看到类似于以下示例的输出

    示例输出
    NAME                                   READY   STATUS    RESTARTS   AGE
    grafana-b4d59bd7-mrgbr                 2/2     Running   0          65m
    istio-egressgateway-678dc97b4c-wrjkp   1/1     Running   0          108s
    istio-ingressgateway-b45c9d54d-4qg6n   1/1     Running   0          108s
    istiod-basic-55d78bbbcd-j5556          1/1     Running   0          108s
    jaeger-67c75bd6dc-jv6k6                2/2     Running   0          65m
    kiali-6476c7656c-x5msp                 1/1     Running   0          43m
    prometheus-58954b8d6b-m5std            2/2     Running   0          66m

自定义集群范围网格的成员角色

在集群范围模式下,当您创建ServiceMeshControlPlane资源时,也会创建ServiceMeshMemberRoll资源。创建后,您可以修改ServiceMeshMemberRoll资源。修改资源后,Service Mesh 运算符将不再更改它。如果您使用 OpenShift Dedicated Web 控制台修改ServiceMeshMemberRoll资源,请接受覆盖修改的提示。

或者,您可以在部署ServiceMeshControlPlane资源之前创建ServiceMeshMemberRoll资源。当您创建ServiceMeshControlPlane资源时,Service Mesh Operator 将不会修改ServiceMeshMemberRoll

ServiceMeshMemberRoll资源名称必须命名为default,并且必须在与ServiceMeshControlPlane资源相同的项目命名空间中创建。

向网格添加命名空间的方法有两种。您可以通过在spec.members列表中指定命名空间名称来添加命名空间,或者配置一组命名空间标签选择器,根据标签来包含或排除命名空间。

无论如何在ServiceMeshMemberRoll资源中指定成员,您也可以通过在每个命名空间中创建ServiceMeshMember资源来向网格添加成员。

使用 Kiali 验证您的 SMCP 安装

您可以使用 Kiali 控制台验证您的服务网格安装。Kiali 控制台提供了多种方法来验证您的服务网格组件是否已正确部署和配置。

  1. 先决条件

    • 必须安装 Red Hat OpenShift Service Mesh Operator。

    • 访问 OpenShift CLI (oc)。

    • 您已以具有dedicated-admin角色的用户身份登录到 OpenShift Dedicated。

步骤
  1. 在 OpenShift Dedicated Web 控制台中,导航到**网络** → **路由**。

  2. 在**路由**页面上,从**命名空间**菜单中选择服务网格控制平面项目,例如istio-system

    **位置**列显示每个路由的链接地址。

  3. 如有必要,使用过滤器查找 Kiali 控制台的路由。单击路由的**位置**启动控制台。

  4. 单击**使用 OpenShift 登录**。

    首次登录 Kiali 控制台时,您将看到**概述**页面,该页面显示服务网格中您有权查看的所有命名空间。当**概述**页面上显示多个命名空间时,Kiali 会优先显示存在健康或验证问题的命名空间。

    Kiali Overview page showing istio-system
    图 1. Kiali 概述页面

    每个命名空间的图块显示标签数量、**Istio 配置**健康状况、**应用程序**数量和健康状况以及命名空间的**流量**。如果您正在验证控制台安装并且尚未将命名空间添加到网格,则可能除了istio-system之外没有任何数据显示。

  5. Kiali 有四个专门用于安装服务网格控制平面的命名空间的仪表板。要查看这些仪表板,请单击控制平面命名空间(例如istio-system)图块上的选项菜单kebab,然后选择以下选项之一

    • Istio 网格仪表板

    • Istio 控制平面仪表板

    • Istio 性能仪表板

    • Istio Wasm 扩展仪表板

      Istio Control Plane Dashboard showing data for bookinfo sample project
      图 2. Grafana Istio 控制平面仪表板

      Kiali 还安装了两个附加的 Grafana 仪表板,可从 Grafana 的**主页**访问

    • Istio 工作负载仪表板

    • Istio 服务仪表板

  6. 要查看服务网格控制平面节点,请单击**图形**页面,从菜单中选择您安装ServiceMeshControlPlane的**命名空间**,例如istio-system

    1. 如有必要,请单击**显示空闲节点**。

    2. 要了解有关**图形**页面的更多信息,请单击**图形教程**链接。

    3. 要查看网格拓扑,请从**命名空间**菜单中从服务网格成员列表中选择一个或多个其他命名空间。

  7. 要查看istio-system命名空间中的应用程序列表,请单击**应用程序**页面。Kiali 将显示应用程序的健康状况。

    1. 将鼠标悬停在信息图标上,即可查看**详细信息**列中注明的任何附加信息。

  8. 要查看istio-system命名空间中的工作负载列表,请单击**工作负载**页面。Kiali 将显示工作负载的健康状况。

    1. 将鼠标悬停在信息图标上,即可查看**详细信息**列中注明的任何附加信息。

  9. 要查看istio-system命名空间中的服务列表,请单击**服务**页面。Kiali 将显示服务和配置的健康状况。

    1. 将鼠标悬停在信息图标上,即可查看**详细信息**列中注明的任何附加信息。

  10. 要查看istio-system命名空间中的 Istio 配置对象列表,请单击**Istio 配置**页面。Kiali 将显示配置的健康状况。

    1. 如果存在配置错误,请单击该行,Kiali 将打开突出显示错误的配置文件。

其他资源

Red Hat OpenShift Service Mesh 支持集群中的多个独立控制平面。您可以使用ServiceMeshControlPlane配置文件创建可重用的配置。有关更多信息,请参阅创建控制平面配置文件

后续步骤