This is my private Kubernetes cluster running on Talos Linux and continuously reconciled using Flux.
My goal for this homelab was to have a simple-enough-to-manage and API-driven system where I don't have to worry too much about what application runs where, day-to-day operations (e.g. updating software) are relatively simple, and the system would for the most part take care of itself. Its architecture isn't too sophisticated right now: the cluster consists of one control plane node, a Raspberry Pi 4B, and a single mini PC serving as a worker node.
There are two main components:
- Talos Linux, an entirely API-driven OS, is configured via an OpenTofu module. Cilium and the Gateway API are also deployed here as part of the control plane configuration to serve as the cluster's Container Networking Interface.
- Kubernetes manifests are continuously reconciled using Flux,
and are organized into layers:
00-entrycontains the Flux bootstrap manifests as well as sources used by subsequent layers.01-crdscontains custom resource definitions (CRDs) used by addons in the next layer. These are managed separately from the addons themselves to avoid accidentally deleting custom resources when their addons are removed for any reason.02-addonscontains addons that provide cluster functionality (storage, secrets management, etc.) and any configuration needed to get them working.03-appscontains user-facing applications.