使用 RevisionBased 策略和 IstioRevisionTag 的 Istio
目录
使用 RevisionBased 策略和 IstioRevisionTag 安装 Istio操作步骤使用 RevisionBased 策略和 IstioRevisionTag 更新 Istio 控制平面前提条件操作步骤验证从开发环境中移除 RevisionBased 更新资源使用 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资源:示例输出
IN USE字段显示为True,因为当前活动工作负载和bookinfo命名空间都引用了该 tag。 -
通过运行以下命令确认 proxy 版本与控制平面版本一致:
VERSION列应与控制平面版本匹配。示例输出
使用 RevisionBased 策略和 IstioRevisionTag 更新 Istio 控制平面
对于采用 RevisionBased 更新策略的 Istio,可以使用 IstioRevisionTag 资源为特定的 IstioRevision 打标签。这使您能够将工作负载绑定到该 revision,而无需修改命名空间或 Pod 上的 istio.io/rev 标签。
前提条件
- 您已使用 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 或更高版本。
- 您已在本地机器上安装
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.6,请通过运行以下命令将spec.version字段设置为v1.28.6:Istio CR 中的版本更新
Service Mesh v2 Operator 会在旧版本控制平面的旁边部署一个新版本的控制平面。sidecar 仍然连接到旧的控制平面。
-
确认
Istio和IstioRevision资源都已就绪,并且使用的是新的 revision。a. 通过运行以下命令确认
Istio资源已就绪:示例输出
b. 通过运行以下命令确认
IstioRevision资源已就绪:示例输出
c. 通过运行以下命令确认
IstioRevisionTag资源已就绪:示例输出
-
通过运行以下命令确认正在运行两个控制平面 Pod,每个 revision 一个:
示例输出
-
通过运行以下命令确认工作负载 sidecar 仍然连接到先前的控制平面:
示例输出
VERSION列应与旧的控制平面版本匹配。 -
将 Istio CNI 插件更新到与新控制平面 revision 相同的版本。
IstioCNI资源与Istio资源独立更新,并且更新后的 CNI 插件在迁移期间会继续为两个控制平面 revision 重定向流量。有关详细步骤,请参见 Istio CNI 更新过程。 -
重启应用工作负载,以便注入新的 sidecar 版本,运行以下命令:
验证
-
通过输入以下命令验证正在运行的是新的 sidecar 版本:
VERSION列应与新的控制平面版本匹配。 -
验证旧的控制平面、
Istio和IstioRevision资源已被删除。a. 通过运行以下命令验证旧的控制平面已被删除:
b. 通过运行以下命令验证
Istio资源已被删除:c. 通过运行以下命令验证
IstioRevision资源已被删除:
Alauda Service Mesh v2 Operator 会在 spec.updateStrategy.inactiveRevisionDeletionGracePeriodSeconds 字段定义的宽限期过期后,删除旧的 IstioRevision 资源以及关联的控制平面。默认宽限期为 30 秒。
您可以增大宽限期,以便在移除先前 revision 之前,有足够的时间测试新的控制平面。在金丝雀升级期间设置更高的值,可在完全切换之前确保工作负载稳定性。
从开发环境中移除 RevisionBased 更新资源
在完成验证和实验后,您应移除 RevisionBased 更新配置和 IstioRevisionTag 资源,以清理开发环境并释放资源。
操作步骤
执行以下命令以移除所有 Istio 组件和示例原生应用: