在 ambient 模式下更新 Alauda Service Mesh

在 ambient 模式下,您可以通过就地提升每个 mesh 组件资源的版本来更新 Alauda Service Mesh。Alauda Service Mesh v2 Operator 随后会用所请求的版本替换正在运行的组件。原生应用 pod 会切换到升级后的 ZTunnel proxy,而无需重启或重新调度,这与 sidecar 模式形成了关键的运维差异:在 sidecar 模式下,每个工作负载在获取新的 proxy 版本之前都必须先重启。

WARNING

ambient 模式仅支持 InPlace 更新策略。ZTunnel 采用集群级 singleton 架构:一个集群在任意时刻只运行一个 ZTunnel 实例。因此,不可能并行运行两个 ZTunnel 版本,这也使得无法使用 RevisionBased 策略进行金丝雀式升级。

NOTE

ambient 模式仍然是一个 Technology Preview 功能。有关安装说明,请参见 Istio ambient mode

更新顺序

按以下顺序更新 mesh 组件:

  1. Istio control plane — 在 Istio 资源中更改版本。
  2. Istio CNI — 将 IstioCNI 资源更改为相同版本。
  3. ZTunnel — 将 ZTunnel 资源更改为相同版本。

顺序很重要,因为存在受支持的版本偏移:版本 1.x 的 Istio CNI plugin 和 ZTunnel proxy 可以与版本为 1.x1.x+1 的 control plane 配合工作,但绝不能与更旧的 control plane 配合工作。先升级 control plane 可确保更新过程中出现的所有组件组合都处于受支持范围内。

有关逐步命令,请参见 Updating ambient mode components

更新期间的连接处理

在 ambient 模式下,与 istiod 建立 xDS 连接的是每个节点上的 ZTunnel proxy,而不是每个原生应用 pod。因此,更新 control plane 不需要重启任何原生应用 pod:ZTunnel 和 waypoint proxy 会自行重新连接到新的 control plane。

替换 ZTunnel pod 本身是唯一可能影响应用流量的步骤。由于 ZTunnel 在第 4 层代理 TCP 连接,它无法将已建立的连接交接给后继实例,因此,正在更新的节点上的长时间运行的 TCP 连接可能会被重置。要了解这种行为及其缓解选项,请参见 The ZTunnel update process

版本兼容性

在规划更新时,请遵循以下指导:

  • 尽可能保持 Istio control plane、Istio CNI 和 ZTunnel 处于相同版本。
  • 数据平面组件绝不能领先于 control plane 运行。将 waypoint proxies、Istio CNI plugin 和 ZTunnel 保持在 control plane 一个 minor version 范围内(相同版本或 n-1)。
  • 在更新生产集群之前,请先在非生产环境中测试目标版本组合。

高可用性

InPlace 更新会重启 control plane pod,这可能会短暂中断 mesh 配置下发。此建议同样适用于 ambient 模式:请为 istiod 运行多个副本,以尽量缩小影响窗口。有关详细信息,请参见 Istio High Availability