My home infrastructure managed through GitOps using Flux and Talos Linux
├── .github/ # GitHub workflows and settings
├── .taskfiles/ # Task runner configurations
├── kubernetes/ # Kubernetes manifests
│ ├── apps/ # Application deployments
│ ├── bootstrap/ # Initial cluster bootstrap configurations
│ └── flux/ # Flux system configurations and repositories
This repository contains the configuration for my home Kubernetes cluster. The cluster is provisioned using Talos Linux and follows the GitOps methodology using Flux.
Hostname | Node Type | Hardware | CPU | Memory | Storage |
---|---|---|---|---|---|
glados-c01 | Control Plane | Lenovo M720q Tiny | i5-8400T | 16GB | 256GB SSD |
glados-w01 | Worker | Lenovo M720q Tiny | i5-8400T | 16GB | 256GB SSD |
glados-w02 | Worker | Lenovo M720q Tiny | i5-8400T | 16GB | 256GB SSD |
- 🌐 Container Network Interface (CNI): Cilium
- 🔐 Certificate Management: cert-manager
- 💾 Storage: OpenEBS
- 🚦 Ingress Controller: ingress-nginx
- 📡 DNS:
- External DNS management via external-dns
- Internal DNS via k8s-gateway
- 🔒 Tunnel: Cloudflare Tunnel
The cluster is managed using Flux, which automatically reconciles the cluster state with the declarations in this repository. Key aspects include:
- ⏱️ Automated reconciliation every 30 minutes
- 🔑 Secrets management using SOPS
- 🔄 Automated dependency updates via Renovate
Currently deployed applications:
- 🎬 Jellyfin - Media Server
- 🔄 Echo Server - Testing HTTP/HTTPS requests
- 🖥️ Talos - Operating system for Kubernetes
- 🔄 Flux - GitOps operator for Kubernetes
- 📦 Helm - Package manager for Kubernetes
- 📄 Helmfile - Declarative spec for deploying Helm charts
- ⚡ Kubectl - Kubernetes command-line tool
This cluster setup is inspired by and based on the onedr0p/cluster-template.