This repository holds all information about my homelab and kubernetes cluster. I'm doing my best to adhere to the principles of infrastructure as code (IaC) and GitOps.
My Kubernetes cluster is deployed with Talos Linux, a Linux distribution build spefically for running Kubernetes. I run a three bare-metal node cluster on Intel 12th gen NUC's and using Rook for cluster persistence block, object, and file storage.
Flux watches the cluster resources in the kubernetes folder (see Directories) and makes the changes to the cluster based on the state of the Git repository.
Flux is pointed at the two top level Flux kustomization (ks.yaml) which points at the kubernetes/apps folder and some other general common components. Flux will recursively search the kubernetes/apps
folder until it finds the most top level kustomization.yaml
per directory and then apply all the resources listed in it. That aforementioned kustomization.yaml
will generally only define a few resource and one or many Flux kustomizations. Under the control of those Flux kustomizations there will be the actual resources related to each application.
Renovate watches my entire repository looking for dependency updates, when they are found a PR is automatically created. When PRs are merged Flux applies the changes to my cluster.
The layout of the repository is as follows:
📁 .github # Github related files
📁 docs # My running documentation
📁 network # My internal network setup
📁 cluster
├── 📁 kubernetes # Kubernetes cluster definitions
│ ├── 📁 apps # application manifests
│ └── 📁 flux # flux system configuration
└── 📁 talos # Talos configuration stuff
I keep running docs where I try to document my journey. Hopefully others will find them helpful.
Device | Num | OS Disk Size | Data Disk Size | Ram | OS | Function |
---|---|---|---|---|---|---|
Intel NUC 12th i5 | 3 | 500GB SATA SSD | 2TB NVMe SSD | 64GB | Talos | Kubernetes |
Rasberry Pi 4 | 1 | 64GB SD card | - | 4GB | Debian GNU/Linux 12 | PiHole backup |
Unifi Gateway Max | 1 | - | - | - | - | Router |
Unifi Cloudkey Gen 2+ | 1 | - | - | - | - | Unifi OS |
Unifi Switch Ultra | 1 | - | - | - | - | PoE 1Gb Switch |
Unifi U6+ AP | 1 | - | - | - | - | Wifi |
Thanks to all the people who donate their time to the Home Operations Discord community. Be sure to check out kubesearch.dev for ideas on how to deploy applications or get ideas on what you could deploy.