1.8. 创建 ServiceMeshControlPlane


1.8.1. 关于 ServiceMeshControlPlane

control plane 包括 Istiod、Ingress 和 Egress 网关,以及其他组件,如 Kiali 和 Jaeger。control plane 必须部署到与 Service Mesh Operator 和 data plane 应用程序和服务不同的命名空间中。您可以从 Red Hat OpenShift Service on AWS Web 控制台或使用 oc 客户端工具从命令行部署 ServiceMeshControlPlane(SMCP)的基本安装。

注意

这个基本安装是基于默认的 Red Hat OpenShift Service on AWS 设置配置的,它不适用于生产环境。使用此默认安装来验证安装,然后为您的环境配置 ServiceMeshControlPlane 设置。

注意

Red Hat OpenShift Service on AWS (ROSA)对可以创建资源的位置有额外的限制,因此默认部署无法正常工作。在 ROSA 环境中部署 SMCP 前,请参阅在 AWS 上安装 Service Mesh 以了解额外的要求。

注意

Service Mesh 文档使用 istio-system 作为示例项目,但您可以将服务网格部署到任何项目中。

如果您要部署 control plane 以便在 Red Hat OpenShift Service on AWS 上使用,请参阅 红帽知识库文章 OpenShift 服务网格 operator Istio 基本不会启动,因为身份验证错误,这讨论了添加新项目并启动 pod。

1.8.1.1. 从 web 控制台部署 Service Mesh control plane

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

前提条件

  • 必须安装 Red Hat OpenShift Service Mesh Operator。
  • 以具有 dedicated-admin 角色的用户身份登录到 Red Hat OpenShift Service on AWS web 控制台。

流程

  1. 以具有 cluster-admin 角色的用户身份登录到 Red Hat OpenShift Service on AWS 控制台。如果使用 Red Hat OpenShift Dedicated,则必须有一个具有 dedicated-admin 角色的帐户。
  2. 创建一个名为 istio-system 的项目。

    1. 浏览至 Home Project
    2. 点击 Create Project
    3. Name 字段中输入 istio-systemServiceMeshControlPlane 资源必须安装在独立于您的微服务和 Operator 的项目中。

      这些步骤使用 istio-system 作为示例,但您可以在任何项目中部署 Service Mesh control plane,只要它与包含您的服务的项目分开。

    4. Create
  3. 导航到 Operators Installed Operators
  4. 点 Red Hat OpenShift Service Mesh Operator,然后点 Istio Service Mesh Control Plane
  5. Istio Service Mesh Control Plane 选项卡中,点 Create ServiceMeshControlPlane
  6. Create ServiceMeshControlPlane 页面中:

    1. 接受默认的 Service Mesh control plane 版本,以利用该产品的最新版本中提供的功能。control plane 的版本决定了与 Operator 版本无关的可用功能。
    2. Create

    Operator 根据您的配置参数创建 pod、服务和 Service Mesh control plane 组件。您可以稍后配置 ServiceMeshControlPlane 设置。

验证

  • 要验证 control plane 是否已正确安装,请点击 Istio Service Mesh Control Plane 标签页。

    1. 点新的 control plane 的名称。
    2. Resources 标签页来查看由 Operator 创建并配置的 Red Hat OpenShift Service Mesh control plane 资源。

1.8.1.2. 使用 CLI 部署 Service Mesh control plane

您可以使用命令行部署基本的 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
  2. 使用以下示例,创建一个名为 istio-installation.yamlServiceMeshControlPlane 文件。Service Mesh control plane 的版本决定了与 Operator 版本无关的可用功能。

    版本 2.5 istio-installation.yaml 示例

    apiVersion: maistra.io/v2
    kind: ServiceMeshControlPlane
    metadata:
      name: basic
      namespace: istio-system
    spec:
      version: v2.5
      tracing:
        type: Jaeger
        sampling: 10000
      addons:
        jaeger:
          name: jaeger
          install:
            storage:
              type: Memory
        kiali:
          enabled: true
          name: kiali
        grafana:
          enabled: true

  3. 运行以下命令来部署 Service Mesh control plane,其中 <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
    jaeger-67c75bd6dc-jv6k6                2/2     Running   0          65m
    kiali-6476c7656c-x5msp                 1/1     Running   0          43m
    prometheus-58954b8d6b-m5std            2/2     Running   0          66m

1.8.1.3. 使用 CLI 验证 SMCP 安装

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

  1. 前提条件

    • 必须安装 Red Hat OpenShift Service Mesh Operator。
    • 访问 OpenShift CLI(oc)。
    • 以具有 dedicated-admin 角色的用户身份登录到 Red Hat OpenShift Service on AWS。

