← Back

Homelab cluster (GitOps)

A GitOps-managed homelab Kubernetes configuration repo with Flux reconciliation, Kustomize structure, and Helm-based infra add-ons.

KubernetesFluxKustomizeHelmGitOps
Visit project
Homelab Cluster Repo screenshot

Highlights

  • Flux bootstrap + reconciliation (flux-system + kustomizations)
  • Infra add-ons: cert-manager, MetalLB, Kata, ARC
  • Apps and infra kept modular under clusters/homelab

This repository is the source of truth for my homelab Kubernetes cluster configuration. It uses Flux to reconcile changes from Git, with manifests organised under a single environment directory (clusters/homelab).

What it demonstrates

  • A GitOps-first structure where cluster state is driven by repo layout
  • Separation of concerns: flux-system, flux-kustomizations, infra, and apps
  • HelmRelease-based add-ons alongside standard YAML resources

How the repo is structured

The repo is organised so Flux can target clear paths for reconciliation. Infrastructure add-ons sit alongside application manifests, but are applied through dedicated Flux Kustomizations.

  • flux-system: Flux controllers and sync configuration
  • flux-kustomizations: what gets applied, from where, and how often
  • infra: cluster add-ons (cert-manager, MetalLB, Kata, ARC)
  • apps: example application manifests (deploy/service/ingress/cert)

Key components

  • Flux system: bootstraps reconciliation and watches the repo for changes
  • Kustomizations: define apply boundaries, intervals, and dependencies
  • Infra add-ons: Helm-based releases and supporting resources per component
  • Apps: regular K8s manifests tied into ingress and certificate flow

GitHub runners note

The cluster includes ARC-related configuration and is paired with a GitHub App installation for org-level self-hosted runners. This keeps runner provisioning declarative and cluster-owned, rather than manual per-host setup.