GitOps repository for Kubernetes home cluster managed by Flux.
Flux is a GitOps operator that automatically syncs this Git repository to the Kubernetes cluster. Changes committed to this repo are automatically applied to the cluster. The cluster state is defined declaratively in Git - the single source of truth.
flux/
├── clusters/dev/ # Cluster-specific config
├── apps/
├── base/ # Base app configurations
└── dev/ # Dev environment overlays
bootstrap/ # Flux installation instructions
Each service, operator, and configuration has its own Flux Kustomization (ks.yaml). This provides:
- Granular control - Each component reconciles independently
- Isolation - Failures in one component don't block others
- Observability - Clear visibility into each component's sync status
- Dependency management - Explicit ordering with
dependsOnwhen needed
For example, cert-manager has separate kustomizations for the operator and its configuration, ensuring the operator is ready before applying certificates.
Namespaces are templated in flux/infra/ and consumed by apps in flux/apps/dev/ using Kustomize components. Each app's kustomization sets the namespace name and includes the appropriate template.
Available Templates:
namespace/namespace-istio-enabled- Istio ambient mode with gateway accessnamespace-privileged- Privileged pod security standardnamespace-istio-privileged- Istio ambient mode + privileged security
Example:
namespace: kube-ops
components:
- ../../../infra/namespace-privilegedThis DRY approach centralizes namespace configuration - security policies, Istio labels, and annotations are managed in one place.
- Flux System - GitOps operator
- Longhorn - Distributed storage
- Cert Manager - Certificate management
- MetalLB - Load balancer (192.168.1.201-209)
- Metrics Server - Resource metrics
- Istio - Service mesh
- Istio Gateway - Ingress gateway
- Kiali - Service mesh observability
- CNPG - CloudNativePG operator
- Authentik - Identity provider
- Kube Prometheus Stack - Monitoring and alerting
- KAgent - AI agent platform
See bootstrap/README.md for installation instructions.