Capture KOTS Installer (KOTS)
When you restore a snapshot in a new cluster, the version of KOTS and its add-ons must match those of the original cluster. Capture each KOTS Installer that was used to create or update your clusters.
Why capture the kurl URL?
A hashed kurl URL (for example, https://kurl.sh/c601b1e) points to a website where you can get the installation script or Kubernetes airgap bundle. Both require you to install the same version of KOTS and add-ons. You must capture this kurl URL because the Replicated Channel URL that was used to install KOTS always pulls the latest KOTS installer that has been promoted. If you rerun the installer from the channel to enable an advanced option or you create a cluster to restore a snapshot, you might accidentally update the KOTS version and it's add-ons.
Note
Replicated Vendor maintains a history of every installer that has been promoted to a channel. If for any reason the kurl URL captured in this procedure doesn't work, it can be provided to Jama Software and we might be able to find a similar installer in our KOTS Installer History.
To capture the KOTS Installer:
Use the following installer resource information to create a .yaml file named installer.yaml:
cat <<EOT >> installer.yaml apiVersion: cluster.kurl.sh/v1beta1 kind: Installer metadata: name: latest EOT
Get all installer resources in your cluster, and copy down the name of the installer that you used to download it:
kubectl get installers
Gather the installer details, replacing the <installer-name> parameter:
kubectl get installers <installer-name> -o yaml
From the results, copy the spec section and paste it at the end of the installer.yaml file that you created.
The file looks similar to this example of a KOTS Installer:
apiVersion: cluster.kurl.sh/v1beta1 kind: Installer metadata: name: latest spec: certManager: version: 1.9.1 containerd: version: 1.6.24 contour: version: 1.25.2 ekco: version: 0.28.3 flannel: version: 0.22.3 kotsadm: applicationSlug: jama-k8s/standardkots version: 1.103.3 kubernetes: version: 1.27.6 metricsServer: version: 0.6.4 minio: version: 2023-09-30T07-02-29Z openebs: isLocalPVEnabled: true localPVStorageClassName: local version: 3.9.0 prometheus: version: 0.68.0-51.0.0 registry: version: 2.8.3 velero: version: 1.11.1
Send the installer.yaml file to the create installer API from Replicated to receive a hashed URL:
curl -X POST -H "Content-Type: text/yaml" --data-binary "@installer.yaml" \ https://kurl.sh/installer && echo ""
Save the kurl URL that is displayed. It looks similar to https://kurl.sh/c601b1e.