Upgrade Kubernetes Cluster¶
This page outlines the process for upgrading the Cluster Control Plane and Node Pool for OpenTofu-based infrastructure deployments.
When to upgrade¶
Each new release of the OpenTofu script artifacts may specify a different version of the Managed Kubernetes Service for each supported cloud provider: AWS (Amazon Web Services), ACS (Azure Cloud Services) or GCP (Google Cloud Platform).
Because Kubernetes version upgrades can introduce breaking changes, simply re-running deploy-cluster.sh may fail or produce unexpected results. To avoid this, scripts/terraform.sh provides a targeted upgrade command that focuses specifically on updating the Control Plane and Node Pool, without affecting the rest of the infrastructure.
You can also use this process to upgrade the Cluster version independently of the kxi-terraform artifact version.
Upgrade the Control Plane and Node Pool¶
-
Switch to your local
kxi-terraformdirectory. -
Run the
manage-cluster.shscript../scripts/manage-cluster.sh.\scripts\manage-cluster.bat -
Authenticate to your cloud provider.
./scripts/terraform.sh authenticate -
Run the
upgradecommand, giving it the Kubernetes version you're upgrading to:./scripts/terraform.sh upgrade cluster-version <version>This updates the
cluster_versionvariable, runstofu init, and — where required — taints the affected node group so it gets replaced (see the per-cloud notes below). It then plans the Control Plane and default Node Pool changes together, shows you the plan, and applies it once you confirm.The default Node Pool is tainted automatically before planning. The plan shows the Node Group being replaced alongside the Control Plane being updated in-place.
No taint is required. The Node Pool upgrade is driven by a
local-execprovisioner that calls the Azure CLI directly and shows as an in-place update in the plan.No taint is required. Both the Control Plane and default Node Pool upgrade in-place.
-
If you have enabled the dedicated rook-ceph storage Node Pool (
enable_rook_ceph_node_pool = true), upgrade it the same way after the previous step completes:./scripts/terraform.sh upgrade rook-ceph-nodepoolNote
This is currently supported on AWS only — there is no dedicated rook-ceph Node Pool option on ACS or GCP.
This taints and replaces the dedicated rook-ceph Node Group, picking up the
cluster_versionset in the previous step.