Skip to content

Flatcar Homelab

Homelab Logo

A rack of machines and a pile of YAML: a bare metal Kubernetes cluster that provisions itself over PXE, keeps its entire state in Git, and is documented here so that nothing has to be re-derived at 02:00.

It is a real cluster doing real work, built the way a production cluster is built, at a scale where breaking it is a learning experience rather than an incident review.

Start here

The stack in one table

Each choice had a simpler alternative that was rejected on purpose; the reasoning and what each one costs is in Design Decisions.

Layer Choice Why it is not the obvious one
OS Flatcar Container Linux Read-only /usr. You cannot apt install your way out of a problem, which turns out to be the feature
Cluster Kubernetes via kubeadm Stock upstream, so the upstream docs apply verbatim
Network Cilium eBPF, no kube-proxy, no iptables archaeology. Also supplies Gateway API and the LoadBalancer addresses bare metal does not come with
Storage Rook-Ceph Replicated block storage across the nodes, and the component most likely to teach you humility
Secrets OpenBao Nothing sensitive in Git, at the price of a manual unseal after every reboot
Delivery ArgoCD If it is not in Git it is not real, and it will not survive the next reconcile

The sections follow the reader's journey: Get Started to build it, Architecture to understand it, Platform for each of the components, Operations to run it, and Development to work on the repository.