流程

  1. 运行以下命令,以验证 Service Mesh control plane 安装,其中 istio-system 是安装 Service Mesh control plane 的命名空间。

    $ oc get smcp -n istio-system

    STATUS 列是 ComponentsReady 时,安装成功完成。

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

1.8.2. 关于 control plane 和集群范围的部署

集群范围的部署包含一个 Service Mesh Control Plane,用于监控整个集群的资源。监控整个集群的资源与 control plane 在所有命名空间中使用单个查询来监控 Istio 和 Kubernetes 资源的 Istio 功能非常相似。因此,集群范围的部署会减少发送到 API 服务器的请求数。

您可以使用 Red Hat OpenShift Service on AWS Web 控制台或 CLI 为集群范围的部署配置 Service Mesh Control Plane。

1.8.2.1. 使用 web 控制台为集群范围的部署配置 control plane

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

前提条件

  • 安装了 Red Hat OpenShift Service Mesh Operator。
  • 以具有 dedicated-admin 角色的用户身份登录到 Red Hat OpenShift Service on AWS。

流程

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

    1. 浏览至 Home Project
    2. 点击 Create Project
    3. Name 字段中输入 istio-systemServiceMeshControlPlane 资源必须安装在独立于您的微服务和 Operator 的项目中。

      这些步骤使用 istio-system 作为示例。只要 Service Mesh control plane 与包含服务的项目分开,就可以将 Service Mesh control plane 部署到任何项目中。

    4. Create
  2. 导航到 Operators Installed Operators
  3. 点 Red Hat OpenShift Service Mesh Operator,然后点 Istio Service Mesh Control Plane
  4. Istio Service Mesh Control Plane 选项卡中,点 Create ServiceMeshControlPlane
  5. YAML 视图。Service Mesh control plane 的版本决定了与 Operator 版本无关的可用功能。
  6. 修改 YAML 文件的 spec.mode 字段,以指定 ClusterWide

    版本 2.5 istio-installation.yaml 示例

    apiVersion: maistra.io/v2
    kind: ServiceMeshControlPlane
    metadata:
      name: basic
      namespace: istio-system
    spec:
      version: v2.5
      mode: ClusterWide

  7. Create。Operator 根据您的配置参数创建 pod、服务和 Service Mesh control plane 组件。如果 ServiceMeshMemberRoll 不存在,Operator 也会创建 ServiceMeshMemberRoll。

验证

  • 验证 control plane 是否已正确安装:

    1. Istio Service Mesh Control Plane 标签页。
    2. 点新 ServiceMeshControlPlane 对象的名称。
    3. Resources 选项卡,查看 Operator 创建和配置的 Red Hat OpenShift Service Mesh control plane 资源。

1.8.2.2. 使用 CLI 为集群范围的部署配置 control plane

您可以使用 CLI 为集群范围的部署配置 ServiceMeshControlPlane 资源。在本例中,istio-system 是 Service Mesh control plane 命名空间的名称。

前提条件

  • 安装了 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 文件。

    版本 2.5 istio-installation.yaml 示例

    apiVersion: maistra.io/v2
    kind: ServiceMeshControlPlane
    metadata:
      name: basic
      namespace: istio-system
    spec:
      version: v2.5
      mode: ClusterWide

  3. 运行以下命令来部署 Service Mesh control plane:

    $ 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

1.8.2.3. 为集群范围的网格自定义 member roll

在集群范围的模式中,当您创建 ServiceMeshControlPlane 资源时,也会创建 ServiceMeshMemberRoll 资源。您可以在创建 ServiceMeshMemberRoll 资源后修改它。修改资源后,Service Mesh Operator 不再更改它。如果您使用 Red Hat OpenShift Service on AWS Web 控制台修改 ServiceMeshMemberRoll 资源,请接受提示来覆盖修改。

另外,您可以在部署 ServiceMeshControlPlane 资源前创建一个 ServiceMeshMemberRoll 资源。在创建 ServiceMeshControlPlane 资源时,Service Mesh Operator 不会修改 ServiceMeshMemberRoll

注意

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

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

注意

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

1.8.3. 使用 Kiali 验证 SMCP 安装

