使用 RevisionBased 策略的 Istio
目录
使用 RevisionBased 策略安装 Istio操作步骤使用 RevisionBased 策略更新 Istio 控制平面前提条件操作步骤验证从开发环境中移除 RevisionBased 更新资源使用 RevisionBased 策略安装 Istio
您可以使用 RevisionBased 更新策略安装 Istio 控制平面、Istio CNI 和 Bookinfo 示例应用。
您可以使用以下部分了解更新过程。如果集群已包含 Istio 部署,则可以跳过此安装步骤。
操作步骤
-
运行以下命令创建
istio-cni和istio-system命名空间: -
安装所需版本的 Istio CNI 插件。以下示例配置会在
istio-cni命名空间中创建名为 default 的IstioCNI资源: -
使用
RevisionBased更新策略部署 Istio 控制平面。以下示例配置会在istio-system命名空间中创建名为default的Istio资源:示例配置
spec.values.global.proxy.seccompProfile设置使注入的 sidecar 满足RestrictedPod Security Admission 配置文件的要求,该配置文件会在本操作步骤的后续部分由bookinfo命名空间强制执行。有关更多信息,请参阅 Pod Security Admission。 -
运行以下命令获取
IstioRevision名称:示例输出
IstioRevision名称的格式为<istio_resource_name>-<version>。 -
设置应用工作负载,使其在集群中运行。例如,可以将
bookinfo示例应用部署到bookinfo命名空间。a. 使用以下命令生成
bookinfo命名空间:b. 为
bookinfo命名空间添加标签,以启用自动 sidecar 注入。使用以下命令:c. 执行以下命令,将
bookinfo应用 pod 部署到bookinfo命名空间: -
使用以下命令检查
Istio资源:示例输出
部署应用后,
IN USE字段会显示1。 -
运行以下命令,确认代理版本与控制平面版本匹配:
VERSION列应与控制平面版本匹配。示例输出
使用 RevisionBased 策略更新 Istio 控制平面
使用 RevisionBased 策略更新 Istio 时,您可以一次跨越多个 minor 版本进行升级。Alauda Service Mesh v2 Operator 会针对 .spec.version 字段的每次更改创建一个新的 IstioRevision 资源,并部署相应的控制平面实例。要将工作负载迁移到新的控制平面,请在命名空间上设置 istio.io/rev 标签,使其与 IstioRevision 资源的名称匹配,然后重启工作负载。
前提条件
- 您已以 cluster-admin 身份登录 Alauda Container Platform Web 控制台。
- 您已部署 Istio,并将 Alauda Service Mesh v2 Operator 升级到提供新目标 Istio 版本的版本。有关更多信息,请参阅了解 Operator 更新和频道。
- 您已安装 Alauda Container Platform Networking for Multus 插件,并且 kube-ovn 必须为 v4.1.5 或更高版本。
- 集群运行的 Kubernetes 版本受目标 Istio 版本支持。Istio 1.30 支持 Kubernetes 1.32 到 1.36,Istio 1.28 支持 Kubernetes 1.30 到 1.34,因此运行 Kubernetes 1.30 或 1.31 的集群必须先升级,然后才能将 Istio 更新到 1.30。
- 您已在本地计算机上安装
istioctl。 - 您已将 Istio 控制平面配置为使用
RevisionBased更新策略。在此示例中,名为default的Istio资源部署在istio-system命名空间中。 - 您已安装所需版本的 Istio CNI 插件。在此示例中,名为
default的IstioCNI资源部署在istio-cni命名空间中。 - 您已为
bookinfo命名空间添加标签,以启用 sidecar 注入。 - 集群中正在运行应用工作负载。在此示例中,bookinfo 应用部署在
bookinfo命名空间中。
操作步骤
-
更改
Istio资源中的版本。例如,要更新到 Istio1.30.4,请运行以下命令,将 spec.version 字段设置为v1.30.4:Istio CR 中的版本更新
Service Mesh v2 Operator 会在旧版本控制平面旁部署新版本控制平面。sidecar 仍保持与旧控制平面的连接。
-
确认
Istio和IstioRevision资源均已使用新修订版本就绪。a. 运行以下命令,确认
Istio资源已就绪:示例输出
b. 运行以下命令,确认
IstioRevision资源已就绪:示例输出
-
运行以下命令,确认有两个控制平面 pod 正在运行,每个修订版本对应一个:
示例输出
-
运行以下命令,确认工作负载 sidecar 仍连接到之前的控制平面:
示例输出
VERSION列应与旧控制平面版本匹配。 -
将 Istio CNI 插件更新到与新控制平面修订版本相同的版本。
IstioCNI资源独立于Istio资源更新,更新后的 CNI 插件会在迁移期间继续为两个控制平面修订版本重定向流量。有关详细步骤,请参阅 Istio CNI 更新过程。 -
通过将应用命名空间或 pod 上的
istio.io/rev标签更新为修订版本名称,将工作负载迁移到新的控制平面。例如,运行以下命令更新整个命名空间的标签: -
运行以下命令重启应用工作负载,以便注入新版本的 sidecar:
验证
-
运行以下命令,验证新版本的 sidecar 正在运行:
VERSION列应与新控制平面版本匹配。 -
验证旧控制平面、
Istio和IstioRevision资源已删除。a. 运行以下命令,验证旧控制平面已删除:
b. 运行以下命令,验证
Istio资源已删除:c. 运行以下命令,验证
IstioRevision资源已删除:
在 spec.updateStrategy.inactiveRevisionDeletionGracePeriodSeconds 字段定义的宽限期到期后,Alauda Service Mesh v2 Operator 会删除旧的 IstioRevision 资源及其关联的控制平面。默认宽限期为 30 秒。
您可以延长宽限期,以留出足够时间测试新的控制平面,然后再移除之前的修订版本。在 canary 升级期间设置更高的值,以确保工作负载稳定后再完成迁移。
从开发环境中移除 RevisionBased 更新资源
完成验证和试验后,应移除 RevisionBased 更新配置,以清理开发环境并释放资源。
操作步骤
执行以下命令,移除所有 Istio 组件和示例应用: