๐ ๐ป My personal homelab playground, stored as code.
๐ HomeLab-2.0 ๐ป
My personal homelab playground, stored as code.
The goal is to seamlessly bootstrap a Kubernetes cluster with all the bells and whistles
โ from infrastructure to apps โ
in one smooth, reproducible flow.
Aiming to keep things as lightweight and simple as possible, while still providing flexibility.
โจ Features
- ๐ One-command cluster provisioning
mise run up <env>
- ๐ Automatic application discovery
- ๐งฐ One entrypoint to rule them all
mise tasks to discover everything you need.
- โ Catch issues before they catch you
- ๐ ๏ธ Isolated development setup, zero headaches
- ๐ Manage multiple environments effortlessly
- ๐ Secret management made easy
๐๏ธ Foundation stack
This section describes the essential infrastructure components that form the backbone of the homelab environment.
- Infrastructure
- GitOps
- Networking
- Storage
- Monitoring
- Security
- Authentication
- Development
๐ Get up and running
How to deploy the entire cluster from the ground up.
- Setup devcontainer.
- To provision and configure a full-blown cluster simply run:
mise run up <env>
This command will:
1. Use Terraform to provision TalosOS machines on the Proxmox host and initialize the Kubernetes cluster.
1. Deploy ArgoCD using the bootstrap configuration to enable GitOps workflows.
1. Automatically discover and deploy all applications defined in the apps/ directory through ArgoCD ApplicationSets.
- Good to go ๐
You can now interact with the cluster: kubectl get pods -A
๐ Project structure
This repository follows a GitOps approach using ArgoCD for continuous deployment. The structure is organized as follows:
.lint/: Linting configurations
.mise/: Mise configurations
tasks: Reusable scripts for cluster management, provisioning, and automation.
apps/: Contains all applications deployed to the cluster
<env>/<project>/<namespace>/<app> structure
* Each app contains its kustomization.yaml and configurations
* Namespaces are created automatically during deployment
bootstrap/: Contains initial cluster setup and ArgoCD configuration
projects/: Contains ArgoCD project definitions
* resources/: Essential cluster-wide resources
* misc/: Miscellaneous bootstrap configurations
provision/: Contains Terraform infrastructure provisioning scripts and configurations
core/: Core Terraform modules and scripts for cluster provisioning
* <env>/: Environment-specific Terraform variable files (e.g., dev/, prd/)
๐ To do
This section outlines a list of planned improvements and upcoming features, presented in no particular order.
- [ ] Investigate Cilium load balancer IPAM as al alternative for Metallb.
- [ ] Investigate Cillum Gateway API as an alternative for Nginx ingress controller.
- [ ] Implement Dex IdP.
- [ ] Refactor ArgoCD config management plugin script.
- [ ] Setup alerting rules and channels.
- [ ] Deploy Trivy Operator.
- [ ] Checkout Sidero Omni.
- [ ] Implement KRR