使用 RevisionBased 策略和 IstioRevisionTag 的 Istio
目录
使用 RevisionBased 策略和 IstioRevisionTag 安装 Istio操作步骤使用 RevisionBased 策略和 IstioRevisionTag 更新 Istio 控制平面前提条件操作步骤验证使用 RevisionBased 策略和 IstioRevisionTag 安装 Istio
您可以使用 RevisionBased 更新策略安装 Istio 控制平面、IstioRevisionTag 资源、Istio CNI 以及 Bookinfo 演示应用。
您可以通过以下章节了解更新流程。如果集群中已经包含 Istio 部署,可以跳过此安装步骤。
操作步骤
-
通过运行以下命令创建
istio-cni和istio-system命名空间: -
使用所需版本安装 Istio CNI 插件。以下示例配置在
istio-cni命名空间中创建一个名为 default 的IstioCNI资源: -
使用
RevisionBased更新策略部署 Istio 控制平面。以下示例配置在istio-system命名空间中创建一个名为default的Istio资源:示例配置
-
创建一个
IstioRevisionTag资源。下面的示例 YAML 展示了如何创建一个名为default的资源:示例配置
确保
targetRef字段指向正确的Istio资源。在示例中,IstioRevisionTag配置为引用名称为default的Istio资源。 -
通过运行以下命令获取
IstioRevision名称:示例输出
IstioRevision名称格式为<istio_resource_name>-<version>。 -
在集群中设置应用工作负载。例如,您可以将
bookinfo示例应用部署到bookinfo命名空间。a. 使用以下命令创建
bookinfo命名空间:b. 给
bookinfo命名空间打标签以启用自动 sidecar 注入。使用以下命令:c. 通过执行以下命令将
bookinfo应用 Pod 部署到bookinfo命名空间: -
使用以下命令检查
IstioRevisionTag资源:示例输出
由于活动工作负载和
bookinfo命名空间均引用该标签,IN USE字段显示为True。 -
通过运行以下命令确认代理版本与控制平面版本一致:
VERSION列应与控制平面版本匹配。示例输出
使用 RevisionBased 策略和 IstioRevisionTag 更新 Istio 控制平面
使用 Istio 的 RevisionBased 更新策略时,可以使用 IstioRevisionTag 资源为特定的 IstioRevision 打标签。这样可以将工作负载附加到该版本,而无需修改命名空间或 Pod 上的 istio.io/rev 标签。
前提条件
- 您已以 cluster-admin 身份登录 Alauda Container Platform Web 控制台。
- 您已安装 Alauda Service Mesh v2 Operator,并部署了 Istio。
- 您已安装 Alauda Container Platform 的 Multus 网络插件,且 kube-ovn 版本必须为 v4.1.5 或更高。
- 您已在本地机器上安装
istioctl。 - 您已将 Istio 控制平面配置为使用
RevisionBased更新策略。在本示例中,名为default的Istio资源部署在istio-system命名空间。 - 您已创建
IstioRevisionTag资源,且targetRef字段正确指向所需的Istio资源。 - 您已安装所需版本的 Istio CNI 插件。在本示例中,名为
default的IstioCNI资源部署在istio-cni命名空间。 - 您已给
bookinfo命名空间打标签以启用 sidecar 注入。 - 您已在集群中运行应用工作负载。本示例中,bookinfo 应用部署在
bookinfo命名空间。 - 您已确认
IstioRevisionTag资源的InUse字段为true。
操作步骤
-
修改
Istio资源中的版本。例如,要更新到 Istio1.28.3,通过运行以下命令将 spec.version 字段设置为v1.28.3:Istio CR 中的版本更新
Service Mesh v2 Operator 会在旧版本控制平面旁边部署新版本控制平面。Sidecar 仍然连接到旧控制平面。
-
确认新的修订版本的
Istio和IstioRevision资源均已就绪。a. 通过运行以下命令确认
Istio资源已就绪:示例输出
b. 通过运行以下命令确认
IstioRevision资源已就绪:示例输出
c. 通过运行以下命令确认
IstioRevisionTag资源已就绪:示例输出
-
通过运行以下命令确认有两个控制平面 Pod 正在运行,每个修订版本各一个:
示例输出
-
通过运行以下命令确认工作负载 sidecar 仍连接到旧控制平面:
示例输出
VERSION列应与旧控制平面版本匹配。 -
通过运行以下命令重启应用工作负载,以便注入新版本的 sidecar:
验证
-
通过运行以下命令验证新版本 sidecar 是否正在运行:
VERSION列应与新控制平面版本匹配。 -
验证旧控制平面、
Istio和IstioRevision资源是否已被删除。a. 通过运行以下命令验证旧控制平面是否已删除:
b. 通过运行以下命令验证
Istio资源是否已删除:c. 通过运行以下命令验证
IstioRevision资源是否已删除:
Alauda Service Mesh v2 Operator 会在 spec.updateStrategy.inactiveRevisionDeletionGracePeriodSeconds 字段定义的宽限期过后删除旧的 IstioRevision 资源及其关联的控制平面。默认宽限期为 30 秒。
您可以增加宽限期,以便在移除先前版本之前有足够时间测试新控制平面。在金丝雀升级期间设置更高的值,以确保工作负载稳定后再完成切换。