您可以使用 Kiali 控制台验证 Service Mesh 安装。Kiali 控制台提供了一种方式来验证您的 Service Mesh 组件是否已正确部署和配置。

  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 控制台中进入 Networking Routes
  2. Routes 页面中,从 Namespace 菜单中选择 Service Mesh control plane 项目,如 istio-system

    Location 列显示每个路由的链接地址。

  3. 如果需要,使用过滤器查找 Kiali 控制台的路由。单击路由 位置 以启动控制台。
  4. 单击 Log In With OpenShift

    第一次登录到 Kiali 控制台时,您会看到 Overview 页面,它会显示服务网格中您有权查看的所有命名空间。当 Overview 页中显示多个命名空间,Kiali 会首先显示具有健康或验证问题的命名空间。

    图 1.1. Kiali Overview 页

    Kiali Overview 页显示 istio-system

    每个命名空间的 tile 会显示标签数量、Istio 配置健康、和 应用程序 健康状态的数量,以及命名空间的流量。如果您验证了控制台安装,且命名空间还没有添加到网格中,则可能无法显示 istio-system 以外的任何数据。

  5. Kiali 有四个仪表板,专门用于安装了 Service Mesh control plane 的命名空间。要查看这些仪表板,请点击 control plane 命名空间的标题 kebabOptions 菜单,如 istio-system,然后选择以下选项之一:

    • Istio Mesh Dashboard
    • Istio Control Plane Dashboard
    • Istio Performance Dashboard
    • Istio Wasm Exetension Dashboard

      图 1.2. Grafana Istio Control Plane Dashboard

      Istio Control Plane Dashboard 显示 info 示例项目的数据

      Kiali 还会安装两个额外的 Grafana 仪表板,它们可从 Grafana Home 页面获得:

    • Istio Workload Dashboard
    • Istio Service Dashboard
  6. 要查看 Service Mesh control plane 节点,点 Graph 页面,从菜单中选择安装 ServiceMeshControlPlane命名空间,如 istio-system

    1. 如有必要,请单击 Display idle nodes
    2. 要了解更多有关 Graph 页面的信息,请点击 Graph tour 链接。
    3. 要查看网格拓扑,请从 Namespace 菜单中从 Service Mesh Member Roll 中选择一个或多个附加命名空间。
  7. 要查看 istio-system 命名空间中的应用程序列表,请点击 Applications 页面。Kiali 显示应用程序的健康状况。

    1. 将鼠标指针悬停在信息图标上,以查看 Details 列中记下的任何其他信息。
  8. 要在 istio-system 命名空间中查看工作负载列表,请点击 Workloads 页面。Kiali 显示工作负载的运行状况。

    1. 将鼠标指针悬停在信息图标上,以查看 Details 列中记下的任何其他信息。
  9. 要查看 istio-system 命名空间中的服务列表,点 Services 页面。Kiali 显示服务和配置的健康状态。

    1. 将鼠标指针悬停在信息图标上,以查看 Details 列中记下的任何其他信息。
  10. 要查看 istio-system 命名空间中的 Istio Configuration 对象列表,点 Istio Config 页面。Kiali 显示配置的健康状况。

    1. 如果出现配置错误,点行,Kiali 会打开配置文件并突出显示错误。

1.8.4. 在 Red Hat OpenShift Service on AWS (ROSA)上安装 Service Mesh

从 2.2 版本开始,Red Hat OpenShift Service Mesh 支持在 AWS 上的 Red Hat OpenShift Service(ROSA)上安装。本节记录了在这个平台上安装 Service Mesh 时的额外要求。

1.8.4.1. 安装位置

在安装 Red Hat OpenShift Service Mesh 并创建 ServiceMeshControlPlane 时,您必须创建一个新命名空间,如 istio-system

1.8.4.2. 所需的 Service Mesh control plane 配置

ServiceMeshControlPlane 文件中的默认配置无法在 ROSA 集群中工作。在 AWS 上的 Red Hat OpenShift Service 上安装时,您必须修改默认的 SMCP 并设置 spec.security.identity.type=ThirdParty

ROSA 的 ServiceMeshControlPlane 资源示例

apiVersion: maistra.io/v2
kind: ServiceMeshControlPlane
metadata:
  name: basic
  namespace: istio-system
spec:
  version: v2.5
  security:
    identity:
      type: ThirdParty  #required setting for ROSA
  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.8.4.3. 对 Kiali 配置的限制

Red Hat OpenShift Service on AWS 对创建资源并不允许在 Red Hat managed 命名空间中创建 Kiali 资源方面存在额外的限制。

这意味着,在 ROSA 集群中不允许使用 spec.deployment.access_namespaces 的以下通用设置:

  • ['**'] (所有命名空间)
  • default
  • codeready-*
  • openshift-*
  • redhat-*

验证错误消息提供了所有受限命名空间的完整列表。

ROSA 的 Kiali 资源示例

apiVersion: kiali.io/v1alpha1
kind: Kiali
metadata:
  name: kiali
  namespace: istio-system
spec:
  auth:
    strategy: openshift
  deployment:
    accessible_namespaces:   #restricted setting for ROSA
      - istio-system
    image_pull_policy: ''
    ingress_enabled: true
    namespace: istio-system

1.8.5. 其他资源

Red Hat OpenShift Service Mesh 支持集群中的多个独立 control plane。您可以使用 ServiceMeshControlPlane 配置集创建可重复使用的配置。如需更多信息,请参阅创建 control plane 配置集

1.8.6. 后续步骤

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.