ADR-001: Use Minikube as Local Kubernetes Runtime¶
Status¶
Accepted
Date¶
2026-03-07
Context¶
A local Kubernetes runtime is needed to run the HomeKube sandbox on macOS without access to a cloud provider. The runtime must be CNCF-compatible (unmodified upstream K8s API), support realistic learning scenarios, and be capable of running the Phase 1 stack (ingress-nginx, cert-manager, Prometheus, Grafana) on a MacBook with 16–32 GB RAM.
Requirements¶
- Standard CNCF Kubernetes API (no stripped or modified components)
- macOS support with Apple Silicon (arm64)
- LoadBalancer service type support
- Addon ecosystem for accelerated learning
- Active CNCF community
Decision¶
Use Minikube with the Docker driver as the local Kubernetes runtime.
Start command:
minikube start \
--driver=docker \
--cpus=4 \
--memory=8g \
--kubernetes-version=stable \
--addons=metrics-server
Alternatives Considered¶
| Tool | Reason Not Chosen |
|---|---|
| kind (Kubernetes in Docker) | Excellent for CI; lacks built-in addons, no native LoadBalancer, limited minikube tunnel equivalent |
| k3d / k3s | K3s deliberately strips or replaces components (e.g. uses Traefik instead of ingress-nginx, embeds SQLite instead of etcd). Reduces CNCF learning fidelity. |
| Docker Desktop K8s | Opinionated, limited configurability, harder to replicate CNCF tooling patterns |
| Lima + nerdctl | Low-level; valuable for understanding container runtimes but not for K8s cluster learning |
Consequences¶
Positive¶
- Runs standard upstream Kubernetes — everything learned applies 1:1 to production clusters
- Addon system (
minikube addons enable ...) provides quick access to dashboard, registry, metrics-server minikube tunnelemulates cloud LoadBalancer behaviour (useful for Phase 2+ learning)minikube image loadallows testing local container images without a registry- arm64 support via Docker driver on Apple Silicon
Negative¶
- Heavier than kind/k3d (~2 GB RAM overhead for Docker VM vs host process)
- Single-node only — multi-node requires multiple minikube profiles
- Not suitable for production; must re-learn some operational patterns for real clusters
Trade-offs¶
Learning fidelity and convenience are prioritised over minimal resource usage. The extra RAM cost of Minikube is justified by its standard Kubernetes API and addon ecosystem.