Infrastructure

Kubernetes Home Lab

A highly available bare-metal Kubernetes (K3s) cluster engineered from the ground up using a hybrid architecture of Raspberry Pi 4s and Intel NUC nodes. This project demonstrates advanced infrastructure-as-code principles, utilizing Ansible for base node configuration and ArgoCD for declarative GitOps application deployments. The cluster features decentralized persistent storage through Longhorn, automated SSL certificate generation via cert-manager, and a Traefik ingress controller, creating a production-like environment for hosting private services and experimenting with cloud-native primitives.

architecture

Architecture Overview

The cluster is designed for resilience and learning. It comprises 3 control-plane nodes and 4 worker nodes, mixed architectures (ARM64 and AMD64).

Networking is handled via Cilium for advanced eBPF-based routing and observability, while MetalLB provides on-premise LoadBalancer capabilities.

  • Control Plane: 3x RPi 4 (8GB) running etcd cluster.
  • Worker Nodes: 4x Dell Optiplex Micro (i5, 32GB RAM).
  • Storage: Longhorn providing distributed block storage over 10Gbps local network.
terminal

GitOps Configuration

flux-kustomization.yaml
apiVersion: kustomize.toolkit.fluxcd.io/v1beta2
kind: Kustomization
metadata:
  name: infrastructure
  namespace: flux-system
spec:
  interval: 10m0s
  path: ./infrastructure
  prune: true
  sourceRef:
    kind: GitRepository
    name: home-ops
  # Wait for CRDs to be applied before moving on
  wait: true