How can I help an end user update Kubernetes in their embedded cluster when their Kubernetes version is more than two minor versions behind the version in my installer?

Background
Kubeadm can only update Kubernetes one minor version at a time (Kubernetes docs). kURL has support for upgrading two minor versions at a time. It does this by upgrading to the skipped minor version first and then upgrading again to the desired minor version. kURL can only skip one minor version at a time.

Currently, a vendor’s application release and their Kubernetes installer are promoted to a channel separately. The vendor portal does not include a history of Kubernetes installers promoted to a channel. The only installer available to end users is the installer that is currently promoted to the channel.

Scenario
If one of a vendor’s customers has not updated their cluster in a while, their Kubernetes version can fall behind quickly. If the vendor has updated their installer a number of times to use more recent Kubernetes versions, the customer can be more than two minor versions behind. In this case, running the installer promoted to the channel will not work because it will be unable to upgrade the customer by three or more minor versions. What can be done?

Solution
The best option is for the vendor to use the installer builder on kurl.sh to create an intermediate installer that will work for this customer. Running this installer can update the customer by one or two minor versions of Kubernetes (as well as any other add-on updates that might be needed). Generating an installer using the installer builder will provide a curl command that can be run on the cluster to perform the upgrade. Make sure that any flags passed to the original installer are added to this command too.

If the customer is more than four minor versions behind, the vendor can continue performing these intermediate upgrades until the Kubernetes version in the customer’s cluster is within two minor versions of the vendor’s promoted installer. At that point, the customer is able to run the installer that is promoted to the release channel, and they will be fully up to date.

It is not a good idea to temporarily promote another installer to the channel in order for the customer to use it. If any other customers attempt to use their embedded install command, they will use the new installer, which could have unexpected consequences. It’s better to perform the intermediate upgrades out of band and keep the channel intact.