Welcome to the IaC repository for my personal homelab Kubernetes clusters! I have 3 homelab clusters - 1 "on-prem" (sitting on a side table next to my desk) and 2 in Oracle cloud, taking advantage of their extremely generous free tier offerings. All cluster workloads are managed as code using Flux and deployed using Ansible + Terraform.
The Git repository contains the following directories under kubernetes
and are ordered below by how Flux will apply them.
📁 kubernetes # k8s clusters defined as code
├─📁 bootstrap # bootstrap config, loaded once for cluster creation
├─📁 flux # flux, gitops operator, loaded before everything
├─📁 clusters # cluster config, loaded before 📁 infrastructure and 📁 apps
├─📁 infrastructure # crucial apps, namespaced dir tree, loaded before 📁 apps
└─📁 apps # regular apps, namespaced dir tree, loaded last
Cluster | Nodes | CPU | RAM | Disks | OS | Networking | Storage |
---|---|---|---|---|---|---|---|
On-prem | 4 (3 controlplane, 1 worker) | i3 10100T (4C/8T, 3.8 GHz) | 32GB |
|
Talos | Cilium | Rook-ceph |
Oracle Cloud (Phoenix) | 4 (3 controlplane, 1 worker) | Single core 3.0Ghz ARM64 | 6GB | 50GB Virtual Disk | k3s | Calico | Longhorn |
Oracle Cloud (San Jose) | 4 (3 controlplane, 1 worker) | Single core 3.0Ghz ARM64 | 6GB | 50GB Virtual Disk | Talos | Cilium | OpenEBS Jiva |
Tool | Purpose |
---|---|
go-task | A task runner / simpler Make alternative written in Go |
sops | Encrypts k8s secrets with GnuPG |
Check out my blog for more in-depth arcticles on my Homelab, as well as DevSecOps in general!