@paulfantom's GitOps managed kube cluster running in a cupboard. Built with fancy tools :sparkles:
Ankhmorpork
📖 Overview
This is a mono repository for @paulfantom home infrastructure and Kubernetes cluster. Project utilizes Infrastructure as Code to automate provisioning, operating, and updating self-hosted services.
⛵ Kubernetes
Installation
Cluster is k3s provisioned on bare-metal hosts with latest LTS Ubuntu OS using a modified version of Ansible role provided by k3s project.
🔸 Click here to see Ansible playbooks and roles._
Components
| Logo | Name | Description |
|---|---|---|
| GitHub Actions | CI system | |
| Ansible | Automate bare metal provisioning and configuration | |
| Ubuntu | Base OS for Kubernetes nodes | |
| K3s | Lightweight distribution of Kubernetes | |
| Kubernetes | Container-orchestration system, the backbone of this project | |
| Cilium | Kubernetes Networking | |
| kured | Kubernetes Reboot Daemon | |
| TopoLVM | Local storage based on LVM | |
| Longhorn | Distributed block storage | |
| Flux | GitOps tool built to deploy applications to Kubernetes | |
| ExternalSecrets | Secrets and encryption management system | |
| cert-manager | Cloud native certificate management | |
| Cloudflare | DNS | |
| Traefik | Kubernetes Ingress Controller | |
| oauth2-proxy | Authentication proxy | |
| Prometheus | Systems monitoring and alerting toolkit | |
| Thanos | Metrics datalake | |
| Grafana | Operational dashboards | |
| Loki | Log aggregation system | |
| Cloudnative-pg | Postgres Controller | |
| Homer | Portal Site | |
| HomeAssistant | Home Automation System | |
| ESPhome | Microcontrollers Management | |
| Mealie | Cookbook | |
| Immich | Photo Management | |
| Paperless-ngx | Document Management | |
| Changedetection | Monitoring website changes | |
| Jellyfin | Multimedia System | |
| Game Server | Valheim Game Server | |
| Atuin | Shell History | |
| AND | MANY | OTHERS |
GitOps
Flux watches manifests/ subdirectories in base and apps top-level directories and makes changes based on YAML manifests.
🌐 DNS
Dynamic DNS
My home IP can change at any given time and in order to keep my WAN IP address up to date on Cloudflare I have configured DDNS on Unifi Dream Machine Pro.
💽 Network Attached Storage
QNAP NAS TS-451DeU is used to manage NFS shares and backup them to B2 cloud using HBS.
🔧 Hardware
| Device | Count | RAM | Storage | Connectivity | Purpose | |--------------------------|-------|-------|----------------------------------|--------------------|-----------------| | Unifi Dream Machine Pro | 1 | N/A | N/A | 8x GbE + 2xSFP+ | Router | | Unifi US-16-PoE switch | 1 | N/A | N/A | 16x GbE + 2xSFP | Main Switch | | QNAP TS-451DeU | 1 | 16GB | 2x240GB NVMe RAID1 + 4x6TB RAID5 | 2x 2.5GbE LACP | NAS | | Raspberry Pi | 1 | ----- | ----- | 1x GbE | DNS Server | | HP EliteDesk G2 800 mini | 2 | 32GB | 240GB M2 SSD + 500GB SSD | 1x GbE | K3S Node | | Lenovo X1 Laptop | 1 | 48GB | 480GB NVMe + 1x 480GB SSD | 1x GbE | K3S Node | | Custom-built Server | 1 | 64GB | 480GB NVMe + 1TB SSD | 2x GbE LACP + 1GbE | K3S Node w/GPU | | Custom-built Server | 1 | 64GB | ??? | 1x GbE | K3S Node (spot) |
✨ Features
Project status: Alpha
- [x] Common applications: Plex, Nextcloud, HomeAssistant, Ghost...
- [x] Automated Kubernetes installation and management
- [x] Monitoring and alerting
- [x] Modular architecture, easy to add or remove features/components
- [x] Automated certificate management
- [x] Installing and managing applications using GitOps
- [x] CI/CD platform
- [x] Distributed storage
- [x] Automatically update DNS records for exposed services
🤝 Contributing
Any contributions you make, either big or small, are greatly appreciated.
🔏 Security
If you find any security issue please ping me using email (paulfantom+security@gmail.com)
Acknowledgements
- Icons are provided by homelab-svg-assets.
🏛️ License
Distributed under the MIT License. See LICENSE for more information.