This repository contains my personal Kubernetes homelab setup, designed to run on bare metal servers with a focus on networking performance, GitOps, and automation.
- OS: Ubuntu 24.04 LTS (control and worker nodes)
- Networking: Calico with eBPF dataplane, BGP peering directly to my VyOS routers
- Service Load Balancing: Provided natively by Calico BGP (no MetalLB)
- Proxy: Kube-proxy is disabled; Calico eBPF handles service load balancing and cluster networking
- Storage: Backed by TrueNAS (NFS/iSCSI)
- GitOps: Argo CD provisions and manages all applications
After building the cluster with Ansible, the initial application deployment can be bootstrapped by running:
./app-deployment.shThis script installs the base Argo CD configuration, which then provisions everything else declaratively.
- Argo CD manages all workloads, applications, monitoring, logging, and supporting services.
- Exception: Calico (with eBPF + BGP) is installed and configured manually as part of cluster bootstrap.
- eBPF dataplane: Improves performance and observability, removes the need for kube-proxy.
- BGP integration: Calico peers with my VyOS routers, advertising cluster services and pod CIDRs for seamless external access.
- Declarative GitOps: All apps are managed through Git with Argo CD, enabling full reproducibility and rollback.
This setup prioritizes clean GitOps workflows, minimal moving parts, and high-performance networking using Calico.