更新 ambient 模式组件
本页面介绍如何在 ambient 模式下更新 Istio 控制平面、Istio CNI 插件和 ZTunnel 代理。这三个组件都使用 InPlace 更新策略,并且必须严格按照此顺序更新。控制平面更新后,Waypoint 代理会自动推出;相关验证步骤请参阅更新 Waypoint 代理。
目录
使用特定版本安装 ambient 模式操作步骤更新组件前提条件更新 Istio 控制平面更新 Istio CNI 插件更新 ZTunnel proxy验证 ambient 工作负载从开发环境中移除更新资源使用特定版本安装 ambient 模式
你可以在 ambient 模式下使用明确固定的版本安装 Istio 控制平面、Istio CNI 插件和 ZTunnel 代理,以便之后执行更新操作步骤。
本节用于让你从已知的起始版本开始逐步执行更新过程。如果集群已经在 ambient 模式下运行 Istio,请跳过本节。安装步骤与安装 Istio ambient 模式相同,不同之处在于每个资源都会将 spec.version 固定为较旧的版本。
操作步骤
-
创建
istio-cni、istio-system和ztunnel命名空间,并为每个命名空间添加istio-discovery=enabled标签,以便控制平面发现它们: -
使用起始版本创建
IstioCNI资源:- 固定
spec.version可定义更新操作步骤的起始版本。 reconcileIptablesOnStartup选项可让 CNI agent 在重启时检测并修复已运行 ambient pod 中不兼容的 iptables 规则,这正是升级会产生的情况。
- 固定
-
等待 Istio CNI pod 就绪:
-
使用相同的起始版本创建
Istio资源:InPlace是默认策略,因此此字段是可选的;此处显示它是为了明确指定策略。Ambient 模式不支持其他策略。
-
等待 Istio 控制平面就绪:
-
使用相同的起始版本创建
ZTunnel资源:- 与安装指南不同,此示例设置了
spec.version,以便下面的 ZTunnel 更新步骤可以从较旧的版本进行更新。
- 与安装指南不同,此示例设置了
-
等待 ZTunnel pod 就绪:
-
在集群中设置原生应用工作负载。例如,你可以将 Bookinfo 示例应用部署到
bookinfo命名空间中。以下步骤是在 ambient 模式下部署 Bookinfo 应用的精简版本。a. 创建
bookinfo命名空间,并添加istio-discovery=enabled标签,以便控制平面发现它:b. 部署 Bookinfo 应用:
c. 部署 Bookinfo 应用的各版本服务:
d. 将该命名空间中的所有工作负载加入 ambient mesh:
更新组件
前提条件
- 您已作为 cluster-admin 登录 Alauda Container Platform Web 控制台。
- 您已安装 Alauda Container Platform Networking for Multus 插件。
- kube-ovn 为 v4.1.5 或更高版本,并使用 overlay 网络。Ambient 模式不适用于 kube-ovn underlay 网络;请参阅 Ambient 模式不支持 kube-ovn underlay 网络。
- 您已将 Alauda Service Mesh Operator 升级到 2.1.2 或更高版本,并且 Operator 中提供了新的目标版本。有关更多信息,请参阅 了解 Operator 更新和 channel。
- Istio 已部署为 ambient 模式。在此示例中,
Istio、IstioCNI和ZTunnel资源的名称均为default。 - 您已在本地计算机上安装
istioctl。 - Application 工作负载已加入 ambient mesh。在此示例中,Bookinfo 应用运行在
bookinfo命名空间中;请参阅 以 ambient 模式部署 Bookinfo 应用。
更新 Istio 控制平面
-
修改
Istio资源中的版本。例如,要更新到 Istio1.28.6,请运行以下命令,将spec.version字段设置为v1.28.6:Operator 会使用新版本替换正在运行的控制平面。ZTunnel 和任何 waypoint proxy 会自动重新连接到新的 istiod 实例;Application pod 会继续运行,无需重启。
-
等待控制平面就绪:
-
确认控制平面报告了新版本:
示例输出
更新 Istio CNI 插件
仅在控制平面更新完成后更新 Istio CNI 插件,因为版本为 1.x 的 CNI 插件支持版本为 1.x 或 1.x+1 的控制平面。
-
将
IstioCNI资源的spec.version字段设置为与控制平面相同的版本: -
监视
istio-cni-nodeDaemonSet 的发布: -
等待
IstioCNI资源报告已就绪: -
确认 CNI 插件报告了新版本:
示例输出
有关 IstioCNI 资源及其更新行为的详细信息,请参阅 Istio CNI 更新过程。
更新 ZTunnel proxy
最后更新 ZTunnel proxy,确保控制平面和 CNI 插件都已运行新版本。
替换 ZTunnel pod 可能会重置该节点上的长时间运行 TCP 连接。如果工作负载保持长时间运行的连接,请在执行此步骤前查看 ZTunnel 更新过程,并选择适当的缓解措施。
-
将
ZTunnel资源的spec.version字段设置为与控制平面相同的版本: -
监视 ZTunnel DaemonSet 的发布:
NOTEDaemonSet 会逐节点替换 ZTunnel pod,以保持 mesh 连接可用,因此在较大的集群中,发布可能需要几分钟。
-
等待
ZTunnel资源报告已就绪: -
确认 ZTunnel proxy 报告了新版本:
示例输出
-
检查各节点上的 ZTunnel pod:
示例输出
验证 ambient 工作负载
所有组件运行新版本后,确认工作负载仍参与网格。
-
检查应用 pod 是否正在运行:
示例输出
-
确认 ZTunnel 仍在代理工作负载。加入 ambient 网格的 pod 会报告
HBONE协议:示例输出
-
通过从另一个 pod 调用服务,测试经由网格的连通性:
示例输出
如果部署了 waypoint proxy,请按照更新 waypoint proxy 中的说明进一步进行验证。
从开发环境中移除更新资源
在开发环境中完成更新操作步骤的验证后,移除示例应用和网格组件,以释放资源: