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. These services are essential for my everyday life. 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 bare metal Rocky Linux machine with reference to
kickstart.ks. Then,
install prerequisites in Brewfile and update Ansible and environmental variables. Finally, run
./scripts/bootstrap.sh
to install everything on the server!
Logo | Name | Description |
---|---|---|
Ansible | Bare metal provisioning and configuration | |
Flux | GitOps operator for managing Kubernetes cluster | |
Kubernetes | Orchestration system for managing containers | |
Rocky Linux | Main operating system for infrastructure | |
Rook Ceph | Cloud native block storage for Kubernetes | |
Talos Linux | Base operating system for Kubernetes nodes | |
Terraform | Provision resources on external environments | |
Traefik | Cloud native ingress controller for Kubernetes | |
Vault | Secrets and encryption management system |
My cluster currently consists of a single node with the following specifications.
- CPU: Intel Xeon E5-2683v4
- RAM: Micron 16GB DDR4 ECC x2
- SSD: Samsung 980 NVMe 500GB
- HDD: Seagate IronWolf 4TB x2
Special thanks to the Kubernetes @Home community for inspiration and support!
This project is licensed under the MIT License.