Automated infrastructure and application management for my home laboratory.
This repository manages a Kubernetes-based homelab environment using a declarative approach. It leverages OpenTofu for infrastructure provisioning and ArgoCD for continuous delivery of applications.
- Infrastructure (IaC):
- Talos Linux: Secure, immutable, and minimal Linux distribution for Kubernetes, managed via the
siderolabs/talosprovider. - MikroTik: Network infrastructure configuration via the
terraform-routeros/routerosprovider. - Cloudflare: DNS and external connectivity management via the
cloudflare/cloudflareprovider.
- Talos Linux: Secure, immutable, and minimal Linux distribution for Kubernetes, managed via the
- GitOps:
- ArgoCD: Deployed via Helm charts in
argocd.tf. It watches this repository to sync applications located in theapps/directory.
- ArgoCD: Deployed via Helm charts in
/infra: OpenTofu configurations for provisioning physical/network infrastructure (Talos, MikroTik, Cloudflare)./apps: Kubernetes manifests for applications, organized by service name.argocd.tf: Bootstraps ArgoCD and the App of Apps pattern.providers.tf: Global provider configuration (Kubernetes, Helm).
- Infrastructure: Navigate to
infra/, initialize withtofu init, and apply configurations. - Cluster Access: Use the appropriate
talosconfigto interact with nodes. - GitOps: ArgoCD is bootstrapped via
argocd.tf. It synchronizes applications inapps/based on defined sync waves:- -25 External Secrets Operator, cert-manager
- -20 Secrets & Cert resources
- -15 Ingress & Gateway-API
- -10 Core operators
- -5 Core resources
- 0 Applications