使用 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
这些信息有用吗?
您是否有更多建议和改进意见?

感谢您的反馈!