Featuring kube-vip for HA control-plane, MetalLB for LoadBalancer services, Pi-hole for DNS/ad-blocking, and Caddy as Ingress controller. Built on bare metal with mixed ARM/AMD nodes.
A concise overview of the hardware powering this homelab:
-
π» GMTec Mini PC Intel N150, 16GB DDR4 RAM, 256GB NVMe SSD
-
π» Beelink S13 Mini PC Intel N150, 16GB DDR4 RAM, 500GB M.2 SSD
-
π Raspberry Pi 4B 8GB RAM, 256GB microSD card
-
πΆ TP-Link AX150 Gigabit WiFi 6 Router
-
π TP-Link 5-Port Gigabit Switch
This blend of x86 and ARM hardware, combined with robust networking, provides a flexible and resilient foundation for experimentation and learning.
We use Proxmox VE to manage bare-metal virtualization and Terraform to automate VM provisioning:
π₯οΈ VMs are provisioned on multiple nodes using Proxmox's API.
π¦ Each VM is bootstrapped with cloud-init templates.
βοΈ Terraform handles:
VM creation
Resource allocation (CPU, memory, disk)
SSH key injection
Network config
Directory: terraform
Our HA K3s setup is designed for simplicity and resilience:
π’οΈ External MariaDB runs on the Proxmox host to serve as the K3s datastore.
π§ kube-vip provides a virtual IP (VIP) for accessing the K3s API across masters.
π MetalLB manages service-level LoadBalancer IPs for internal services.
π Caddy Ingress handles domain-based routing for services.
π§
Pi-hole runs in-cluster to serve local DNS + ad blocking, accessible at pihole.lab.local.
Directory: k3s-ha-cluster
This project draws inspiration and practical ideas from the following excellent resources. Many thanks to their authors for sharing their knowledge with the community: