Homelab: GitOps, FluxCD Edition

Jan 6, 2026

Overview

If you've been following my homelab experiments, you know I love to make things reproducible, self-healing, and slightly over-engineered for fun. Lately, I've been exploring FluxCD to bring true GitOps vibes to my small k3s homelab.

Here's the story, the why, and the how.

⚙️
FluxCD

Why GitOps in a homelab?

I run a small (for now!) k3s cluster with a mix of “essential” services (think Prometheus, Grafana, Jellyfin, Homepage) and random experiments. Up until now, updating deployments was a mix of kubectl apply and hoping I remembered what I changed.

FluxCD changes that by treating Git as the single source of truth. Everything I want running in my cluster lives in a Git repo, and Flux automatically syncs it.

Architecture

The repo structure changed slightly... again, to fit FluxCD. I thought about following the FluxCD official structure, but it seems way too over-engineered for my use-case. Even for me hehe!

.
├── flux-system/            # GitOps
├── infrastructure/         # Cluster-wide setup
   └── namespaces/
├── monitoring/             # Monitoring stack
   ├── grafana/
   ├── prometheus/
   ├── kube-state-metrics/
   ├── node-exporter/
   └── alertmanager/
├── services/               # Running services
   ├── homepage/
   └── jellyfin/
└── scripts/                # Placeholder

Installation

It was quite straight-forward. Install Flux with the official install script, bootstrap it and go. I spent some time fine-tuning the GitHub PAT to make it have just enough premissions, but that was the hardest part, honestly.


Resources

The repository is public and available at github.com/kristiangogov/homelab. Feel free to explore the manifests, open issues with suggestions, or reach out if you're building something similar!

gogov.dev