Introduction
π Overview
This repository manages my homelab Kubernetes cluster built on TalosOS, following Infrastructure as Code (IaC) and GitOps practices. The setup consists of three bare-metal control plane nodes and two VM workers, with all configurations version-controlled and automatically deployed via FluxCD.
β΅ Kubernetes
Layers Explained
The cluster is organized into three distinct layers for maintainability and clear separation of concerns:
-
Infrastructure: The foundation layer that handles cluster networking (Cilium), core DNS (CoreDNS), and persistent storage (democratic-csi with TrueNAS). This ensures the cluster itself stays healthy and reachable.
-
Platform: The middle layer with shared services that support workloads, including cert-manager for SSL certificates, external-dns for DNS automation, and external-secrets for syncing secrets from Bitwarden Secrets Manager. These tools make running applications smoother and more secure.
-
Apps: The actual workloadsβmedia servers, home automation, developer tools, databases, and more. Each application lives in its own directory, typically managed with HelmReleases or Kustomizations.
Core Components
- actions-runner-controller: Self-hosted Github runners for CI/CD.
- cert-manager: Automated SSL certificate management.
- cilium: eBPF-based container networking (CNI).
- democratic-csi: TrueNAS iSCSI integration for persistent storage.
- external-dns: Automatic DNS record synchronization.
- external-secrets: Kubernetes secrets managed via Bitwarden Secrets Manager.
- sops: Encrypted secrets stored in Git.
Directories
This Git repository contains the following directories under Kubernetes.
π kubernetes
βββ π main
β βββ π apps # applications
β βββ π bootstrap # bootstrap procedures
β βββ π flux # core flux configuration
β βββ π infrastructure # infrastructure layer (networking, storage)
β βββ π platform # platform layer (certs, secrets, dns)
βββ π templates # reusable templates
How It Works
- Make changes to manifests in this repositoryβno manual edits on nodes.
- FluxCD automatically syncs the cluster state with Git.
- Infrastructure deploys first, then platform services, then applications.
- If a rebuild is needed, redeploy TalosOS and point Flux at this repoβeverything returns as configured.
π€ Acknowledgments
This project is heavily inspired by the onedr0p/home-ops repository and the amazing Home Operations Discord community. Thanks to everyone sharing their setups and knowledge!
π License
This repository is available under the MIT License. See LICENSE for details.