Overview
A personal home cluster running on physical hardware. Ansible bootstraps each node onto Ubuntu 24.04 with Kubernetes pre-configured. ArgoCD drives all workload deployment from a Git repo, Longhorn handles distributed block storage, and the Tailscale Kubernetes operator exposes services across my mesh. Everything is declarative, reproducible, and survives node reboots.
Why it exists
Bare-metal first, VMs second
Hardware is the primary target — everything is designed to run on a small cluster of physical machines. The Multipass-based local flow exists so changes can be rehearsed on a laptop before they touch the actual nodes, not as a parallel architecture.
Cilium + Gateway API end-to-end
Cilium handles pod networking and observability (Hubble UI). Envoy Gateway sits on top as the Gateway API data plane. Tailscale is wired as a Gateway API GatewayClass too, so internal services route over the mesh without exposing anything publicly.
Why ApplicationSets
Argo CD ApplicationSets generate per-environment / per-cluster apps from a single template, so adding a new app or a new cluster doesn’t require copy-pasting Application manifests. The repo’s `infrastructure/` and `apps/` trees are scanned automatically and reconciled.
Tech stack
- Cluster
- Kubernetes (kubeadm) Ubuntu 24.04 LTS Cilium Hubble
- Platform
- Argo CD Argo CD Image Updater Envoy Gateway cert-manager
- Storage & Secrets
- Longhorn HashiCorp Vault External Secrets
- Networking
- Tailscale Operator ExternalDNS MetalLB-free routing
- Provisioning
- Ansible Multipass (local rehearsal)