My personal infrastructure and Kubernetes cluster written as code.
This project utilises Infrastructure as Code and GitOps to automate the provisioning, operating and updating of self-hosted services in my homelab. Furthermore, this repository can also serve as a good framework for you to build your own homelab.
Feel free to open a GitHub issue if you have any questions!
First, configure a gateway running OPNsense, get a controller running Ubuntu, and install Talos
Linux on several servers for Kubernetes nodes. Then, install the prerequisites in Brewfile
and update Ansible and environmental variables. Finally, run ./scripts/bootstrap.sh
to install
everything on the controller and Kubernetes nodes!
Logo | Name | Description |
---|---|---|
Ansible | Bare metal provisioning and configuration | |
Argo CD | GitOps operator for managing Kubernetes cluster | |
Cilium | Cloud native internal networking for Kubernetes | |
Kubernetes | Orchestration system for managing containers | |
OPNsense | Operating system for external gateway | |
Prometheus | Monitoring system for metrics and alerting | |
Proxmox | Virtualization platform for virtual machines | |
Rook Ceph | Cloud native storage for Kubernetes | |
Talos Linux | Linux distribution for Kubernetes nodes | |
Traefik | Cloud native ingress controller for Kubernetes | |
Ubuntu | Linux distribution for controller | |
Vault | Secrets and encryption management system | |
Woodpecker | Continuous integration and delivery platform |
My infrastructure currently consists of multiple nodes with the following specifications.
- Gateway, Controller, Talos 1: Miniroute R1, Intel N100, 16GB RAM, 512GB SSD
- Talos 2: ThinkCenter M920x, Intel i5-8600T, 32GB RAM, 256GB + 1TB SSD
- Talos 3: ThinkCenter M920x, Intel i5-8600T, 32GB RAM, 256GB + 1TB SSD
This project is licensed under the MIT License.