This repository contain all the resources for my Homelab setup. It is used as the source of truth for FluxCD, running in a K3s cluster.
- GitOps: everything should be deployed and reproducible with Flux
- Secrets should be safely stored in the repository
- Valid SSL certificates for all services
- Monitoring stack with Prometheus and Grafana
- GPU pass-through for hardware acceleration
- Expose services to the outside world
- Monitor all deployed applications
- Reliable storage
The repository structure follows the Flux recommendations, but I've also added an extra layer to provide a better separation of concerns. The idea is to have the following dependency graph:
┌───►Apps
Infrastructure│
└───►Core Services
Infrastructure contains controllers and its configurations that do not expose any external services. They provide the fundamental resources to other services such as SSL certificates, secrets management, storage and so on.
Core services are composed of the administrative services exposed from the cluster. This includes any administrative dashboards and monitoring stacks.
Apps are the user facing services provided by the cluster.