kURL 101

TL;DRkURL deploys entire Kubernetes clusters, pre-configured with as many or as few add-ons as your organization needs, delivered via the cURL utility.

Greetings and welcome to our new Replicated Runthrough series, where we teach you about each project in the Replicated catalog in simple terms. Our first lesson will be on kURL, an Open Source Kubernetes distribution builder that uses the cURL utility and yaml configuration files to quickly and easily deploy a Kubernetes embedded cluster with as few or as many customizations as your heart desires.

kURL = Kubeadm Deluxe

Now if you’re familiar with K8s already, you’re probably saying to yourself, “well that just sounds like kubeadm so what’s so special about it?” Well, you are correct in recognizing the similarity to kubeadm as kURL is based on kubeadm at its core, but what sets kURL apart is its ability to declare what layers exist both before and after K8s deployment while maintaining users’ access to frequent updates, patches, and security hotfixes shipped directly from Kubernetes project maintainers. In other words, kURL not only builds a cluster for you but also builds out your add-ons so that the cluster is ready to work from the moment installation completes.



apiVersion: "cluster.kurl.sh/v1beta1"

kind: "Installer"

metadata

  name: "latest"

spec

  kubernetes

    version: "latest"

  weave

    version: "latest"

  rook

    version: "latest"

  contour

    version: "latest"

  docker

    version: "latest"

  prometheus

    version: "latest"

  registry

    version: "latest"

  ekco

    version: "latest"

If you aren’t familiar with kubeadm, the basic rundown is that kubeadm is a Kubernetes bootstrapping utility that configures a bare minimum K8s cluster. It then expects that the administrator will either configure add-ons such as the dashboard, monitoring, backups, etc. themselves or build tooling on top of kubeadm to automate the installation of these things – which is exactly what kURL does!

Kubeadm + cURL = Awesome Kubernetes

Now that we’re familiar with kubeadm (the basis for kURL), let’s talk about cURL a bit. cURL is another Free and Open Source software that originally began way back in 1996 as an IRC currency rate tool that then grew into a project used in almost every internet-connected device in one way or another, from laptops to smart cars, and everything in between. The same is true for most of the Replicated catalog, as cURL is used to install KOTS, Troubleshoot, Unfork, Outdated, and is such a large part of the kURL project that it even contributed to its name. 

But cURL isn’t just an installer – it’s a compact yet extremely powerful utility for sending and receiving data, troubleshooting, and virtually anything else having to do with HTTP transfer – but that’s a conversation for another day. If you’re interested in learning more about cURL (which I certainly hope you are), check out the book Everything cURL, a 100% free, community-written, and maintained book that covers everything about the cURL project from how it was named to the most minute API features of libcurl.

While you’re there, I hope you’ll also consider sponsoring the cURL project, which just recently released v7.76.1 as of the publishing of this blog. The cURL project and all supplemental materials are still maintained by a small, but devoted group of contributors whose hard work helps to keep The Internets and all of our fun IoT devices running smoothly. If financial sponsorship isn’t your thing, perhaps consider code contributions or documentation updates if you’re not interested in writing code.

If you’d like to try kURL out, head on over to https://kurl.sh to get started with building your own personalized distribution of Kubernetes. Stay tuned for the next blog in the Replicated Runthrough series as well as product updates, case studies, and more.