使用 Helm 升级

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

Ambient 模式目前处于 Alpha 阶段。

请勿在生产环境中使用 Ambient 模式, 务必先行斟酌特性阶段定义再行使用 Ambient。

特别是,在 Alpha 版本中存在已知的性能、稳定性和安全问题。 还有计划中的重大变更,包括一些会阻止升级的变更。

这些限制将在 Ambient 模式转入 Beta 版之前得到解决。

与 Sidecar 模式相比,Ambient 模式支持将应用程序 Pod 移动到已升级的数据平面, 而无需强制重新启动或重新编排正在运行的应用程序 Pod。 但是,升级数据平面短暂中断被升级节点上的所有工作负载流量, 并且 Ambient 模式当前不支持数据平面的金丝雀升级。

建议使用节点封锁和蓝/绿节点池来控制生产环境升级期间应用程序 Pod 流量中断的影响范围。 有关详细信息,请参阅您的 Kubernetes 提供商文档。

先决条件

  1. 更新 Helm 仓库:

    1. $ helm repo update istio

就地升级

您可以使用 Helm 升级工作流程在集群中就地升级 Istio。

在升级 Istio 之前,建议先运行 istioctl x precheck 命令以确保升级与您的环境兼容。

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

Helm 在执行升级时不会升级或删除 CRD。 由于此限制,在使用 Helm 升级 Istio 时需要执行额外的步骤。

手动升级 CRD 和 Istio Base Chart

  1. 升级 Kubernetes 自定义资源定义 (CRD):

    1. $ kubectl apply -f manifests/charts/base/crds
  2. 升级 Istio Base Chart:

    1. $ helm upgrade istio-base manifests/charts/base -n istio-system --skip-crds

升级 Istio Discovery 组件

Istiod 是管理和配置代理以在 Ambient 网格中路由流量的控制平面组件。

  1. $ helm upgrade istiod istio/istiod -n istio-system

升级 ztunnel 组件

ztunnel DaemonSet 是节点代理组件。

由于 Ambient 模式尚未稳定,以下声明不是兼容性保证,后续可能会变更或移除。 在达到稳定状态之前,此组件和/或控制平面可能会有破坏性变更,使得次要版本之间互不兼容。

只要 ztunnel 的版本差距不超过一个次要版本,1.x 版本总体上与 1.x+1 和 1.x 版本的控制平面兼容, 这意味着必须先升级控制平面,再升级 ztunnel。

就地升级 ztunnel 将短暂中断节点上的所有 Ambient Mesh 流量。 建议使用节点封锁和蓝/绿节点池来减轻生产环境升级期间的影响范围。 有关详细信息,请参阅您的 Kubernetes 提供商文档。

  1. $ 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 升级进行更严格的影响范围控制,则建议使用节点污染和/或节点警戒线。

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

升级 Gateway 组件(可选)

Gateway 组件管理 Ambient Mesh 边界之间的东西向和南北向数据平面流量, 以及 L7 数据平面的某些方面。

  1. $ helm upgrade istio-ingress istio/gateway -n istio-ingress

配置

要查看已被支持的配置选项和文档,请运行:

  1. $ helm show values istio/istiod

验证安装

验证工作负载状态

安装所有组件后,您可以使用以下命令检查 Helm 部署状态:

  1. $ helm list -n istio-system

您可以使用以下命令检查已部署的 Istio Pod 的状态:

  1. $ kubectl get pods -n istio-system

卸载

请参阅 Helm 安装指南中的卸载部分。