Skip to content

Airgap specific upgrade steps#

If you're using Mirantis k0rdent Enterprise in an airgapped environment you must take additional steps to ensure a successful upgrade.

Download and upload new airgap bundles#

Following these instructions, download all necessary bundles and move them to the airgapped environment.

You must upload the bundle before applying the Release object, or validation may fail.

Edit values to support new components#

As part of airgapped installation, you've used several overrides to specify the registry for all components. Before upgrading the new components, add these overrides by editing the Management object under .spec.core.kcm.config.

The most recent configuration (values) is located in the Installation section.

Make sure that the new values have been added, and if you did any customization, make sure that these customizations are located in the corresponding sections for the new version.

Warning

To avoid any issues or configuration changes all configuration changes must be additive.

Updating k0s binaries on the file server#

If you serve the k0s binary from a file server deployed in the management cluster (see Load the k0s binary), you must add the new version's binary to the file server before provisioning child clusters with the new version.

Warning

Do not remove or overwrite existing binaries. Clusters currently being provisioned may still be downloading the old binary. Keep all versions present until you are certain no active provisioning operations reference them.

Use the loader pod to copy the new binary into the existing PVC:

kubectl apply -f k0s-binary-loader.yaml
kubectl wait --for=condition=Ready pod/binary-loader -n k0s-fileserver --timeout=60s
kubectl exec -n k0s-fileserver binary-loader -- mkdir -p /data/k0rdent-enterprise
kubectl cp k0s-<new-version>-amd64 \
  k0s-fileserver/binary-loader:/data/k0rdent-enterprise/k0s-<new-version>-amd64
kubectl delete pod binary-loader -n k0s-fileserver

Replace <new-version> with the actual k0s version string, for example v1.36.0+k0s.1.

Verify the binary is served before proceeding with the cluster upgrade:

export EXTERNAL_IP="$(kubectl get svc k0s-fileserver -n k0s-fileserver -o jsonpath='{.status.loadBalancer.ingress[0].ip}')"
curl -I "http://$EXTERNAL_IP/k0rdent-enterprise/k0s-<new-version>-amd64"