3.5. 安装 Service Mesh
查看不再支持的 Red Hat OpenShift Service Mesh 发行版本的文档。
Service Mesh 版本 1.0 和 1.1 control plane 不再被支持。有关升级服务网格 control plane 的详情,请参阅 升级 Service Mesh。
有关特定 Red Hat OpenShift Service Mesh 发行版本的支持状态的信息,请参阅产品生命周期页面。
安装 Service Mesh 包括安装 OpenShift Elasticsearch 、Jaeger 、Kiali 和 Service Mesh Operators,创建和管理一个ServiceMeshControlPlane
资源 以部署 control plane,创建一个ServiceMeshMemberRoll
资源以指定与 Service Mesh 关联的命名空间。
在默认情况下,Mixer 的策略强制功能被禁用。您必须启用它才能运行策略任务。有关启用 Mixer 策略强制执行的步骤,请参阅更新 Mixer 策略强制执行。
多租户 control plane 安装是默认配置。
Service Mesh 文档使用 istio-system
作为示例项目,但您可以将服务网格部署到任何项目中。
3.5.1. 前提条件
- 按照准备安装 Red Hat OpenShift Service Mesh 的过程进行操作。
-
具有
cluster-admin
角色的帐户。
Service Mesh 安装过程使用 OperatorHub 在 openshift-operators
项目内安装 ServiceMeshControlPlane
自定义资源。Red Hat OpenShift Service Mesh 定义并监控与部署、更新和删除 control plane 相关的 ServiceMeshControlPlane
。
从 Red Hat OpenShift Service Mesh 1.1.18.2 开始,您必须安装 OpenShift Elasticsearch Operator、Jaeger Operator 和 Kiali Operator,然后才能安装 control plane。
3.5.2. 安装 OpenShift Elasticsearch Operator
默认的 Red Hat OpenShift distributed tracing 平台(Jaeger)部署使用内存存储,因为它旨在为评估 Red Hat OpenShift distributed tracing 平台、提供演示或在测试环境中使用 Red Hat OpenShift distributed tracing 平台(Jaeger)的用户快速安装。如果您计划在生产环境中使用 Red Hat OpenShift distributed tracing 平台 (Jaeger),则必须安装并配置持久性存储选项,即 Elasticsearch。
先决条件
- 访问 OpenShift Container Platform web 控制台。
-
您可以使用具有
cluster-admin
角色的用户访问集群。如果使用 Red Hat OpenShift Dedicated,则必须有一个具有dedicated-admin
角色的帐户。
不要安装 Operators 的 Community 版本。不支持社区 Operator。
如果您已经安装了 OpenShift Elasticsearch Operator 作为 OpenShift Logging 的一部分,则不需要再次安装 OpenShift Elasticsearch Operator。Red Hat OpenShift distributed tracing Platform (Jaeger) Operator 使用已安装的 OpenShift Elasticsearch Operator 创建 Elasticsearch 实例。
流程
-
以具有
cluster-admin
角色的用户身份登录到 OpenShift Container Platform web 控制台。如果使用 Red Hat OpenShift Dedicated,则必须有一个具有dedicated-admin
角色的帐户。 -
导航至 Operators
OperatorHub。 - 在过滤器框中键入 Elasticsearch 以找到 OpenShift Elasticsearch Operator。
- 点由红帽提供的 OpenShift Elasticsearch Operator 来显示有关 Operator 的信息。
- 点击 Install。
- 在 Install Operator 页中,选择 stable Update Channel。这可在发布新版本时自动更新您的 Operator。
接受默认的 All namespaces on the cluster (default)。这会在默认的
openshift-operators-redhat
项目中安装 Operator,并使 Operator 可供集群中的所有项目使用。注意Elasticsearch 安装需要 OpenShift Elasticsearch Operator 的 openshift-operators-redhat 命名空间。其他 Red Hat OpenShift distributed tracing Platform Operator 安装在
openshift-operators
命名空间中。接受默认的 Automatic 批准策略。默认情况下,当这个 Operator 的新版本可用时,Operator Lifecycle Manager(OLM)将自动升级 Operator 的运行实例,而无需人为干预。如果选择手动 更新,则当有新版 Operator 可用时,OLM 会创建更新请求。作为集群管理员,您必须手动批准该更新请求,才可将 Operator 更新至新版本。
注意Manual 批准策略需要具有适当凭证的用户批准 Operator 的安装和订阅过程。
- 点击 Install。
-
在 Installed Operators 页面中,选择
openshift-operators-redhat
项目。等待 OpenShift Elasticsearch Operator 的 InstallSucceeded 状态再继续。
3.5.3. 安装 Red Hat OpenShift distributed tracing Platform Operator
您可以通过 OperatorHub 安装 Red Hat OpenShift distributed tracing Platform Operator。
默认情况下,Operator 安装在 openshift-operators
项目中。
先决条件
- 访问 OpenShift Container Platform web 控制台。
-
您可以使用具有
cluster-admin
角色的用户访问集群。如果使用 Red Hat OpenShift Dedicated,则必须有一个具有dedicated-admin
角色的帐户。 - 如果需要持久性存储,则必须在安装 Red Hat OpenShift distributed tracing Platform Operator 前安装 OpenShift Elasticsearch Operator。
流程
-
以具有
cluster-admin
角色的用户身份登录到 OpenShift Container Platform web 控制台。如果使用 Red Hat OpenShift Dedicated,则必须有一个具有dedicated-admin
角色的帐户。 -
进入 Operators
OperatorHub。 - 通过在搜索字段中输入分布式追踪平台来搜索 Red Hat OpenShift distributed tracing Platform Operator。
- 选择 Red Hat OpenShift distributed tracing platform Operator,它由红帽提供,显示 Operator 的信息。
- 点 Install。
- 对于 Install Operator 页面中的 Update 频道,在发布新版本时,选择 stable 来自动更新 Operator。
-
接受默认的 All namespaces on the cluster (default)。这会在默认的
openshift-operators
项目中安装 Operator ,并使其可以被集群中的所有项目使用。 接受默认的 Automatic 批准策略。
注意如果您接受此默认值,Operator Lifecycle Manager (OLM) 会在有新版 Operator 可用时自动升级此 Operator 的运行实例。
如果选择手动更新,OLM 会在有新版 Operator 可用时创建一个更新请求。要将 Operator 更新至新版本,必须以集群管理员身份手动批准更新请求。Manual 批准策略要求集群管理员手动批准 Operator 安装和订阅。
- 点 Install。
-
导航到 Operators
Installed Operators。 -
在 Installed Operators 页面中,选择
openshift-operators
项目。等待 Red Hat OpenShift distributed tracing Platform Operator 的 Succeeded 状态继续。
3.5.4. 安装 Kiali Operator
您必须为 Red Hat OpenShift Service Mesh Operator 安装 Kiali Operator 来安装 Service Mesh control plane。
不要安装 Operators 的 Community 版本。不支持社区 Operator。
先决条件
- 访问 OpenShift Container Platform Web 控制台。
流程
- 登陆到 OpenShift Container Platform Web 控制台。
-
进入 Operators
OperatorHub。 - 在过滤器框中键入 Kiali 来查找 Kiali Operator。
- 点由红帽提供的 Kiali Operator 来显示有关 Operator 的信息。
- 点 Install。
- 在 Operator 安装页面中,选择 stable Update Channel。
-
选择 All namespaces on the cluster(默认)。这会在默认的
openshift-operators
项目中安装 Operator ,并使其可以被集群中的所有项目使用。 选择 Automatic 批准策略。
注意手动批准策略需要拥有适当凭证的用户批准 Operator 的安装和订阅过程。
- 点 Install。
- Installed Operators 页会显示 Kiali Operator 的安装进度。
3.5.5. 安装 Operator
要安装 Red Hat OpenShift Service Mesh,您必须安装 Red Hat OpenShift Service Mesh Operator。对您要安装的每个额外 Operator 重复这个过程。
其他 Operator 包括:
- 红帽提供的 Kiali Operator
- Tempo Operator
弃用的额外 Operator 包括:
从 Red Hat OpenShift Service Mesh 2.5 开始,Red Hat OpenShift distributed tracing Platform (Jaeger) 和 OpenShift Elasticsearch Operator 已被弃用,并将在以后的发行版本中删除。红帽将在当前发行生命周期中为这些功能提供程序错误修正和支持,但此功能将不再获得改进,并将被删除。作为 Red Hat OpenShift distributed tracing Platform (Jaeger) 的替代选择,您可以使用 Red Hat OpenShift distributed tracing Platform (Tempo)。
- Red Hat OpenShift distributed tracing Platform (Jaeger)
- OpenShift Elasticsearch Operator
如果您已经安装了 OpenShift Elasticsearch Operator 作为 OpenShift Logging 的一部分,则不需要再次安装 OpenShift Elasticsearch Operator。Red Hat OpenShift distributed tracing Platform (Jaeger) Operator 使用已安装的 OpenShift Elasticsearch Operator 创建 Elasticsearch 实例。
流程
-
以具有
cluster-admin
角色的用户身份登录到 OpenShift Container Platform web 控制台。 -
在 OpenShift Container Platform Web 控制台中,点击 Operators
OperatorHub。 - 在过滤器框中输入 Operator 名称,再选择 Operator 的 Red Hat 版本。不支持 Operator 的社区版本。
- 点 Install。
- 在每个 Operator 的 Install Operator 页面中,接受默认设置。
点 Install。等待 Operator 安装,然后为要安装的下一个 Operator 重复步骤。
-
Red Hat OpenShift Service Mesh Operator 在
openshift-operators
命名空间中安装,并可用于集群中的所有命名空间。 -
由红帽在
openshift-operators
命名空间中安装的 Kiali Operator,并可用于集群中的所有命名空间。 -
Tempo Operator 安装在
openshift-tempo-operator
命名空间中,并可用于集群中的所有命名空间。 Red Hat OpenShift distributed tracing Platform (Jaeger) 安装在
openshift-distributed-tracing
命名空间中,并可用于集群中的所有命名空间。重要从 Red Hat OpenShift Service Mesh 2.5 开始,Red Hat OpenShift distributed tracing Platform (Jaeger) 已被弃用,并将在以后的发行版本中删除。红帽将在当前发行生命周期中提供对这个功能的程序漏洞修复和支持,但这个功能将不再获得改进,并将被删除。作为 Red Hat OpenShift distributed tracing Platform (Jaeger) 的替代选择,您可以使用 Red Hat OpenShift distributed tracing Platform (Tempo)。
OpenShift Elasticsearch Operator 安装在
openshift-operators-redhat
命名空间中,并可用于集群中的所有命名空间。重要从 Red Hat OpenShift Service Mesh 2.5 开始,OpenShift Elasticsearch Operator 已被弃用,并将在以后的发行版本中删除。红帽将在当前发行生命周期中提供对这个功能的程序漏洞修复和支持,但这个功能将不再获得改进,并将被删除。
-
Red Hat OpenShift Service Mesh Operator 在
验证
-
安装完所有四个 Operator 后,点 Operators
Installed Operators 来验证是否安装了 Operator。
3.5.6. 部署 Red Hat OpenShift Service Mesh control plane
ServiceMeshControlPlane
资源定义要在安装过程中使用的配置。您可以部署红帽提供的默认配置,或者自定义 ServiceMeshControlPlane
文件以满足您的业务需求。
您可以使用 OpenShift Container Platform web 控制台或使用 oc
客户端工具从命令行部署 Service Mesh control plane。
3.5.6.1. 从 Web 控制台部署 control plane
按照以下步骤,使用 Web 控制台部署 Red Hat OpenShift Service Mesh control plane。在本例中,istio-system
是 control plane 项目的名称。
前提条件
- 必须安装 Red Hat OpenShift Service Mesh Operator。
- 查看有关如何自定义 Red Hat OpenShift Service Mesh 安装的说明。
-
具有
cluster-admin
角色的帐户。
流程
-
以具有
cluster-admin
角色的用户身份登录到 OpenShift Container Platform web 控制台。 创建一个名为
istio-system
的项目。-
浏览至 Home
Project。 - 点击 Create Project。
-
在 Name 字段中输入
istio-system
。 - 点 Create。
-
浏览至 Home
-
导航到 Operators
Installed Operators。 -
如果需要,请在 Project 菜单中选择
istio-system
。您可能需要等待一些时间,让 Operator 复制到新项目中。 点 Red Hat OpenShift Service Mesh Operator。在 Provided APIs 下,Operator 提供了创建两个资源类型的链接:
-
ServiceMeshControlPlane
资源 -
ServiceMeshMemberRoll
资源
-
- 在 Istio Service Mesh Control Plane 下点 Create ServiceMeshControlPlane。
在 Create Service Mesh Control Plane 页面中,根据需要修改默认
ServiceMeshControlPlane
模板的 YAML。注意如需有关自定义 control plane 的更多信息,请参阅“自定义 Red Hat OpenShift Service Mesh 安装”。对于生产环境,您必须更改默认的 Jaeger 模板。
- 点 Create 来创建 control plane。Operator 根据您的配置参数创建 pod、服务和 Service Mesh control plane 组件。
- 点 Istio Service Mesh Control Plane 标签页。
- 点新的 control plane 的名称。
- 点 Resources 标签页来查看由 Operator 创建并配置的 Red Hat OpenShift Service Mesh control plane 资源。
3.5.6.2. 通过 CLI 部署 control plane
按照以下步骤,使用命令行部署 Red Hat OpenShift Service Mesh control plane。
前提条件
- 必须安装 Red Hat OpenShift Service Mesh Operator。
- 查看有关如何自定义 Red Hat OpenShift Service Mesh 安装的说明。
-
具有
cluster-admin
角色的帐户。 -
访问 OpenShift CLI(
oc
)。
流程
以具有
cluster-admin
角色的用户身份登录到 OpenShift Container Platform CLI。$ oc login --username=<NAMEOFUSER> https://<HOSTNAME>:6443
创建一个名为
istio-system
的项目。$ oc new-project istio-system
-
使用“自定义 Red Hat OpenShift Service Mesh 安装”中的示例,创建一个名为
istio-installation.yaml
的ServiceMeshControlPlane
文件。您可以根据需要自定义值来匹配您的用例。对于生产环境,您必须更改默认的 Jaeger 模板。 运行以下命令来部署 control plane:
$ oc create -n istio-system -f istio-installation.yaml
执行以下命令查看 control plane 安装的状态。
$ oc get smcp -n istio-system
当 STATUS 列是
ComponentsReady
时,安装成功完成。NAME READY STATUS PROFILES VERSION AGE basic-install 11/11 ComponentsReady ["default"] v1.1.18 4m25s
在安装过程中运行以下命令来监控 Pod 的进度:
$ oc get pods -n istio-system -w
您应该看到类似如下的输出:
输出示例
NAME READY STATUS RESTARTS AGE grafana-7bf5764d9d-2b2f6 2/2 Running 0 28h istio-citadel-576b9c5bbd-z84z4 1/1 Running 0 28h istio-egressgateway-5476bc4656-r4zdv 1/1 Running 0 28h istio-galley-7d57b47bb7-lqdxv 1/1 Running 0 28h istio-ingressgateway-dbb8f7f46-ct6n5 1/1 Running 0 28h istio-pilot-546bf69578-ccg5x 2/2 Running 0 28h istio-policy-77fd498655-7pvjw 2/2 Running 0 28h istio-sidecar-injector-df45bd899-ctxdt 1/1 Running 0 28h istio-telemetry-66f697d6d5-cj28l 2/2 Running 0 28h jaeger-896945cbc-7lqrr 2/2 Running 0 11h kiali-78d9c5b87c-snjzh 1/1 Running 0 22h prometheus-6dff867c97-gr2n5 2/2 Running 0 28h
对于多租户环境,Red Hat OpenShift Service Mesh 支持集群中有多个独立 control plane。您可以使用 ServiceMeshControlPlane
模板生成可重复使用的配置。如需更多信息,请参阅创建 control plane 模板。
3.5.7. 创建 Red Hat OpenShift Service Mesh member roll
ServiceMeshMemberRoll
列出属于 Service Mesh control plane 的项目。只有 ServiceMeshMemberRoll
中列出的项目会受到 control plane 的影响。在将项目添加到特定 control plane 部署的 member roll 之前,项目不属于服务网格。
您必须在 ServiceMeshControlPlane
所在的同一个项目中创建一个名为 default
的 ServiceMeshMemberRoll
资源,如 istio-system
。
3.5.7.1. 从 Web 控制台创建 member roll
您可从 web 控制台在 Service Mesh member roll 中添加一个或多个项目。在本例中,istio-system
是 Service Mesh control plane 项目的名称。
前提条件
- 已安装并验证的 Red Hat OpenShift Service Mesh Operator。
- 要添加到服务网格的现存项目列表。
流程
- 登陆到 OpenShift Container Platform Web 控制台。
如果您还没有网格服务,或者您从头开始,请为您的应用程序创建一个项目。它必须与安装 Service Mesh control plane 的项目不同。
-
浏览至 Home
Project。 - 在 Name 字段中输入一个名称。
- 点 Create。
-
浏览至 Home
-
导航到 Operators
Installed Operators。 -
点 Project 菜单,从列表中选择部署
ServiceMeshControlPlane
资源的项目,如istio-system
。 - 点 Red Hat OpenShift Service Mesh Operator。
- 点 Istio Service Mesh Member Roll 选项卡。
- 点 Create ServiceMeshMemberRoll
-
单击 Members,然后在 Value 字段中输入项目名称。您可以添加任意数量的项目,但一个项目只能属于一个
ServiceMeshMemberRoll
资源。 - 点 Create。
3.5.7.2. 通过 CLI 创建 member roll
您可以使用命令行将项目添加到 ServiceMeshMemberRoll
中。
前提条件
- 已安装并验证的 Red Hat OpenShift Service Mesh Operator。
- 要添加到服务网格的项目列表。
-
访问 OpenShift CLI(
oc
)。
流程
登录 OpenShift Container Platform CLI。
$ oc login --username=<NAMEOFUSER> https://<HOSTNAME>:6443
如果您还没有网格服务,或者您从头开始,请为您的应用程序创建一个项目。它必须与安装 Service Mesh control plane 的项目不同。
$ oc new-project <your-project>
要添加项目作为成员,请修改以下示例 YAML:您可以添加任意数量的项目,但一个项目只能属于一个
ServiceMeshMemberRoll
资源。在本例中,istio-system
是 Service Mesh control plane 项目的名称。servicemeshmemberroll-default.yaml 示例
apiVersion: maistra.io/v1 kind: ServiceMeshMemberRoll metadata: name: default namespace: istio-system spec: members: # a list of projects joined into the service mesh - your-project-name - another-project-name
运行以下命令,在
istio-system
命名空间中上传并创建ServiceMeshMemberRoll
资源。$ oc create -n istio-system -f servicemeshmemberroll-default.yaml
运行以下命令,以验证
ServiceMeshMemberRoll
是否已成功创建。$ oc get smmr -n istio-system default
当
STATUS
列为Configured
时,安装成功完成。
3.5.8. 为服务网格添加或删除项目
您可以使用 web 控制台从现有 Service Mesh ServiceMeshMemberRoll
资源中添加或删除项目。
-
您可以添加任意数量的项目,但一个项目只能属于一个
ServiceMeshMemberRoll
资源。 -
当它对应的
ServiceMeshControlPlane
资源被删除后,ServiceMeshMemberRoll
资源也会被删除。
3.5.8.1. 使用 Web 控制台从 member roll 中添加或删除项目
前提条件
- 已安装并验证的 Red Hat OpenShift Service Mesh Operator。
-
现有
ServiceMeshMemberRoll
资源 -
带有
ServiceMeshMemberRoll
资源的项目名称 。 - 您要为网格添加或删除的项目的名称。
流程
- 登陆到 OpenShift Container Platform Web 控制台。
-
导航到 Operators
Installed Operators。 -
点 Project 菜单,从列表中选择部署
ServiceMeshControlPlane
资源的项目,如istio-system
。 - 点 Red Hat OpenShift Service Mesh Operator。
- 点 Istio Service Mesh Member Roll 选项卡。
-
点
default
链接。 - 点 YAML 标签。
-
修改 YAML 以添加或删除作为成员的项目。您可以添加任意数量的项目,但一个项目只能属于一个
ServiceMeshMemberRoll
资源。 - 点击 Save。
- 点 Reload。
3.5.8.2. 使用 CLI 从 member roll 添加或删除项目
您可以使用命令行修改现有 Service Mesh member roll。
先决条件
- 已安装并验证的 Red Hat OpenShift Service Mesh Operator。
-
现有
ServiceMeshMemberRoll
资源 -
带有
ServiceMeshMemberRoll
资源的项目名称 。 - 您要为网格添加或删除的项目的名称。
-
访问 OpenShift CLI(
oc
)。
流程
- 登录 OpenShift Container Platform CLI。
编辑
ServiceMeshMemberRoll
资源。$ oc edit smmr -n <controlplane-namespace>
修改 YAML 以添加或删除作为成员的项目。您可以添加任意数量的项目,但一个项目只能属于一个
ServiceMeshMemberRoll
资源。servicemeshmemberroll-default.yaml 示例
apiVersion: maistra.io/v1 kind: ServiceMeshMemberRoll metadata: name: default namespace: istio-system #control plane project spec: members: # a list of projects joined into the service mesh - your-project-name - another-project-name
3.5.9. 手动更新
如果您选择使用手工更新,Operator Lifecycle Manager (OLM) 会控制集群中 Operator 的安装、升级和基于角色的访问控制 (RBAC)。OLM 在 OpenShift Container Platform 中默认运行。OLM 使用 CatalogSource,而 CatalogSources 使用 Operator Registry API 来查询是否有可用的 Operator 及已安装 Operator 是否有升级版本。
- 如需了解有关 OpenShift Container Platform 如何处理升级的更多信息,请参阅 Operator Lifecycle Manager 文档。
3.5.9.1. 更新 sidecar 代理
要更新 sidecar 代理的配置,应用程序管理员必须重启应用程序 pod。
如果您的部署使用了自动 sidecar 注入功能,则可以通过添加或修改注解来更新部署中的 pod 模板。运行以下命令来重新部署 pod:
$ oc patch deployment/<deployment> -p '{"spec":{"template":{"metadata":{"annotations":{"kubectl.kubernetes.io/restartedAt": "'`date -Iseconds`'"}}}}}'
如果您的部署没有使用自动 sidecar 注入功能,则必须通过修改部署或 pod 中指定的 sidecar 容器镜像来手动更新 sidecar,然后重启 pod。