第 4 章 集群范围的迁移指南
4.1. 集群范围的迁移指南 复制链接链接已复制到粘贴板!
本指南适用于运行 Red Hat OpenShift Service Mesh 2.6.9 并迁移到 OpenShift Service Mesh 3.0 的用户。
在开始迁移部署前,您必须完成预迁移清单。
4.1.1. control plane 配置迁移要求 复制链接链接已复制到粘贴板!
在迁移过程中,当 data plane 命名空间逐渐迁移到 Red Hat OpenShift Service Mesh 3.0 安装时,两个集群范围的 control plane 在同一个集群中运行。一个 control plane 与 Red Hat OpenShift Service Mesh 2.6.9 安装关联,另一个与 OpenShift Service Mesh 3.0 安装关联。您必须仔细规划迁移步骤,以避免两个 control plane 之间可能存在冲突。
4.1.1.1. 根证书 复制链接链接已复制到粘贴板!
在迁移过程中,两个 control plane 必须共享 root 证书。要在两个 control plane 间共享 root 证书,您需要将 3.0 control plane 安装到与 2.6 control plane 相同的命名空间中。迁移过程演示了如何验证 root 证书是否已共享。
4.1.1.2. 发现选择器和命名空间访问 复制链接链接已复制到粘贴板!
两个 control plane 必须有权访问网格中的所有命名空间。在迁移过程中,一些代理由 3.0 control plane 控制,其他代理则由 2.6 control plane 控制。为确保网格通信在迁移过程中正常工作,两个 control plane 必须检测到同一组服务。服务发现由 istiod 组件提供,该组件在 control plane 命名空间中运行。
在 OpenShift Service Mesh 3.0 安装中,您可以使用发现选择器控制 Istio 发现服务的方式。使用发现选择器时,请确保 OpenShift Service Mesh 3.0 Istio 资源中定义的 discoverySelectors 表达式与组成 OpenShift Service Mesh 2.6 mesh 的命名空间匹配。您可能需要在 OpenShift Service Mesh 2.6 应用程序命名空间中添加额外的标签,以确保它们在 OpenShift Service Mesh 3.0 安装中捕获。如需更多信息,请参阅"使用 DiscoverySelectors 协调服务网格"。
在 OpenShift Service Mesh 2.6 安装中,maistra.io/member-of 标签会被自动创建。无法使用该标签,因为它在迁移过程中自动删除。
4.1.1.3. 网络策略 复制链接链接已复制到粘贴板!
默认情况下,OpenShift Service Mesh 2.6 管理阻止到 3.0 control plane 的流量的网络策略。
对于两个 control plane,在迁移过程中确保网络策略不会阻止以下实体之间的流量:
- control plane 和 data plane 命名空间
- data plane 命名空间和 control plane
- data plane 命名空间本身
在预迁移清单中,您会被指示禁用网络策略。但是,您可以手动重新创建它们。手动创建的网络策略必须允许两个 control plane 的流量。当 data plane 命名空间迁移到 3.0 时,maistra.io/member-of 标签会被自动删除。不要在网络策略中使用该标签。如需更多信息,请参阅"设置要在迁移过程中使用的网络策略"。
在 OpenShift Service Mesh 2.6 安装中,maistra.io/member-of 标签会被自动创建。无法使用该标签,因为它在迁移过程中自动删除。
错误配置的网络策略可能会破坏网格流量。运行迁移时,在创建网络策略时要小心,以防止流量中断。如需更多信息,请参阅"设置要在迁移过程中使用的网络策略"。
4.1.1.4. sidecar 注入 复制链接链接已复制到粘贴板!
如果 control plane 试图执行 sidecar 注入,代理将不会启动,且无法完成迁移。为确保在迁移过程中只有一个 control plane 执行 sidecar 注入,请使用注入标签。如需更多信息,请参阅"安装 Sidecar"。
在迁移过程中,您必须禁用 2.6 注入程序。使用 maistra.io/ignore-namespace: "true" 标签来防止 2.6 control plane 注入命名空间中的代理。
4.1.1.5. 标签选择 复制链接链接已复制到粘贴板!
对于 OpenShift Service Mesh 3.0,您必须决定是否使用 istio.io/rev 标签或 istio-injection 标签来配置 sidecar 注入。如需更多信息,请参阅"About sidecar 注入"。
在 OpenShift Service Mesh 2.6 安装中,ServiceMeshMemberRoll 资源中的成员选择配置可能会影响 OpenShift Service Mesh 3.0 安装中使用注入标签。
默认情况下,在 2.6 安装中,ServiceMeshMemberRoll 资源中的 spec.memberSelectors 字段被配置为与 istio-injection=enabled 标签匹配,而 2.6 安装中的所有 data plane 命名空间都会应用 istio-injection=enabled 标签。如果您使用默认的 2.6 安装设置,您可以继续使用该标签或切换到 3.0 安装的 istio.io/rev 标签。
如果 ServiceMeshMemberRoll 资源中的 spec.memberSelectors 字段没有配置为与 istio-injection=enabled 标签匹配,并且 2.6 data plane 命名空间使用自定义标签,您必须在迁移过程中添加 istio.io/rev 标签或 istio-injection 标签。ServiceMeshMemberRoll 资源的 spec.memberSelectors 参数中定义的自定义标签对 OpenShift Service Mesh 3 安装中的 sidecar 注入没有影响,且无法使用。
如果 2.6 安装中的项目通过手动创建 ServiceMeshMember 资源添加到网格中,则必须在迁移过程中将 istio.io/rev 或 istio-injection 标签添加到项目命名空间中。
4.1.2. 集群范围的迁移方法 复制链接链接已复制到粘贴板!
您可以使用以下方法之一将 control plane 从 Red Hat OpenShift Service Mesh 2.6.9 迁移到 OpenShift Service Mesh 3.0:
-
应用
istio.io/rev标签 -
应用
istio-injection=enabled标签 使用
istio-injection=enabled标签执行简单的迁移注意简单的迁移方法可能会引入流量中断。
要为 OpenShift Service Mesh 安装选择最佳迁移方法,您必须了解 istio.io/rev 和 istio-injection 标签之间的区别。在选择最适合您需求的迁移方法之前,通读所有迁移方法。
4.1.3. 使用 Istio 修订标签迁移集群范围的部署 复制链接链接已复制到粘贴板!
您可以使用 istio.io/rev 标签为集群范围的部署逐步迁移 data plane 命名空间执行 Canary 升级。
info 示例应用程序用于演示目的,其中的一个最小示例用于 Istio 资源。如需有关 OpenShift Service Mesh 2 ServiceMeshControlPlane 资源和 OpenShift Service Mesh 3 Istio 资源之间的配置差异的更多信息,请参阅"Service Mesh 2 和 Service Mesh 3 之间的配置字段映射"。
您可以在您自己的工作负载中遵循相同的步骤。
先决条件
- 您已部署了 OpenShift Container Platform 4.14 或更高版本。
-
以具有
cluster-admin角色的用户身份登录到 OpenShift Container Platform Web 控制台。 - 您已完成了迁移前检查清单。
- 已安装 OpenShift Service Mesh 2.6.9 Operator。
- 已安装 OpenShift Service Mesh 3 Operator。
-
您已创建了
IstioCNI资源。 -
已安装
istioctl工具。 - 您正在运行集群范围的 Service Mesh control plane 资源。
-
已安装
info应用程序。
步骤
运行以下命令,识别包含 2.6 control plane 的命名空间:
oc get smcp -A
$ oc get smcp -ACopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAMESPACE NAME READY STATUS PROFILES VERSION AGE istio-system install-istio-system 6/6 ComponentsReady ["default"] 2.6.6 115m
NAMESPACE NAME READY STATUS PROFILES VERSION AGE istio-system install-istio-system 6/6 ComponentsReady ["default"] 2.6.6 115mCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建名为
ossm-3.yaml的 YAML 文件,该文件在与 2.6 安装的ServiceMeshControlPlane资源相同的命名空间中为 3.0 安装创建 Istio 资源。注意在以下示例中,Istio control plane 可以访问集群中的所有命名空间。如果要限制控制计划可访问的命名空间,您必须定义发现选择器。要从版本 2.6 迁移的所有数据平面命名空间都必须匹配。
Istio资源示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来应用 YAML 文件:
oc apply -f ossm-3.yaml
$ oc apply -f ossm-3.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,验证新的
istiod资源是否使用现有的 root 证书:oc logs deployments/istiod-ossm-3-v1-24-3 -n istio-system | grep 'Load signing key and cert from existing secret'
$ oc logs deployments/istiod-ossm-3-v1-24-3 -n istio-system | grep 'Load signing key and cert from existing secret'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
2024-12-18T08:13:53.788959Z info pkica Load signing key and cert from existing secret istio-system/istio-ca-secret
2024-12-18T08:13:53.788959Z info pkica Load signing key and cert from existing secret istio-system/istio-ca-secretCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.1.3.1. 使用 Istio 修订标签迁移工作负载 复制链接链接已复制到粘贴板!
现在,您可以将工作负载从 OpenShift Service Mesh 2.6 control plane 迁移到 OpenShift Service Mesh 3.0 control plane。
本例中不使用修订标签,以进行简单性。迁移大型网格时,您可以使用修订标签以避免在以后的版本 3 更新过程中重新标记所有命名空间。
您可以单独迁移工作负载和网关,并以任何顺序迁移。如需更多信息,请参阅"缓解网关"。
步骤
运行以下命令,查找 OpenShift Service Mesh 3.0 control plane 的当前
IstioRevision:oc get istios
$ oc get istiosCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME REVISIONS READY IN USE ACTIVE REVISION STATUS VERSION AGE ossm-3 1 1 0 ossm-3-v1-24-3 Healthy v1.24.3 30s
NAME REVISIONS READY IN USE ACTIVE REVISION STATUS VERSION AGE ossm-3 1 1 0 ossm-3-v1-24-3 Healthy v1.24.3 30sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 复制
ACTIVE REVISION列中的值,以在下一步中用作istio.io/rev标签。注意修订版本的命名格式取决于您为
Istio实例选择的升级策略。运行以下命令,更新
dataplane命名空间中的注入标签:oc label ns info istio.io/rev=ossm-3-v1-24-3 maistra.io/ignore-namespace="true" istio-injection- --overwrite=true
$ oc label ns info istio.io/rev=ossm-3-v1-24-3 maistra.io/ignore-namespace="true" istio-injection- --overwrite=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行命令执行以下操作:
-
删除
istio-injection标签:此标签可防止 3.0 control plane 注入代理。istio-injection标签优先于istio.io/rev标签。 -
添加
istio.io/rev=ossm-3-v1-24-3标签:此标签可确保命名空间中的任何新创建或重启的 pod 连接到 OpenShift Service Mesh 3.0 代理。 添加
maistra.io/ignore-namespace: "true"标签:该标签禁用命名空间中 OpenShift Service Mesh 2.6 代理的 sidecar 注入。应用标签后,OpenShift Service Mesh 2.6 会停止注入此命名空间中的代理,OpenShift Service Mesh 3.0 都会注入任何新的代理。如果没有此标签,OpenShift Service Mesh 2.6 注入 Webhook 会尝试注入 pod,注入的 sidecar 代理会拒绝启动,因为它会具有 OpenShift Service Mesh 2.6 和 OpenShift Service Mesh 3.0 Container Network Interface (CNI)注解。注意应用
maistra.io/ignore-namespace标签后,在该命名空间中创建的任何新 pod 都连接到 OpenShift Service Mesh 3.0 代理。工作负载仍然可以相互通信,无论它们连接到哪个 control plane。
-
删除
使用以下选项之一重启工作负载:
要一次重启所有工作负载,以便新 pod 注入 OpenShift Service Mesh 3.0 代理,请运行以下命令:
info应用程序的命令示例oc rollout restart deployments -n info
$ oc rollout restart deployments -n infoCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要单独重启每个工作负载,请对每个工作负载运行以下命令:
带有
info应用程序的命令示例oc rollout restart deployments productpage-v1 -n info
$ oc rollout restart deployments productpage-v1 -n infoCopy to Clipboard Copied! Toggle word wrap Toggle overflow
运行以下命令等待
productpage应用程序重启:oc rollout status deployment productpage-v1 -n info
$ oc rollout status deployment productpage-v1 -n infoCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令,确保预期的工作负载由新的 control plane 管理:
istioctl ps -n info
$ istioctl ps -n infoCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 前面的输出显示,
productpage-v1部署是重启并使用 3.0 代理注入的唯一部署。即使有不同版本的代理,服务之间的通信仍可以正常工作。如果 2.6 安装包含额外的 data plane 命名空间,请现在迁移下一个命名空间。
注意在卸载 2.6 control plane 前,不要删除
maistra.io/ignore-namespace="true"标签。
后续步骤
如果使用网关,则必须在完成迁移过程前迁移它们。
如果您没有使用网关,并验证了集群范围的迁移,您可以继续完成迁移并删除 OpenShift Service Mesh 2 资源。
4.1.4. 使用带有 cert-manager 的 Istio 修订标签迁移集群范围的部署 复制链接链接已复制到粘贴板!
您可以使用 istio.io/rev 标签为集群范围的部署逐步迁移 data plane 命名空间执行 Canary 升级。
info 示例应用程序用于演示目的,其中的一个最小示例用于 Istio 资源。如需有关 OpenShift Service Mesh 2 ServiceMeshControlPlane 资源和 OpenShift Service Mesh 3 Istio 资源之间的配置差异的更多信息,请参阅"Service Mesh 2 和 Service Mesh 3 之间的配置字段映射"。
您可以在您自己的工作负载中遵循相同的步骤。
先决条件
- 您已部署了 OpenShift Container Platform 4.14 或更高版本。
-
以具有
cluster-admin角色的用户身份登录到 OpenShift Container Platform Web 控制台。 - 您已完成了迁移前检查清单。
- 已安装 OpenShift Service Mesh 2.6.9 Operator。
- 已安装 OpenShift Service Mesh 3 Operator。
-
您已创建了
IstioCNI资源。 -
已安装
istioctl工具。 - 在集群范围的部署中,您使用 cert-manager 和 istio-csr 工具。
-
OpenShift Service Mesh 2.6.9
ServiceMeshControlPlane资源使用 cert-manager 工具进行配置。 -
已安装
info应用程序。
步骤
确认 OpenShift Service Mesh 2
ServiceMeshControlPlane资源配置了 cert-manager 工具。ServiceMeshControlPlanecert-manager 配置示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,更新
istio-csr部署,使其包含 OpenShift Service Mesh 3 control plane:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 在创建
Istio资源 前,app.istio.revisions字段必须包含 OpenShift Service Mesh 3.0 control plane 修订版本,以便代理可以正确地与 OpenShift Service Mesh 3.0 control plane 通信。
运行以下命令,识别包含 2.6 control plane 的命名空间:
oc get smcp -A
$ oc get smcp -ACopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAMESPACE NAME READY STATUS PROFILES VERSION AGE istio-system install-istio-system 6/6 ComponentsReady ["default"] 2.6.6 115m
NAMESPACE NAME READY STATUS PROFILES VERSION AGE istio-system install-istio-system 6/6 ComponentsReady ["default"] 2.6.6 115mCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建名为
ossm-3.yaml的 YAML 文件,该文件在与 2.6 安装的ServiceMeshControlPlane资源相同的命名空间中为 3.0 安装创建 Istio 资源。注意在以下示例中,Istio control plane 可以访问集群中的所有命名空间。如果要限制控制计划可访问的命名空间,您必须定义发现选择器。要从版本 2.6 迁移的所有数据平面命名空间都必须匹配。
Istio资源示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来应用 YAML 文件:
oc apply -f ossm-3.yaml
$ oc apply -f ossm-3.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,验证新的
istiod资源是否使用现有的 root 证书:oc logs deployments/istiod-ossm-3-v1-24-3 -n istio-system | grep 'Load signing key and cert from existing secret'
$ oc logs deployments/istiod-ossm-3-v1-24-3 -n istio-system | grep 'Load signing key and cert from existing secret'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
2024-12-18T08:13:53.788959Z info pkica Load signing key and cert from existing secret istio-system/istio-ca-secret
2024-12-18T08:13:53.788959Z info pkica Load signing key and cert from existing secret istio-system/istio-ca-secretCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.1.4.1. 使用带有 cert-manager 的 Istio 修订标签迁移工作负载 复制链接链接已复制到粘贴板!
现在,您可以将工作负载从 OpenShift Service Mesh 2.6 control plane 迁移到 OpenShift Service Mesh 3.0 control plane。
本例中不使用修订标签,以进行简单性。迁移大型网格时,您可以使用修订标签以避免在以后的版本 3 更新过程中重新标记所有命名空间。
您可以单独迁移工作负载和网关,并以任何顺序迁移。如需更多信息,请参阅"缓解网关"。
步骤
运行以下命令,查找 OpenShift Service Mesh 3.0 control plane 的当前
IstioRevision:oc get istios
$ oc get istiosCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME REVISIONS READY IN USE ACTIVE REVISION STATUS VERSION AGE ossm-3 1 1 0 ossm-3-v1-24-3 Healthy v1.24.3 30s
NAME REVISIONS READY IN USE ACTIVE REVISION STATUS VERSION AGE ossm-3 1 1 0 ossm-3-v1-24-3 Healthy v1.24.3 30sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 复制
ACTIVE REVISION列中的值,以在下一步中用作istio.io/rev标签。注意修订版本的命名格式取决于您为
Istio实例选择的升级策略。运行以下命令,更新
dataplane命名空间中的注入标签:oc label ns info istio.io/rev=ossm-3-v1-24-3 maistra.io/ignore-namespace="true" istio-injection- --overwrite=true
$ oc label ns info istio.io/rev=ossm-3-v1-24-3 maistra.io/ignore-namespace="true" istio-injection- --overwrite=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行命令执行以下操作:
-
删除
istio-injection标签:此标签可防止 3.0 control plane 注入代理。istio-injection标签优先于istio.io/rev标签。 -
添加
istio.io/rev=ossm-3-v1-24-3标签:此标签可确保命名空间中的任何新创建或重启的 pod 连接到 OpenShift Service Mesh 3.0 代理。 添加
maistra.io/ignore-namespace: "true"标签:该标签禁用命名空间中 OpenShift Service Mesh 2.6 代理的 sidecar 注入。应用标签后,OpenShift Service Mesh 2.6 会停止注入此命名空间中的代理,OpenShift Service Mesh 3.0 都会注入任何新的代理。如果没有此标签,OpenShift Service Mesh 2.6 注入 Webhook 会尝试注入 pod,注入的 sidecar 代理会拒绝启动,因为它会具有 OpenShift Service Mesh 2.6 和 OpenShift Service Mesh 3.0 Container Network Interface (CNI)注解。注意应用
maistra.io/ignore-namespace标签后,在该命名空间中创建的任何新 pod 都连接到 OpenShift Service Mesh 3.0 代理。工作负载仍然可以相互通信,无论它们连接到哪个 control plane。
-
删除
使用以下选项之一重启工作负载:
要一次重启所有工作负载,以便新 pod 注入 OpenShift Service Mesh 3.0 代理,请运行以下命令:
info应用程序的命令示例oc rollout restart deployments -n info
$ oc rollout restart deployments -n infoCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要单独重启每个工作负载,请对每个工作负载运行以下命令:
带有
info应用程序的命令示例oc rollout restart deployments productpage-v1 -n info
$ oc rollout restart deployments productpage-v1 -n infoCopy to Clipboard Copied! Toggle word wrap Toggle overflow
运行以下命令等待
productpage应用程序重启:oc rollout status deployment productpage-v1 -n info
$ oc rollout status deployment productpage-v1 -n infoCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令,确保预期的工作负载由新的 control plane 管理:
istioctl ps -n info
$ istioctl ps -n infoCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 前面的输出显示,
productpage-v1部署是重启并使用 3.0 代理注入的唯一部署。即使有不同版本的代理,服务之间的通信仍可以正常工作。如果 2.6 安装包含额外的 data plane 命名空间,请现在迁移下一个命名空间。
注意在卸载 2.6 control plane 前,不要删除
maistra.io/ignore-namespace="true"标签。
后续步骤
如果使用网关,则必须在完成迁移过程前迁移它们。
如果您没有使用网关,并验证了集群范围的迁移,您可以继续完成迁移并删除 OpenShift Service Mesh 2 资源。
4.1.5. 使用 Istio 注入标签迁移集群范围的部署 复制链接链接已复制到粘贴板!
您可以使用 istio-injection=enabled 标签 和默认 修订标签为集群范围的部署执行 gradual 迁移 data plane 命名空间。
您必须重新标记所有 data plane 命名空间。但是,在迁移过程中在任何时间点上重启任何工作负载是安全的。
info 应用程序用作 Istio 资源的示例。如需有关 OpenShift Service Mesh 2 ServiceMeshControlPlane 资源和 OpenShift Service Mesh 3 Istio 资源之间的配置差异的更多信息,请参阅 "ServiceMeshControlPlane 资源到 Istio 资源字段映射"。
先决条件
- 您已部署了 OpenShift Container Platform 4.14 或更高版本。
-
以具有
cluster-admin角色的用户身份登录到 OpenShift Container Platform Web 控制台。 - 您已完成了迁移前检查清单。
- 已安装 OpenShift Service Mesh 2.6.9 Operator。
- 已安装 OpenShift Service Mesh 3 Operator。
-
您已创建了
IstioCNI资源。 -
已安装
istioctl工具。 - 您正在运行集群范围的 Service Mesh control plane 资源。
-
已安装
info应用程序。
步骤
运行以下命令,识别包含 2.6 control plane 的命名空间:
oc get smcp -A
$ oc get smcp -ACopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAMESPACE NAME READY STATUS PROFILES VERSION AGE istio-system install-istio-system 6/6 ComponentsReady ["default"] 2.6.6 115m
NAMESPACE NAME READY STATUS PROFILES VERSION AGE istio-system install-istio-system 6/6 ComponentsReady ["default"] 2.6.6 115mCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建名为
ossm-3.yaml的 YAML 文件。此流程在与 2.6 安装的ServiceMeshControlPlane资源相同的命名空间中为 3.0 安装创建 Istio 资源。注意在以下示例中,Istio control plane 可以访问集群中的所有命名空间。如果要限制控制计划可访问的命名空间,您必须定义发现选择器。您必须匹配计划从版本 2.6 迁移的所有数据平面命名空间。
Istio资源示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意要防止 OpenShift Service Mesh 3.0 control plane 在应用了
istio-injection=enabled标签的命名空间中注入代理,且仍然由 OpenShift Service Mesh 2.6 control plane 管理,请不要在以下步骤中使用默认名称,且不在以下步骤中创建默认修订标签。您可以在此流程稍后创建默认修订标签。运行以下命令来应用 YAML 文件:
oc apply -f ossm-3.yaml
$ oc apply -f ossm-3.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令,验证新的
istiod资源是否使用现有的 root 证书:oc logs deployments/istiod-ossm-3-v1-24-3 -n istio-system | grep 'Load signing key and cert from existing secret'
$ oc logs deployments/istiod-ossm-3-v1-24-3 -n istio-system | grep 'Load signing key and cert from existing secret'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
2024-12-18T08:13:53.788959Z info pkica Load signing key and cert from existing secret istio-system/istio-ca-secret
2024-12-18T08:13:53.788959Z info pkica Load signing key and cert from existing secret istio-system/istio-ca-secretCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.1.5.1. 使用 Istio 注入标签迁移工作负载 复制链接链接已复制到粘贴板!
现在,您可以将工作负载从 OpenShift Service Mesh 2.6 control plane 迁移到 OpenShift Service Mesh 3.0 control plane。
您可以单独迁移工作负载和网关,并以任何顺序迁移。如需更多信息,请参阅"缓解网关"。
流程
运行以下命令,查找 OpenShift Service Mesh 3.0 control plane 的当前
IstioRevision资源:oc get istios
$ oc get istiosCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME REVISIONS READY IN USE ACTIVE REVISION STATUS VERSION AGE ossm-3 1 1 0 ossm-3-v1-24-3 Healthy v1.24.3 30s
NAME REVISIONS READY IN USE ACTIVE REVISION STATUS VERSION AGE ossm-3 1 1 0 ossm-3-v1-24-3 Healthy v1.24.3 30sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 复制
ACTIVE REVISION值,以在下一步中用作istio.io/rev标签。注意修订版本的命名格式取决于您为
Istio实例选择的升级策略。运行以下命令,更新 data plane 命名空间中的注入标签:
oc label ns info istio.io/rev=ossm-3-v1-24-3 maistra.io/ignore-namespace="true" istio-injection- --overwrite=true
$ oc label ns info istio.io/rev=ossm-3-v1-24-3 maistra.io/ignore-namespace="true" istio-injection- --overwrite=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc label命令执行以下操作:-
删除
istio-injection标签:此标签可防止 3.0 control plane 注入代理。istio-injection标签优先于istio.io/rev标签。您必须临时删除istio-injection=enabled,因为您无法创建默认的IstioRevisionTag标签。应用istio-injection=enabled标签可防止 3.0 control plane 执行代理注入。 -
添加
istio.io/rev=ossm-3-v1-24-3标签:此标签可确保命名空间中的任何新创建或重启的 pod 连接到 OpenShift Service Mesh 3.0 代理。 添加
maistra.io/ignore-namespace: "true"标签:该标签禁用命名空间中 OpenShift Service Mesh 2.6 代理的 sidecar 注入。应用标签后,OpenShift Service Mesh 2.6 会停止注入此命名空间中的代理,OpenShift Service Mesh 3.0 都会注入任何新的代理。如果没有此标签,OpenShift Service Mesh 2.6 注入 Webhook 会尝试注入 pod,注入的 sidecar 代理会拒绝启动,因为它会具有 OpenShift Service Mesh 2.6 和 OpenShift Service Mesh 3.0 Container Network Interface (CNI)注解。注意应用
maistra.io/ignore-namespace标签后,在该命名空间中创建的任何新 pod 都连接到 OpenShift Service Mesh 3.0 代理。工作负载仍然可以相互通信,无论它们连接到哪个 control plane。
-
删除
使用以下选项之一重启工作负载:
要同时重启所有工作负载,以便新 pod 与 OpenShift Service Mesh 3.0 代理注入,请运行以下命令:
info应用程序的命令示例oc rollout restart deployments -n info
$ oc rollout restart deployments -n infoCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要单独重启每个工作负载,请对每个工作负载运行以下命令:
info应用程序的命令示例oc rollout restart deployments productpage-v1 -n info
$ oc rollout restart deployments productpage-v1 -n infoCopy to Clipboard Copied! Toggle word wrap Toggle overflow
运行以下命令等待
productpage应用程序重启:oc rollout status deployment productpage-v1 -n info
$ oc rollout status deployment productpage-v1 -n infoCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令,验证新的 control plane 是否管理预期的工作负载:
istioctl ps -n info
$ istioctl ps -n infoCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出显示
productpage-v1部署是重启并使用 3.0 代理注入的唯一部署。即使有不同版本的代理,服务之间的通信仍可以正常工作。如果 2.6 安装包含额外的命名空间,请现在迁移下一个命名空间。
注意仅在 2.6 control plane 卸载后删除
maistra.io/ignore-namespace="true"标签。
后续步骤
如果使用网关,则必须在完成迁移过程前迁移它们。
如果不使用网关,并且已验证了集群范围的迁移,请创建一个默认修订标签和重新标记命名空间。
4.1.5.2. 创建默认修订标签并重新标记命名空间 复制链接链接已复制到粘贴板!
在使用 Istio 注入标签完成 OpenShift Service Mesh 2 到 OpenShift Service Mesh 3 后,您可以创建默认修订标签并重新标记命名空间。
info 应用用作示例。
先决条件
- 已使用 Istio 注入标签完成 OpenShift Service Mesh 2 到 OpenShift Service Mesh 3 集群范围的迁移过程。
流程
创建名为
rev-tag.yaml的 YAML 文件,该文件定义了IstioRevisionTag资源:IstioRevisionTag资源示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来应用 YAML 文件:
oc apply -f rev-tag.yaml
$ oc apply -f rev-tag.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,验证
IstioRevisionTag资源的状态:oc get istiorevisiontags
$ oc get istiorevisiontagsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NNAME STATUS IN USE REVISION AGE default NotReferencedByAnything False ossm-3-v1-24-3 18s
NNAME STATUS IN USE REVISION AGE default NotReferencedByAnything False ossm-3-v1-24-3 18sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在
info命名空间中添加istio-injection=enabled标签,并运行以下命令来删除istio.io/rev标签:oc label ns info istio-injection=enabled istio.io/rev-
$ oc label ns info istio-injection=enabled istio.io/rev-Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意仅在 2.6 control plane 卸载后删除
maistra.io/ignore-namespace="true"标签。运行以下命令重启工作负载:
oc rollout restart deployments -n info
$ oc rollout restart deployments -n infoCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意对您要迁移的每个命名空间重复步骤 4 和 5。
验证
运行以下命令验证
IstioRevisionTag资源是否正在使用:oc get istiorevisiontags
$ oc get istiorevisiontagsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME STATUS IN USE REVISION AGE default Healthy True ossm-3-v1-24-3 28s
NAME STATUS IN USE REVISION AGE default Healthy True ossm-3-v1-24-3 28sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,确保预期的工作负载由新的 control plane 管理:
istioctl ps -n info
$ istioctl ps -n infoCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
后续步骤
您可以继续完成迁移并删除 OpenShift Service Mesh 2 资源。
在创建默认修订标签并重新标记命名空间前,您必须迁移所有剩余的工作负载命名空间,包括网关。
4.1.6. 使用带有 cert-manager 的 Istio 注入标签迁移集群范围的部署 复制链接链接已复制到粘贴板!
您可以使用 istio-injection=enabled 标签 和默认 修订标签为集群范围的部署执行 gradual 迁移 data plane 命名空间。
您必须重新标记所有 data plane 命名空间。但是,在迁移过程中在任何时间点上重启任何工作负载是安全的。
info 应用程序用作 Istio 资源的示例。如需有关 OpenShift Service Mesh 2 ServiceMeshControlPlane 资源和 OpenShift Service Mesh 3 Istio 资源之间的配置差异的更多信息,请参阅 "ServiceMeshControlPlane 资源到 Istio 资源字段映射"。
先决条件
- 您已部署了 OpenShift Container Platform 4.14 或更高版本。
-
以具有
cluster-admin角色的用户身份登录到 OpenShift Container Platform Web 控制台。 - 您已完成了迁移前检查清单。
- 已安装 OpenShift Service Mesh 2.6.9 Operator。
- 已安装 OpenShift Service Mesh 3 Operator。
-
您已创建了
IstioCNI资源。 -
已安装
istioctl工具。 - 在集群范围的部署中,您使用 cert-manager 和 istio-csr 工具。
-
OpenShift Service Mesh 2.6.9
ServiceMeshControlPlane资源使用 cert-manager 工具进行配置 -
已安装
info应用程序。
流程
确认 OpenShift Service Mesh 2
ServiceMeshControlPlane资源配置了 cert-manager 工具。ServiceMeshControlPlanecert-manager 配置示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,更新
istio-csr部署,使其包含 OpenShift Service Mesh 3 control plane:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 在创建
Istio资源 前,app.istio.revisions字段必须包含 OpenShift Service Mesh 3.0 control plane 修订版本,以便代理可以正确地与 OpenShift Service Mesh 3.0 control plane 通信。
运行以下命令,识别包含 2.6 control plane 的命名空间:
oc get smcp -A
$ oc get smcp -ACopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAMESPACE NAME READY STATUS PROFILES VERSION AGE istio-system install-istio-system 6/6 ComponentsReady ["default"] 2.6.6 115m
NAMESPACE NAME READY STATUS PROFILES VERSION AGE istio-system install-istio-system 6/6 ComponentsReady ["default"] 2.6.6 115mCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建名为
ossm-3.yaml的 YAML 文件。此流程在与 2.6 安装的ServiceMeshControlPlane资源相同的命名空间中为 3.0 安装创建 Istio 资源。注意在以下示例中,Istio control plane 可以访问集群中的所有命名空间。如果要限制控制计划可访问的命名空间,您必须定义发现选择器。您必须匹配计划从版本 2.6 迁移的所有数据平面命名空间。
Istio资源示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意要防止 OpenShift Service Mesh 3.0 control plane 在应用了
istio-injection=enabled标签的命名空间中注入代理,且仍然由 OpenShift Service Mesh 2.6 control plane 管理,请不要在以下步骤中使用默认名称,且不在以下步骤中创建默认修订标签。您可以在此流程稍后创建默认修订标签。运行以下命令来应用 YAML 文件:
oc apply -f ossm-3.yaml
$ oc apply -f ossm-3.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令,验证新的
istiod资源是否使用现有的 root 证书:oc logs deployments/istiod-ossm-3-v1-24-3 -n istio-system | grep 'Load signing key and cert from existing secret'
$ oc logs deployments/istiod-ossm-3-v1-24-3 -n istio-system | grep 'Load signing key and cert from existing secret'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
2024-12-18T08:13:53.788959Z info pkica Load signing key and cert from existing secret istio-system/istio-ca-secret
2024-12-18T08:13:53.788959Z info pkica Load signing key and cert from existing secret istio-system/istio-ca-secretCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.1.6.1. 使用带有 cert-manager 的 Istio 注入标签迁移工作负载 复制链接链接已复制到粘贴板!
现在,您可以将工作负载从 OpenShift Service Mesh 2.6 control plane 迁移到 OpenShift Service Mesh 3.0 control plane。
您可以单独迁移工作负载和网关,并以任何顺序迁移。如需更多信息,请参阅"缓解网关"。
流程
运行以下命令,查找 OpenShift Service Mesh 3.0 control plane 的当前
IstioRevision资源:oc get istios
$ oc get istiosCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME REVISIONS READY IN USE ACTIVE REVISION STATUS VERSION AGE ossm-3 1 1 0 ossm-3-v1-24-3 Healthy v1.24.3 30s
NAME REVISIONS READY IN USE ACTIVE REVISION STATUS VERSION AGE ossm-3 1 1 0 ossm-3-v1-24-3 Healthy v1.24.3 30sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 复制
ACTIVE REVISION值,以在下一步中用作istio.io/rev标签。注意修订版本的命名格式取决于您为
Istio实例选择的升级策略。运行以下命令,更新 data plane 命名空间中的注入标签:
oc label ns info istio.io/rev=ossm-3-v1-24-3 maistra.io/ignore-namespace="true" istio-injection- --overwrite=true
$ oc label ns info istio.io/rev=ossm-3-v1-24-3 maistra.io/ignore-namespace="true" istio-injection- --overwrite=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc label命令执行以下操作:-
删除
istio-injection标签:此标签可防止 3.0 control plane 注入代理。istio-injection标签优先于istio.io/rev标签。您必须临时删除istio-injection=enabled,因为您无法创建默认的IstioRevisionTag标签。应用istio-injection=enabled标签可防止 3.0 control plane 执行代理注入。 -
添加
istio.io/rev=ossm-3-v1-24-3标签:此标签可确保命名空间中的任何新创建或重启的 pod 连接到 OpenShift Service Mesh 3.0 代理。 添加
maistra.io/ignore-namespace: "true"标签:该标签禁用命名空间中 OpenShift Service Mesh 2.6 代理的 sidecar 注入。应用标签后,OpenShift Service Mesh 2.6 会停止注入此命名空间中的代理,OpenShift Service Mesh 3.0 都会注入任何新的代理。如果没有此标签,OpenShift Service Mesh 2.6 注入 Webhook 会尝试注入 pod,注入的 sidecar 代理会拒绝启动,因为它会具有 OpenShift Service Mesh 2.6 和 OpenShift Service Mesh 3.0 Container Network Interface (CNI)注解。注意应用
maistra.io/ignore-namespace标签后,在该命名空间中创建的任何新 pod 都连接到 OpenShift Service Mesh 3.0 代理。工作负载仍然可以相互通信,无论它们连接到哪个 control plane。
-
删除
使用以下选项之一重启工作负载:
要同时重启所有工作负载,以便新 pod 与 OpenShift Service Mesh 3.0 代理注入,请运行以下命令:
info应用程序的命令示例oc rollout restart deployments -n info
$ oc rollout restart deployments -n infoCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要单独重启每个工作负载,请对每个工作负载运行以下命令:
info应用程序的命令示例oc rollout restart deployments productpage-v1 -n info
$ oc rollout restart deployments productpage-v1 -n infoCopy to Clipboard Copied! Toggle word wrap Toggle overflow
运行以下命令等待
productpage应用程序重启:oc rollout status deployment productpage-v1 -n info
$ oc rollout status deployment productpage-v1 -n infoCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令,验证新的 control plane 是否管理预期的工作负载:
istioctl ps -n info
$ istioctl ps -n infoCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出显示
productpage-v1部署是重启并使用 3.0 代理注入的唯一部署。即使有不同版本的代理,服务之间的通信仍可以正常工作。如果 2.6 安装包含额外的命名空间,请现在迁移下一个命名空间。
注意仅在 2.6 control plane 卸载后删除
maistra.io/ignore-namespace="true"标签。
后续步骤
如果使用网关,则必须在完成迁移过程前迁移它们。
如果不使用网关,并且已验证了集群范围的迁移,请创建一个默认修订标签和重新标记命名空间。
在创建默认修订标签并重新标记命名空间前,您必须迁移所有剩余的工作负载命名空间,包括网关。
4.1.6.2. 创建默认修订标签并使用证书管理器重新标记命名空间 复制链接链接已复制到粘贴板!
在使用 Istio 注入标签完成 OpenShift Service Mesh 2 到 OpenShift Service Mesh 3 后,您可以创建默认修订标签并重新标记命名空间。
info 应用用作示例。
先决条件
- 已使用 Istio 注入标签完成 OpenShift Service Mesh 2 到 OpenShift Service Mesh 3 集群范围的迁移过程。
流程
创建名为
rev-tag.yaml的 YAML 文件,该文件定义了IstioRevisionTag资源:IstioRevisionTag资源示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来应用 YAML 文件:
oc apply -f rev-tag.yaml
$ oc apply -f rev-tag.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,验证
IstioRevisionTag资源的状态:oc get istiorevisiontags
$ oc get istiorevisiontagsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NNAME STATUS IN USE REVISION AGE default NotReferencedByAnything False ossm-3-v1-24-3 18s
NNAME STATUS IN USE REVISION AGE default NotReferencedByAnything False ossm-3-v1-24-3 18sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在
info命名空间中添加istio-injection=enabled标签,并运行以下命令来删除istio.io/rev标签:oc label ns info istio-injection=enabled istio.io/rev-
$ oc label ns info istio-injection=enabled istio.io/rev-Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意仅在 2.6 control plane 卸载后删除
maistra.io/ignore-namespace="true"标签。运行以下命令重启工作负载:
oc rollout restart deployments -n info
$ oc rollout restart deployments -n infoCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意对您要迁移的每个命名空间重复步骤 4 和 5。
验证
运行以下命令验证
IstioRevisionTag资源是否正在使用:oc get istiorevisiontags
$ oc get istiorevisiontagsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME STATUS IN USE REVISION AGE default Healthy True ossm-3-v1-24-3 28s
NAME STATUS IN USE REVISION AGE default Healthy True ossm-3-v1-24-3 28sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,确保预期的工作负载由新的 control plane 管理:
istioctl ps -n info
$ istioctl ps -n infoCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.1.7. 使用简单的迁移方法迁移集群范围的部署 复制链接链接已复制到粘贴板!
您可以使用简单的迁移方法,对集群范围的部署进行 gradual 迁移 data plane 命名空间。在 OpenShift Service Mesh 2.6.9 安装中,如果 istio-injection=enabled 标签已应用到 data plane 命名空间,则简单的迁移方法是从 OpenShift Service Mesh 2 安装迁移到 OpenShift Service Mesh 3 安装的最简单方法。
不应在生产环境中使用简单的迁移方法。
使用简单的迁移方法从 OpenShift Service Mesh 2 迁移到 OpenShift Service Mesh 3 可能会导致对网格上运行的服务的流量中断。在不影响流量的情况下,有两种方法执行集群范围的迁移。如需更多信息,请参阅 "使用 istio injection label" 或 "Migrating a cluster-wide deployment" 来迁移集群范围的部署。
info 应用程序用作 Istio 资源的示例。如需有关 OpenShift Service Mesh 2 ServiceMeshControlPlane 资源和 OpenShift Service Mesh 3 Istio 资源之间的配置差异的更多信息,请参阅 "ServiceMeshControlPlane 资源到 Istio 资源字段映射"。
先决条件
- 您已部署了 OpenShift Container Platform 4.14 或更高版本。
-
以具有
cluster-admin角色的用户身份登录到 OpenShift Container Platform Web 控制台。 - 您已完成了迁移前检查清单。
- 已安装 OpenShift Service Mesh 2.6.9 Operator。
- 已安装 OpenShift Service Mesh 3 Operator。
-
您已创建了
IstioCNI资源。 -
已安装
istioctl工具。 - 您正在运行集群范围的 Service Mesh control plane 资源。
-
已安装
info应用程序。
流程
运行以下命令,识别包含 2.6 control plane 的命名空间:
oc get smcp -A
$ oc get smcp -ACopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAMESPACE NAME READY STATUS PROFILES VERSION AGE istio-system install-istio-system 6/6 ComponentsReady ["default"] 2.6.6 115m
NAMESPACE NAME READY STATUS PROFILES VERSION AGE istio-system install-istio-system 6/6 ComponentsReady ["default"] 2.6.6 115mCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建名为
ossm-3.yaml的 YAML 文件。此流程在与 2.6 安装的ServiceMeshControlPlane资源相同的命名空间中为 3.0 安装创建 Istio 资源。注意在以下示例中,Istio control plane 可以访问集群中的所有命名空间。如果要限制 control plane 可访问的命名空间,您必须定义发现选择器。您必须匹配计划从版本 2.6 迁移的所有数据平面命名空间。
Istio资源示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果 Istio 资源命名为
default,且安装使用InPlace更新策略,您可以在不创建IstioRevisionTag标签的情况下使用istio-injection=enabled标签。如果将不同的名称用于 Istio 资源,或使用RevisionBased更新策略,您必须配置默认的IstioRevisionTag标签。如需更多信息,请参阅"创建默认修订标签并重新标记命名空间"。运行以下命令来应用 YAML 文件:
oc apply -f ossm-3.yaml
$ oc apply -f ossm-3.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意应用 YAML 文件后,每当工作负载重启时,OpenShift Service Mesh 2.6 和 OpenShift Service Mesh 3.0 control plane 将尝试将 side cars 注入到带有
istio-injection=enabled标签的命名空间中的所有 pod,以及应用了sidecar.istio.io/inject="true"标签的所有 pod。这会导致流量中断。要防止流量中断,只有在添加了maistra.io/ignore-namespace: "true"标签后重启工作负载。
验证
运行以下命令,验证新的
istiod资源是否使用现有的 root 证书:oc logs deployments/istiod -n istio-system | grep 'Load signing key and cert from existing secret'
$ oc logs deployments/istiod -n istio-system | grep 'Load signing key and cert from existing secret'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
2024-12-18T08:13:53.788959Z info pkica Load signing key and cert from existing secret istio-system/istio-ca-secret
2024-12-18T08:13:53.788959Z info pkica Load signing key and cert from existing secret istio-system/istio-ca-secretCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.1.7.1. 使用简单迁移方法迁移工作负载 复制链接链接已复制到粘贴板!
迁移集群范围的部署后,您可以将工作负载从 OpenShift Service Mesh 2.6 control plane 迁移到 OpenShift Service Mesh 3.0 control plane。
您可以单独迁移工作负载和网关,并以任何顺序迁移。如需更多信息,请参阅"缓解网关"。
步骤
运行以下命令,将
maistra.io/ignore-namespace: "true"标签添加到 data plane 命名空间:oc label ns info maistra.io/ignore-namespace="true"
$ oc label ns info maistra.io/ignore-namespace="true"Copy to Clipboard Copied! Toggle word wrap Toggle overflow maistra.io/ignore-namespace: "true"标签禁用命名空间中 OpenShift Service Mesh 2.6 代理的 sidecar 注入。应用标签后,OpenShift Service Mesh 2.6 会停止注入此命名空间中的代理,OpenShift Service Mesh 3.0 都会注入任何新的代理。如果没有此标签,OpenShift Service Mesh 2.6 注入 Webhook 会尝试注入 pod,注入的 sidecar 代理会拒绝启动,因为它具有 OpenShift Service Mesh 2.6 和 OpenShift Service Mesh 3.0 Container Network Interface (CNI)注解。注意应用
maistra.io/ignore-namespace标签后,任何在命名空间中创建或重启的新 pod 都会连接到 OpenShift Service Mesh 3.0 代理。工作负载仍然可以相互通信,无论它们连接到哪个 control plane。使用以下选项之一重启工作负载:
要同时重启所有工作负载,以便新 pod 与 OpenShift Service Mesh 3.0 代理注入,请运行以下命令:
info应用程序的命令示例oc rollout restart deployments -n info
$ oc rollout restart deployments -n infoCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要单独重启每个工作负载,请对每个工作负载运行以下命令:
info应用程序的命令示例oc rollout restart deployments productpage-v1 -n info
$ oc rollout restart deployments productpage-v1 -n infoCopy to Clipboard Copied! Toggle word wrap Toggle overflow
运行以下命令等待
productpage应用程序重启:oc rollout status deployment productpage-v1 -n info
$ oc rollout status deployment productpage-v1 -n infoCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令,验证新的 control plane 是否管理预期的工作负载:
istioctl ps -n info
$ istioctl ps -n infoCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出显示
productpage-v1部署是重启并使用 3.0 代理注入的唯一部署。即使有不同版本的代理,服务之间的通信仍可以正常工作。如果 2.6 安装包含额外的命名空间,请现在迁移下一个命名空间。
注意仅在 2.6 control plane 卸载后删除
maistra.io/ignore-namespace="true"标签。
后续步骤
如果使用网关,则必须在完成迁移过程前迁移它们。
如果没有使用网关,您可以完成迁移。