kURL is an open source upstream-Kubernetes, custom distro creator. Think of kurl.sh as a link shortener for your favorite Kubernetes base components (aka add-ons). It creates a unique URL for your specific combination of components that can be installed with cURL on a modern Linux server. kURL installation packages can be run online or downloaded and executed in a completely airgapped environment. kURL is open source and easily extensible by contributing additional add-ons as Kustomize overlays.
While it pairs incredibly well with kots and kotsadm, kURL can be used to help deliver any Kubernetes-based application. At Replicated, we even use kURL-based clusters for our production SaaS infrastructure.
At its core, kURL is based on kubeadm, the cluster management tool built by the core Kubernetes team and owned by sig-cluster-lifecycle. This means it benefits from the latest Kubernetes updates, patches and security hotfixes as they are shipped by Kubernetes maintainers. kURL is a framework for declaring the layers that exist before and after the services that kubeadm provides.
Compared to standard Kubernetes distributions, it’s worth emphasizing that kURL is actually a flexible Kubernetes distribution creator. Most distributions make decisions about CNI, Storage, Ingress, etc. out of the box. Comparatively, kurl.sh allows you to choose your own providers and versions of these components.
The Kustomized-based, open source add-on model means anyone in the community can contribute additional add-ons via Kustomizations or even host their own kurl.sh server (soon).
kURL builds and hosts airgap bundles with no additional configuration. Because each add-on specifies its required Docker images in a manifest file, a single Installer yaml is all that’s required to specify a tar.gz bundle that can install a full stack into an airgapped environment.
kURL is both embeddable and swappable. It’s designed to quickly and pragmatically get an application up-and-running in any environment that can provide a modern Linux server, including private cloud, vSphere, and traditional bare metal data centers.
Today, kURL is primarily useful through kurl.sh, however, we’re working on a proposal to package kURL as a kubectl plugin. This would enable cluster operators to install their preferred K8s distro onto a set of servers by first installing Kubectl and the kURL plugin (without using the hosted kurl.sh service), while still retaining the ability to create and use airgap installers.