QuantyKube

ADR-029 The demonstration and the installer target kubeadm

All pages

ADR-029, from docs/DECISIONS.md in the QuantyKube repository.

Status In force

The cluster on stage is upstream Kubernetes set up with kubeadm, on three servers with Ubuntu 26.04. k3s was the first target because it is one binary and starts in seconds, and it stays in CI for that reason, but it is a distribution, and the question a k3s demonstration invites is whether it works with real Kubernetes. Nothing in the store or the runtime depends on the distribution: they serve the etcd v3 API and the CRI.

The installer (ADR-009) does depend on it, since every distribution keeps the API server's flags and the kubelet's configuration somewhere else. kubeadm is the reference for clusters people run themselves, and it makes the change clean: the API server is a static pod whose manifest the kubelet watches, so pointing --etcd-servers at QuantyKube restarts it. kubeadm is the first installer target and the only one for 17 November; k3s follows.

The cost: kubeadm needs more memory and more steps than k3s, and CI gets a kubeadm cluster as an additional job.

Added on 21 October: the CI job (scripts/kubeadm.sh) runs kubeadm init with QuantyKube as an external etcd, on the certificates kubeadm makes for a local one. kubeadm asks an external etcd for /version over HTTP/1.1 before it uses it, as monitoring asks for /health, so the store's TLS port answers both besides gRPC (ADR-031).