×

关于ServiceMeshControlPlane

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

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

如果您要部署用于Red Hat OpenShift Service on AWS的控制平面,请参阅Red Hat知识库文章OpenShift service mesh operator Istio basic not starting due to authentication errors,其中讨论了添加新项目和启动Pod。

从Web控制台部署Service Mesh控制平面

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

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

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

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

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

    1. 导航到**主页** → **项目**。

    2. 单击**创建项目**。

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

    4. 单击**创建**。

  3. 导航到**Operators** → **已安装的Operators**。

  4. 单击Red Hat OpenShift Service Mesh Operator,然后单击**Istio Service Mesh Control Plane**。

  5. 在**Istio Service Mesh Control Plane**选项卡上,单击**创建ServiceMeshControlPlane**。

    1. 接受默认的Service Mesh控制平面版本以利用产品最新版本中提供的功能。控制平面的版本决定了可用功能,而与Operator的版本无关。

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

    3. 单击**创建**。

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

验证
  • 要验证控制平面是否已正确安装,请单击**Istio Service Mesh Control Plane**选项卡。

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

    2. 单击**资源**选项卡以查看Operator创建和配置的Red Hat OpenShift Service Mesh控制平面资源。

使用CLI部署Service Mesh控制平面

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

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

  • 访问OpenShift CLI (oc)。

  • 您已以具有dedicated-admin角色的用户身份登录到Red Hat OpenShift Service on AWS。

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

    $ oc new-project istio-system

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

  2. 使用以下示例创建一个名为istio-installation.yamlServiceMeshControlPlane文件。Service Mesh控制平面的版本决定了可用功能,而与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 Service on AWS所需的设置。
  3. 运行以下命令以部署Service Mesh控制平面,其中<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角色的用户身份登录到Red Hat OpenShift Service on AWS。

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

    $ oc get smcp -n istio-system

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

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

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

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

您可以使用Red Hat OpenShift Service on AWS Web控制台或CLI配置Service Mesh控制平面以进行集群范围部署。

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

您可以使用Red Hat OpenShift Service on AWS Web控制台配置ServiceMeshControlPlane资源以进行集群范围部署。在此示例中,istio-system是Service Mesh控制平面项目的名称。

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

  • 您已以具有dedicated-admin角色的用户身份登录到Red Hat OpenShift Service on AWS。

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

    1. 导航到**主页** → **项目**。

    2. 单击**创建项目**。

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

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

    4. 单击**创建**。

  2. 导航到**Operators** → **已安装的Operators**。

  3. 单击Red Hat OpenShift Service Mesh Operator,然后单击**Istio Service Mesh Control Plane**。

  4. 在**Istio Service Mesh Control Plane**选项卡上,单击**创建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 Service on AWS所需的设置。
  7. 点击**创建**。Operator 将根据您的配置参数创建 Pod、服务和服务网格控制平面组件。如果默认配置中不存在ServiceMeshMemberRoll,Operator 还会创建它。

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

    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角色的用户身份登录到Red Hat OpenShift Service on AWS。

步骤
  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 Service on AWS所需的设置。
  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资源。修改资源后,服务网格 Operator 将不再更改它。如果您使用 Red Hat OpenShift Service on AWS Web 控制台修改ServiceMeshMemberRoll资源,请接受覆盖修改的提示。

或者,您可以在部署ServiceMeshControlPlane资源之前创建ServiceMeshMemberRoll资源。当您创建ServiceMeshControlPlane资源时,服务网格 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角色的用户身份登录到Red Hat OpenShift Service on AWS。

步骤
  1. 在 Red Hat OpenShift Service on AWS 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 配置文件创建可重用的配置。更多信息,请参见 创建控制平面配置文件

后续步骤