A comprehensive Kubernetes homelab deployment using GitOps principles with ArgoCD. This repository manages the deployment of various self-hosted applications through Helm charts and ArgoCD automation.
This homelab setup provides a complete self-hosted infrastructure including:
- Identity & Authentication: Authentik SSO
- Storage: Longhorn distributed storage
- Monitoring: VictoriaMetrics, VictoriaLogs, Grafana
- Productivity: OpenCloud, Mattermost, GitLab
- Home Automation: Home Assistant
- Development: Code Server, LocalStack
- Utilities: Homer dashboard, Linkding bookmarks, Uptime Kuma, Hashicorp Vault
- ArgoCD monitors this Git repository and automatically syncs changes to the Kubernetes cluster
- Applications are generated by two ApplicationSets from
app.yamlfiles underkubernetes/ kubernetes/root.yamlbootstraps the top-level files ofkubernetes/
-
Helm apps (
/kubernetes/helm/)- Each directory with an
app.yamlbecomes an Application via thehelmApplicationSet (kubernetes/helm.yaml) app.yamlnames the chart and version; an optionalvalues.yamlnext to it is passed with the$valuesmulti-source pattern- Secrets are not stored in values: charts reference on-cluster Secrets by name (
secretKeyRef,envFromSecret,configSecret, ...), and those Secrets are created from Vault by theapp-secretskustomization via argocd-vault-plugin
- Each directory with an
-
Argo CD (
/kubernetes/argocd.yaml)- Plain Application synced by
root, with values inkubernetes/argocd/values.yaml - Notification tokens come from Vault via the
app-secretskustomization
- Plain Application synced by
-
Kustomizations (
/kubernetes/kustomizations/)- Kubernetes resource customizations for specific applications
- Used for complex configurations requiring custom manifests
- Each directory with an
app.yamlbecomes an Application via thekustomizationsApplicationSet (kubernetes/kustomizations.yaml);kubernetes/root.yamlbootstraps it
-
Automated Updates
- Renovate Bot: Automatically creates PRs for dependency updates
- K3s Updates: System components updated via Rancher's system-upgrade-controller
- Custom Regex Managers: Track versions for various components
├── charts/ # Local charts used by kubernetes/helm apps
├── kubernetes/
│ ├── root.yaml # Bootstrap Application for this directory
│ ├── argocd.yaml # Argo CD itself; values in argocd/
│ ├── helm.yaml # ApplicationSet over helm/**/app.yaml
│ ├── kustomizations.yaml # ApplicationSet over kustomizations/**/app.yaml
│ ├── helm/ # One directory per Helm release
│ │ ├── authentik/ # app.yaml + values.yaml
│ │ ├── longhorn/
│ │ └── ...
│ └── kustomizations/ # Custom Kubernetes resources
│ ├── app-secrets/ # Vault-backed Secrets consumed by the Helm apps
│ ├── home-assistant/
│ ├── rabbitmq-operator/
│ ├── system-upgrade/ # system-upgrade-controller + k3s upgrade Plans
│ └── ...
└── renovate.json # Automated dependency updates
This project is licensed under the MIT License - see the LICENSE file for details.
- @Smiggiddy - https://smig.tech
Note: This is a personal homelab configuration. Adjust values and configurations according to your specific requirements and environment.