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"