Roadmap
Planned changes and experiments.
Kubernetes cluster (Raspberry Pi)
The 4 × Raspberry Pi 4B (8 GB) are wired up as a highly-available k3s cluster for hands-on labbing. Container orchestration is intentionally kept off the single Proxmox host — Swarm or k8s there would be overkill — so the Pis carry that experiment instead.
Delivered so far:
- 4-node HA k3s (all nodes control-plane + etcd, tolerates one node loss)
- MetalLB for bare-metal LoadBalancer IPs
- ingress-nginx for HTTP(S) routing
- cert-manager issuing trusted TLS certificates via DNS-01 — no inbound internet exposure needed for valid HTTPS on internal-only services
- Pi-hole as the first real workload: network-wide DNS and ad-blocking
- Longhorn for replicated, self-healing persistent storage across the 4 nodes
Next up:
- Argo CD for GitOps-style continuous deployment — the cluster pulls and reconciles changes from git automatically, rather than applying manifests by hand
Monitoring & Observability
Currently no metrics, logs, or alerting across either the Proxmox/Docker side or the k3s cluster — problems get noticed by hand. Plan:
- Metrics:
kube-prometheus-stack(Prometheus + Grafana + Alertmanager + node-exporter + kube-state-metrics) on the k3s cluster, backed by Longhorn for Prometheus/Grafana's own persistent storage - Whole-lab visibility, not just the Pi cluster: extend scraping to the Proxmox/Docker side too — node-exporter and cAdvisor on the docker-host VM, plus Proxmox's own metrics export — so one Grafana covers the whole lab instead of two separate blind spots
- Logs: Grafana Loki for log aggregation, queried alongside metrics in the same Grafana instance
- Alerting: Alertmanager routed to a lightweight notification channel (e.g. a Discord webhook or ntfy) for things that actually matter — a node down, a cert-manager renewal failing, a Longhorn volume degraded, a PVC nearing capacity
- Resource budget matters here: the full stack is heavy for 4 × Pi 4B (8 GB) boards that are also running real workloads — plan to tune retention and resource requests deliberately rather than deploying the defaults and hoping
Ideas / backlog
- TODO