Upgrade

Upgrading Istio in ambient mode involves upgrading the control plane and data plane separately. Because the data plane does not run as a sidecar, upgrading an ambient mesh does not require restarting user workloads. In most cases, the upgrade will cause only minimal interruption to traffic.

Considerations for upgrade

Availability during upgrades

Istio’s ambient mode supports moving application pods to an upgraded ztunnel proxy without a mandatory restart or reschedule of running application pods. However, upgrading ztunnel will cause any long-lived TCP connections on the upgraded node to reset, after a grace period. Because of this, it is possible to upgrade in-place with minimal downtime.

For more control over the upgrade process, you can use tags and revisions, or drain and cordon nodes before upgrading ztunnel on them.

Supported versions

The CNI node agent and ztunnel components are compatible with a control plane at the same version, or one version higher. This means you can only upgrade from one version to the next, and should upgrade the istiod chart before either.

Upgrading an ambient mesh

Check readiness for upgrade

Before upgrading Istio, download the corresponding new version of istioctl, and run istioctl x precheck to make sure the upgrade is compatible with your environment. The output should looks something like this:

$ 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/>

Update the Helm repository

Get the latest version of the Helm charts:

$ helm repo update istio

Upgrade the control plane

The base chart, which contains cluster-wide CRDs and roles, must be upgraded prior to upgrading the control plane.

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

The istiod chart should be upgraded next. If you have customized your istiod installation, reuse the values.yaml file.

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

Finally, the CNI node agent chart should be upgraded. Upgrading the Istio CNI node agent will not disrupt networking for running pods already in an ambient mesh, but no pods that are set to be added to the mesh will be successfully scheduled (or rescheduled) on the node until the upgrade is complete and the upgraded CNI node agent on the passes readiness checks.

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

Upgrade the data plane

Upgrading ztunnel in-place will briefly disrupt all ambient mesh traffic on the node. In practice, the disruption period is a very small window, primarily affecting long-running connections. During the upgrade, new connections will go to the new ztunnel instance. After a grace period, any connections active on the old instance will be terminated with a TCP RST.

Node cordoning and blue/green node pools are recommended to mitigate blast radius risk during production upgrades. See your Kubernetes provider documentation for details.

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

Waypoints and gateways are workloads in the cluster, managed by istiod, and they will be upgraded automatically.