GitOps state for my home lab cluster using flux2
Leverage Flux2 to automate cluster state using code residing in this repo.
The Git repository contains the following directories under cluster
and are ordered below by how Flux will apply them.
- base directory is the entrypoint to Flux
- crds directory contains custom resource definitions (CRDs) that need to exist globally in your cluster before anything else exists
- core directory (depends on crds) are important infrastructure applications (grouped by namespace) that should never be pruned by Flux
- apps directory (depends on core) is where your common applications (grouped by namespace) could be placed, Flux will prune resources here if they are not tracked by Git anymore
.
├── cluster
│ ├── apps
│ │ ├── default
│ │ │ └── hajimari
│ │ ├── home
│ │ │ ├── adguard-home
│ │ │ ├── esphome
│ │ │ ├── focalboard
│ │ │ ├── home-assistant
│ │ │ ├── mosquitto
│ │ │ └── zigbee2mqtt
│ │ └── networking
│ │ ├── authelia
│ │ └── linkerd
│ ├── base
│ │ └── flux-system
│ ├── core
│ │ ├── cert-manager
│ │ ├── kubed
│ │ ├── metallb-system
│ │ └── namespaces
│ └── crds
│ └── cert-manager
│ └── metallb
└── standalone
└── adguard
Dell Optiplex 7090 Micro as a core server with the following specs:
- Intel Core i5-10500T
- 32GB RAM
- 512 NVMe SSD
- 1TB SSD
- Zigbee USB stick (CC2538)
x3 Raspberry Pi 3B+ as edge devices with the following specs:
- 1GB RAM
- 32GB SD Card
Bunch of Zigbee and BLE devices.
Below are some of the tools I find useful
Tool | Purpose |
---|---|
sops | Simple and flexible tool for managing secrets |
pre-commit | Ensure the YAML and shell script in my repo are consistent |
task | Task is a task runner / build tool |
A lot of inspiration for my cluster came from the people that have shared their clusters over at awesome-home-kubernetes