Back to Projects
Homelab Infrastructure

Homelab Kubernetes Cluster

IN PROGRESS SURFACE: BARE METAL

Three Lenovo mini PCs running k3s. Ansible handles node provisioning; Flux GitOps is being layered in now to bring every deployment under version control.

Nodes
3
Runtime
k3s
Provisioner
Ansible
GitOps
Flux (WIP)
NOTE: BOOTSTRAPPING FLUX ON LIVE CLUSTER → ANNOTATE EXISTING RESOURCES FIRST → DON'T LET DRIFT DETECTION FIGHT YOU

The Problem

I started on a single Beelink running Docker Compose. It hit a ceiling when I wanted more services and a rollback path I trusted. Adding a second machine just doubled the coordination work.

Approach

Three Lenovo mini PCs, each running as both control plane and worker. k3s for the cluster runtime; less overhead than upstream Kubernetes and the same APIs. Ansible handles initial node provisioning and configuration. Flux is being added so every workload change is a Git commit instead of a kubectl apply.

Current State

Cluster is stable and running. Flux reconciliation is being wired up against a private Git repository. Once Flux is solid, the Docker Compose workloads on the Beelink migrate into the cluster progressively, with the Beelink as a Docker fallback.

Stack

k3s · Ansible · Flux · kubectl