This is a mono repository for my home infrastructure and Kubernetes cluster implementing Infrastructure as Code (IaC) and GitOps practices using tools like Kubernetes, Flux, Renovate and GitHub Actions.
My Kubernetes cluster is built upon bare-metal nodes running Talos, with Longhorn providing hyper-converged block storage. A separate TrueNAS system also exists externally for NFS storage - mostly for media and backups.
- flux: Manages the cluster state using GitOps
- longhorn: Provides distributed block storage for stateful applications
- renovate: Keeps application dependencies up-to-date
Flux watches this Git repository and makes the appropriate changes to the cluster based on the YAML manifests in the kubernetes directory.
Renovate also watches this Git repository and creates pull requests when it finds updates to Docker images, Helm charts, and other dependencies.
This Git repository contains the following directories under kubernetes.
📁 bootstrap # Initial installation components
📁 kubernetes # Kubernetes cluster defined as code
├─📁 apps # Apps deployed into cluster grouped by namespace
└─📁 flux # Main Flux configuration of repository
All hardware was cobbled together second-hand from Craigslist or eBay.
Device | Count | CPU | RAM | OS Disk Size | Data Disk Size | NIC | Operating System | Purpose | ||
---|---|---|---|---|---|---|---|---|---|---|
Lenovo ThinkCentre M720q | 2 | i3-8100T | 32GB | 500GB NVMe | - | - | Talos | Kubernetes Control Plane | ||
Lenovo ThinkCentre M920q | 1 | i5-8500T | 32GB | 500GB NVMe | - | - | Talos | Kubernetes Control Plane | ||
Dell OptiPlex 3070 SFF (9th-gen Intel i5) | 3 | i5 9500 | 64GB | 250GB SSD | 1x 1TB SSD; 1x 1TB NVMe | Mellanox ConnectX-3 10G | Talos | Kubernetes Agent | ||
Custom NAS (i3-8100; 128GB ECC RAM) | 1 | i3-8100 | 128GB ECC | Mellanox ConnectX-3 10G | TrueNAS | NAS | ||||
Lenovo ThinkCentre M720q | 1 | - | - | - | VyOS | Router | ||||
Brocade ICX6450 | 1 | - | - | - | - | Switch | ||||
TP-Link EAP650 | 1 | - | - | - | - | WiFi AP | ||||
Unifi Flex-Mini | 2 | - | - | - | - | Switch (per room) | ||||
Raspberry Pi 4B w/ HiFiBerry DAC2 Pro | 1 | - | - | - | - | Volumio |
Standing on the shoulders of giants, this cluster configuration is heavily inspired by the excellent work of the k8s-at-home community and more specifically:
Be sure to check out the k8s-at-home Discord!