This is a mono repository for my home Kubernetes cluster. Flux watches the cluster directory and makes changes to the cluster based on the YAML manifests.
- Talos: Using bare talosctl
- fluxcd: Sync kubernetes cluster with this repository.
- SOPS: Encrypts secrets which is safe to store - even to a public repository.
- go-task: Custom helper commands
- flannel: Container Network Interface for networking between pods.
- metallb: Bare-metal load balancer.
- cert-manager: Configured to create TLS certs for all ingress services automatically using LetsEncrypt.
- ingress-nginx: Ingress controller for services.
- external-dns: External DNS manager for all ingress.
- rook-ceph: Cloud native distributed block storage for Kubernetes
- kube-prometheus-stack: Scraping metrics from the entire cluster
- grafana: Visualization for the metrics from Prometheus and other datasources
- external-secrets: Integrates external secrets management with OnePassword Connect
- local-path-provisioner - Provision persistent local storage with Kubernetes to avoid write amplification for default soft replicated applications
The Git repository contains the following directories under kubernetes
and are ordered below by how Flux will apply them.
📁 kubernetes # Kubernetes cluster defined as code
├─📁 bootstrap # Flux installation
├─📁 flux # Main Flux configuration of repository
├─📁 core # Core applications deployed into the cluster grouped by namespace
├─📁 apps # Apps deployed after core into the cluster grouped by namespace
📁 archive # Archived Kubernetes application manifests