The name comes from a silly portmanteau between kube and m1k (my nickname)
This repository contains the Terraform code for deploying and managing a homelab k8s infrastructure.
The kub1k project aims to provide a scalable and easily maintainable Kubernetes cluster using K3s. The base infrastructure is provisioned using Terraform; once the cluster and CNI are operational, ArgoCD handles the application deployment and management.
The following components are part of this setup:
Component | Source |
---|---|
ArgoCD | https://github.com/argoproj/argo-cd |
External Secrets Operator | https://github.com/external-secrets/external-secrets |
Calico | https://github.com/projectcalico/calico |
Metallb | https://github.com/metallb/metallb |
HAProxy Ingress | https://github.com/jcmoraisjr/haproxy-ingress |
GitHub Actions Runner Controller | https://github.com/actions/actions-runner-controller |
Kube-Prometheus-Stack | https://github.com/prometheus-community/helm-charts |
Cert-Manager | https://github.com/cert-manager/cert-manager |
Synology CSI Driver | https://github.com/SynologyOpenSource/synology-csi |
Custom Helm charts | https://github.com/ironashram/kub1k/tree/main/charts |
Before deploying the infrastructure, make sure you have the following prerequisites:
- OpenTofu: Version >= 1.9.0
- Helm: Version >= 3.0.0
- Kubernetes: Version >= 1.21.0
- Vault: Version >= 1.7.0
To deploy the infrastructure, follow these steps:
- Clone this repository to your local machine.
- Navigate to the project directory.
- Initialize the Terraform backend by running
make init kub1k
. - Review and modify the variables in the
variables.tf
file according to your environment. - Run
make plan kub1k
to see the execution plan. - Run
make apply kub1k
to deploy the infrastructure.
For more detailed instructions, please refer to the Terraform documentation.
This project is licensed under the MIT License.
The grafana dashboards are based on the followings projects: