Zum Inhalt

ADR-001: Docker Compose statt Kubernetes

Feld Wert
Status accepted, eingeschränkt durch ADR-012 (2026-10-28)
Datum 2026-03-20
Betrifft alle

Nachtrag 2026-10-28

Compose bleibt die Plattform für alles Hostgebundene und Hauskritische (DNS, Home Assistant, Zigbee, USV, Backup-Ziel, Monitoring). Seit ADR-012 gibt es zusätzlich einen Talos-Cluster für das Lab, die Agenten-Fabrik und nicht hostgebundene Apps, eingeführt in Stufen und mit Review.

Kontext

Das Homelab umfasst ca. 40 Services verteilt auf mehrere Server (Intel NUC, Hetzner vServer, OVH Dedicated Server). Die gesamte Infrastruktur wird von einer einzelnen Person betrieben. Der Betreiber besitzt alle fuenf CNCF Kubernetes-Zertifizierungen (Kubestronaut), die technische Kompetenz fuer Kubernetes ist also vorhanden.

Die zentrale Frage: Rechtfertigt die Komplexitaet eines Kubernetes-Clusters den Mehrwert gegenueber Docker Compose fuer ein Single-Operator-Homelab?

Entscheidung

Alle Projekte nutzen Docker Compose als Container-Runtime. Kubernetes wird trotz vorhandener Expertise bewusst nicht eingesetzt.

Docker Compose bietet fuer den Single-Operator-Betrieb die bessere Balance zwischen Funktionalitaet und Betriebsaufwand. Die docker-compose.yml pro Projekt ist selbstdokumentierend, einfach zu debuggen und benoetigt keine zusaetzliche Control-Plane-Infrastruktur.

Alternativen

Option Ergebnis
Kubernetes (K3s/K8s) Voller Feature-Set (Auto-Scaling, Self-Healing, Rolling Updates), aber massiver Overhead fuer einen einzelnen Operator. Control Plane verbraucht Ressourcen, etcd-Backup noetig, YAML-Komplexitaet deutlich hoeher.
Nomad Leichtgewichtiger als K8s, aber kleineres Oekosystem, weniger Community-Support, zusaetzliches Tool zu lernen ohne klaren Vorteil gegenueber Compose.

Konsequenzen

Positiv:

  • Minimaler Betriebsaufwand — docker compose up -d genuegt
  • Kein Control-Plane-Overhead, alle Ressourcen fuer Workloads verfuegbar
  • Einfaches Debugging mit Standard-Docker-Tooling
  • Schnelle Iteration bei Service-Aenderungen

Negativ:

  • Kein automatisches High Availability oder Self-Healing
  • Kein automatisches Scaling ueber einzelne Hosts hinaus
  • Service-Discovery nur ueber Docker-Netzwerke, kein DNS-basiertes Mesh
  • Updates erfordern manuellen Neustart (automatisiert durch Renovate + CI)