使用 Helm 升级
按照本指南使用 Helm 对 Ambient 模式的安装进行升级和配置。 本指南假设您已经使用之前的 Istio 次要版本或补丁版本执行了 Helm Ambient 模式安装。
与 Sidecar 模式相比,Ambient 模式支持将应用程序 Pod 移动到已升级的数据平面, 而无需强制重新启动或重新编排正在运行的应用程序 Pod。 但是,升级数据平面将短暂中断被升级节点上的所有工作负载流量, 并且 Ambient 模式当前不支持数据平面的金丝雀升级。
建议使用节点封锁和蓝/绿节点池来控制生产环境升级期间应用程序 Pod 流量中断的影响范围。 有关详细信息,请参阅您的 Kubernetes 提供商文档。
先决条件
更新 Helm 仓库:
$ helm repo update istio
就地升级
您可以使用 Helm 升级工作流程在集群中就地升级 Istio。
在升级 Istio 之前,建议先运行 istioctl x precheck
命令以确保升级与您的环境兼容。
$ 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 在执行升级时不会升级或删除 CRD。 由于此限制,在使用 Helm 升级 Istio 时需要执行额外的步骤。
手动升级 CRD 和 Istio Base Chart
升级 Kubernetes 自定义资源定义 (CRD):
$ kubectl apply -f manifests/charts/base/crds
升级 Istio Base Chart:
$ helm upgrade istio-base manifests/charts/base -n istio-system --skip-crds
升级 Istio Discovery 组件
Istiod 是管理和配置代理以在 Ambient 网格中路由流量的控制平面组件。
$ helm upgrade istiod istio/istiod -n istio-system
升级 ztunnel 组件
ztunnel DaemonSet 是节点代理组件。
由于 Ambient 模式尚未稳定,以下声明不是兼容性保证,后续可能会变更或移除。 在达到稳定状态之前,此组件和/或控制平面可能会有破坏性变更,使得次要版本之间互不兼容。
只要 ztunnel 的版本差距不超过一个次要版本,1.x 版本总体上与 1.x+1 和 1.x 版本的控制平面兼容, 这意味着必须先升级控制平面,再升级 ztunnel。
就地升级 ztunnel 将短暂中断节点上的所有 Ambient 模式流量。 建议使用节点封锁和蓝/绿节点池来减轻生产环境升级期间的影响范围。 有关详细信息,请参阅您的 Kubernetes 提供商文档。
$ helm upgrade ztunnel istio/ztunnel -n istio-system
升级 CNI 组件
Istio CNI 代理负责检测添加到 Ambient 网格的 Pod, 通知 ztunnel 应在添加的 Pod 内建立代理端口,并在 Pod 网络命名空间内配置流量重定向。 它不是数据平面或控制平面的一部分。
由于 Ambient 模式尚未稳定,以下声明不具备兼容性保证,可能会变更或移除。 在达到稳定状态之前,该组件和/或控制平面可能会受到破坏性变更,从而阻碍次要版本之间的兼容性。
CNI 1.x 版本通常与 1.x+1 和 1.x 版本的控制平面兼容, 这意味着控制平面必须在 Istio CNI 之前升级,需要它们之前的版本差异在一个次要版本之内。
将 Istio CNI 代理就地升级到兼容版本不会中断已成功添加到一个 Ambient 网格中正在运行 Pod 的网络, 但在节点上 Istio CNI 代理成功升级并完成就绪检查之前, 不会有任何 Ambient 捕获的 Pod 可以在节点上被成功调度(或重新调度)。 如果这是一个重大的中断问题,或者需要对 CNI 升级进行更严格的影响范围控制,则建议使用节点污染和/或节点警戒线。
$ helm upgrade istio-cni istio/cni -n istio-system
升级 Gateway 组件(可选)
Gateway 组件管理 Ambient 模式边界之间的东西向和南北向数据平面流量, 以及 L7 数据平面的某些方面。
$ helm upgrade istio-ingress istio/gateway -n istio-ingress
配置
要查看已被支持的配置选项和文档,请运行:
$ helm show values istio/istiod
验证安装
验证工作负载状态
安装所有组件后,您可以使用以下命令检查 Helm 部署状态:
$ helm list -n istio-system
您可以使用以下命令检查已部署的 Istio Pod 的状态:
$ kubectl get pods -n istio-system
卸载
请参阅 Helm 安装指南中的卸载部分。