Git takes ownership
Changes go through Git and Flux. This rule prevents a manual image or manifest update from fighting the declared state.
Case study · Kubernetes homelab
Three nodes, one control plane, two workers and enough services to meet the problems tutorials often leave out. The repository records decisions, incidents and system limits.
Explore the repository01 / 04
Flux reconciles manifests from the in-cluster Forgejo instance. Local charts describe project-specific services. Infisical injects runtime secrets, while a Synology NAS provides shared persistent storage.
02 / 04
Changes go through Git and Flux. This rule prevents a manual image or manifest update from fighting the declared state.
Local persistent volumes depended on one worker. The affected workloads now use NFS-backed PVCs on the NAS.
Infisical supplies credentials at runtime. CI also searches for secrets committed by mistake.
Scripts render charts, validate Kubernetes schemas and enforce a storage policy before a change reaches the cluster.
03 / 04
A chart or configuration change enters Git.
Gitleaks, Helm rendering, kubeconform and storage rules inspect it.
Flux reads the Git source and applies the declared state.
Prometheus, Grafana and Loki provide signals after deployment.
04 / 04
This homelab is not a production-ready Kubernetes distribution. The control plane is a single node, the NAS is a central dependency, some services have one replica and several workloads depend on the available hardware. Those risks are accepted and documented, not hidden.
Its public architecture and recovery procedures make the engineering choices open to inspection.
Read the code and documentation