my kubernetes homelab
this is a post for my home lab kubernetes cluster.
main purpose of lab is to learn and have fun.
Cluster provisioning
K3s: Lightweight Kubernetes distribution running on mixed ARM/x86 architecture.
Hardware
i use one Raspberry Pi 5 control plane and two Intel NUC8i7 worker nodes.
❯ k get nodes
NAME STATUS ROLES AGE VERSION
athena Ready control-plane,master 8d v1.33.4+k3s1
nuc242 Ready <none> 7d23h v1.33.4+k3s1
nuc243 Ready <none> 7d18h v1.33.4+k3s1
Features
- Advanced networking - Cilium CNI with eBPF for high-performance networking
- GitOps workflow - All configurations managed through Git
- Encrypted secrets - External Secrets Operator with HashiCorp Vault for secure secret management
- Database management - PostgreSQL clusters via CloudNative-PG operator
- Complete observability - Grafana dashboards with Prometheus metrics
- Automated TLS - Let’s Encrypt certificates via cert-manager
- Zero-config internet access - Cloudflare Tunnels without firewall changes
- Automatic dependency updates - Renovate bot for keeping applications current
- Development ready - Preconfigured dev container for immediate productivity
No pods are allowed to be scheduled on the control plane.
Repo structure
├── apps
│ ├── athena
│ └── base
├── clusters
│ └── athena
├── databases
│ ├── athena
│ └── base
├── infrastructure
│ ├── configs
│ └── controllers
└── monitoring
├── configs
└── controllers
decided to use Flux CD and their best practices.
my repo is set up according to this guide.
https://fluxcd.io/flux/guides/repository-structure/
and following this example.