This is the home of the kubernetes cluster I deployed at home. It features a couple of low power lenovo computers running Talos which allows seamless bootstraping when combined with my vyos-config/matchbox config. My NAS is running Debian 12 with k3s deployed using my ansible configuration.
This repo serves as the "roadmap" that is automatically updated and deployed thanks to renovate and fluxcd.
Thanks to onedr0p, there is the cluster template that allows you to easily get started with your own kubernetes cluster at home. You don't need to have multiple computers or a fancy setup to get one working.
If you're interested, you can also join the community Discord: Home Operations. Several people are involved daily and it makes for some interesting conversations.
This Git repository contains the following directories under Kubernetes.
๐ kubernetes
โโโ ๐ apps
โ โโโ ๐ main
โ โโโ ๐ storage
โโโ ๐ bootstrap
โโโ ๐ config
โโโ ๐ repositories
โโโ ๐ vars
While most of my infrastructure and workloads are self-hosted I do rely upon the cloud for certain key parts of my setup. This saves me from having to worry about two things. (1) Dealing with chicken/egg scenarios and (2) services I critically need whether my cluster is online or not.
Service | Use | Cost |
---|---|---|
1Password | Secrets with External Secrets | ~$55/yr |
Cloudflare | Domain and R2 | ~$30/yr |
GCP | Voice interactions with Home Assistant over Google Assistant | Free |
GitHub | Hosting this repository and continuous integration/deployments | Free |
Let's Encrypt | Issuing SSL Certificates | Free |
Migadu | Email hosting | ~$20/yr |
Pulumi Cloud | Resource state management | Free |
Pushover | Kubernetes Alerts and application notifications | Free |
Total: ~$10/mo |
I use VyOS as my current routing operating system. Previous solutions I had used consisted of OPNSense, and the Unifi Dream Machine Pro.
Here's a couple repositories to show my current/past configurations for these solutions.
My current setup consists of bind9 and dnsdist deployed as containers on VyOS. I currently point all DNS to Cloudflare's 1.1.1.1, and I am planning on intergrating nextdns in the future.
My kubernetes clusters interact with bind9 using the RFC2136
standard to sync DNS records.
Device | Count | OS Disk Size | Data Disk Size | Ram | Operating System | Purpose |
---|---|---|---|---|---|---|
Raspberry Pi 4 | 3 | 256GB SSD | - | 8GB | Talos | Raspberry Cluster |
Lenovo ThinkCentre M900 | 6 | 256GB SSD | 1TB NVMe (rook-ceph) | 16GB | Talos | Kubernetes Nodes |
Fran the Fabulous Nas | 1 | 2x1TB SSD | 5x8TB (raidz2) | 64GB | Debian | NFS + Backup Server |
Raspberry Pi 3 | 1 | 32GB (SD) | - | 4GB | - | Network KVM |
Supermicro + X470D4U | 1 | 256GB SSD | - | 8GB | VyOS | Router |
USW 24 G1 | 1 | - | - | - | - | 1Gb Switch |
Unifi USP PDU Pro | 1 | - | - | - | - | PDU |
APC Back-Ups 1500 | 1 | - | - | - | - | UPS |
Thanks to all the people who donate their time to the Home Operations community.
Special thanks to: แชัฮฝฮนฮท แทฯ ะฝส, Bแดสษดแด Sแดสแดสษขแดสs, and Toboshii Nakama for their assistance.