使用 Helm 升级

按照本指南使用 Helm 对 Ambient 模式的安装进行升级和配置。本指南假设您已经使用之前的 Istio 版本执行了 Helm Ambient 模式安装

了解 Ambient 模式升级

所有 Istio 升级都涉及升级控制平面、数据平面和 Istio CRD。 由于 Ambient 数据平面分为两个组件, 即 ztunnel 和网关(包含 waypoint),因此升级涉及这些组件的单独步骤。 这里简要介绍了升级控制平面和 CRD, 但本质上与在 Sidecar 模式下升级这些组件的过程相同。

与 Sidecar 模式类似,网关可以使用修订标签来对 Gateway)升级,包括 waypoint 进行细粒度控制, 并可通过简单的控件随时回滚到 Istio 控制平面的旧版本。但是, 与 Sidecar 模式不同,ztunnel 作为 DaemonSet(每个节点的代理)运行, 这意味着 ztunnel 升级至少一次会影响整个节点。虽然这在许多情况下是可以接受的, 但具有长 TCP 连接的应用程序可能会中断。在这种情况下, 我们建议在升级给定节点的 ztunnel 之前使用节点封锁和排空。 为简单起见,本文档将演示 ztunnel 的就地升级,这可能涉及短暂的停机时间。

前提条件

准备升级

在升级 Istio 之前,我们建议下载新版本的 istioctl, 并运行 istioctl x precheck 以确保升级与您的 Ambient 兼容。输出应如下所示:

$ istioctl x precheck
✔ No issues found when checking the cluster. Istio is safe to install or upgrade!
  To get started, check out <https://istio.io/latest/docs/setup/getting-started/>

现在,更新 Helm 仓库:

$ helm repo update istio
无需进行就地升级的额外准备,继续下一步。

升级控制平面

基本组件

在部署新版本的控制平面之前, 必须升级集群范围的 Custom Resource Definitions(CRD):

$ helm upgrade istio-base istio/base -n istio-system

istiod 控制平面

Istiod 控制平面管理和配置在网格内路由流量的代理。以下命令将在当前实例旁边安装控制平面的新实例, 但不会引入任何新网关代理或 waypoint,也不会接管现有代理的控制权。

如果您已经定制了 istiod 安装,则可以重用以前升级或安装中的 values.yaml 文件,以保持控制平面的一致性。

$ helm upgrade istiod istio/istiod -n istio-system --wait

CNI 节点代理

Istio CNI 节点代理负责检测添加到 Ambient 网格的 Pod, 通知 ztunnel 应在添加的 Pod 内建立代理端口, 并在 Pod 网络命名空间内配置流量重定向。它不是数据平面或控制平面的一部分。

1.x 版本的 CNI 与 1.x+1 和 1.x 版本的控制平面兼容。 这意味着,只要控制平面和 Istio CNI 的版本差异在一个小版本以内, 就必须在升级控制平面之前对其升级。

$ helm upgrade istio-cni istio/cni -n istio-system

升级数据平面

ztunnel DaemonSet

ztunnel DaemonSet 是节点代理组件。 1.x 版本的 ztunnel 与 1.x+1 和 1.x 版本的控制平面兼容。这意味着, 只要控制平面的版本差异在一个小版本以内,就必须在升级 ztunnel 之前升级控制平面。 如果您之前已自定义 ztunnel 安装,则可以重用以前升级或安装中的 values.yaml 文件, 以保持数据平面的一致性。

$ helm upgrade ztunnel istio/ztunnel -n istio-system --wait

对手动部署的网关 Chart 进行升级(可选)

必须使用 Helm 单独升级手动部署Gateway

$ helm upgrade istio-ingress istio/gateway -n istio-ingress
这些信息有用吗?
您是否有更多建议和改进意见?

感谢您的反馈!