1.3. 关于基于修订的策略
通常,使用 RevisionBased
策略执行的更新会运行 control plane 的两个修订。通过此功能,您可以逐步将工作负载从旧的 control plane 迁移到新的 control plane,从而使 Canary 升级成为可能。RevisionBased
策略还允许您通过多个次版本进行更新。
1.3.1. 选择 RevisionBased strategy
要使用 RevisionBased
策略部署 Istio,请使用以下 spec.updateStrategy 值
创建 Istio 资源:
选择 RevisionBased 策略的规格示例
kind: Istio spec: version: 1.20.0 updateStrategy: RevisionBased
为 Istio 资源选择策略后,Operator 会创建一个新的 IstioRevision
资源,其名称为 <istio resource name>-<version>。
1.3.2. 使用基于 Revision 的策略将工作负载附加到 control plane
要使用 RevisionBased
策略将工作负载附加到部署的 control plane,您必须将 istio.io/rev 命名空间
标签设置为 IstioRevision
的名称。另外,您可以将标签应用到工作负载 pod。
1.3.3. 执行基于修订的更新
当使用 RevisionBased
策略更新 Istio 时,您可以一次递增多个次版本,因为现有的 sidecar 不会自动连接到 control plane 的新修订版本。相反,您必须手动将工作负载移到新的 control plane。
先决条件
- 已安装 Red Hat OpenShift Service Mesh Operator 并部署了 Istio。
流程
更改 Istio 资源中的版本:
kind: Istio spec: version: 1.20.2 updateStrategy: type: RevisionBased
Service Mesh Operator 部署 control plane 的新版本,以及 control plane 的旧版本。sidecar 仍然连接到旧的 control plane。
确认 control plane 的两个修订版本正在运行并就绪:
$ oc get istiorevisions
-
通过将应用程序命名空间中的
istio.io/rev
标签或 pod 更新至新 control plane 的修订名称,将工作负载移到新的 control plane 中。 重启应用程序工作负载,以便注入新版本的 sidecar。
$ oc rollout restart <deployment>