This repo is my Kubernetes cluster in a declarative state. Flux and Helm Operator watch my clusters folder and makes the changes to my cluster based on the yaml manifests. Renovate auto updates images and helm charts based on upstream changes.
Feel free to join our Discord if you have any questions.
Currently using k3s by way of a customized template-cluster-k3s ansible playbook.
pip install pipenvpipenv installpipenv run gilt overlaypipenv run ansible-playbook -i provision/ansible/inventory/inventory.yaml provision/ansible/playbooks/k3s-install.yamlk label nodes k-node1.crutonjohn.com k-node2.crutonjohn.com k-node3.crutonjohn.com k-node4.crutonjohn.com k-node5.crutonjohn.com crutonjohn.com/rook=truekubectl taint nodes k-master01.crutonjohn.com k-master02.crutonjohn.com k-master03.crutonjohn.com crutonjohn=control-plane:NoSchedule
-
Have a working
kubeconfig -
Have
fluxinstalled -
Have
GITHUB_TOKENenv var set to a Github PAT -
To boostrap the cluster:
flux bootstrap github \ --components=source-controller,kustomize-controller,helm-controller,notification-controller \ --path=clusters/env/production \ --version=latest \ --owner=crutonjohn \ --repository=gitops -
sops -d sops-secret.enc.yaml | kubectl apply -f -
kustomize build clusters/core/pvc/
All my nodes below are running bare metal Ubuntu 20.04.x
| Device | Count | OS Disk Size | Data Disk Size | Ram | Purpose |
|---|---|---|---|---|---|
| Raspberry Pi 4 | 3 | 120GB (USB Booting SSD) | N/A | 4 GB | k8s Control Plane |
| HP 800 G3 Mini | 3 | 1x 120GB SSD | 1x 1TB M.2 (rook-ceph) | 32GB | k8s Workers |
| Dell 7040 Micro | 2 | 1x 500B HDD | 1x 1TB M.2 SSD (rook-ceph) | 32GB | k8s Workers |
| Device | Count | OS Disk Size | Data Disk Size | Ram | Purpose |
|---|---|---|---|---|---|
| Supermicro CSE-512B | 1 | 2x 500GB Spinning Rust | N/A | 32GB | ZFS on Linux Host |
| Xyratex HB-2425 | 1 | N/A | 24x 1TB SSD | N/A | ZFS Disk Shelf |
This table is a reference to IP addresses in my deployments and may not be fully up-to-date
| Deployment | Address |
|---|---|
| traefik-ingress (external) | 192.168.130.100 |
| traefik-ingress (internal) | 192.168.130.101 |
| syncthing-discovery | 192.168.130.104 |
| syslog-ng | 192.168.130.106 |
| home-assistant | 192.168.130.108 |
| emqx | 192.168.130.109 |
| scrypted | 192.168.130.110 |
Thanks to all the people who donate their time to the Kubernetes @Home community. Join us at https://discord.gg/k8s-at-home
A lot of inspiration for my cluster came from the people that have shared their clusters over at awesome-home-kubernetes
