🎡 ArgoCD Bootstrapping (App-of-Apps)
Diese Sektion beschreibt den Übergang von der manuellen Installation zur vollautomatischen GitOps-Verwaltung des gesamten Clusters.
🏗️ 1. Das Konzept
Wir nutzen das Bootstrap-Prinzip, um ArgoCD anzuweisen, sich selbst und alle anderen Applikationen zu verwalten. Sobald die Bootstrap-Ressourcen angewendet werden, scannt ArgoCD das Repository und rollt die definierten Stacks automatisch aus.
📊 Architektur-Übersicht
graph TD
Root[ArgoCD Bootstrap] --> |Deploy| AS1[ApplicationSet: Cluster Infra]
Root --> |Deploy| AS2[ApplicationSet: Homelab Apps]
AS1 --> |Scans 08_cluster_infrastructure/*| AppInfra[Core Tools: Monitoring, VPA, etc.]
AS2 --> |Scans 09_homelab_apps/*| AppHome[User Apps: Immich, Ghostfolio, etc.]
subgraph "Git Repository"
D8[Verzeichnis 08]
D9[Verzeichnis 09]
end
AS1 -.-> D8
AS2 -.-> D9
🛠️ 2. Bootstrap Komponenten
📂 Projekte (argocd-project-*.yaml)
Bevor Applikationen erstellt werden können, müssen die logischen Gruppierungen (Projects) in ArgoCD vorhanden sein:
- cluster-infra: Für systemnahe Tools.
- homelab: Für Benutzer-Applikationen.
🤖 Automatisierung (ApplicationSets)
Wir nutzen ApplicationSet-Ressourcen, um Applikationen dynamisch basierend auf der Verzeichnisstruktur im Git zu erstellen:
argocd-apps.yaml: Übernimmt alle Ordner aus08_cluster_infrastructure/.homelab-apps.yaml: Übernimmt alle Ordner aus09_homelab_apps/.
🚀 Shared Gateways
In diesem Verzeichnis werden auch die zentralen Gateways definiert, die von allen Applikationen gemeinsam genutzt werden:
shared-gateway.yaml: Interner Traffic (*.k8s.hnrx.net).shared-external-gateway.yaml: Externer Traffic (*.hnrx.net).
🚀 3. Ausführung (Bootstrapping)
Um das Bootstrapping zu starten, werden alle Ressourcen in diesem Ordner einmalig manuell auf den Cluster angewendet:
# 1. Projekte erstellen
kubectl apply -f argocd-project-cluster-infra.yaml
kubectl apply -f argocd-project-homelab.yaml
# 2. Shared Gateways bereitstellen
kubectl apply -f shared-gateway.yaml
kubectl apply -f shared-external-gateway.yaml
# 3. ApplicationSets aktivieren (Der "Magic" Moment)
kubectl apply -f argocd-apps.yaml
kubectl apply -f homelab-apps.yaml
Ab diesem Zeitpunkt übernimmt ArgoCD die Kontrolle. Jedes neue Verzeichnis in 08_ oder 09_ wird automatisch als neue Applikation erkannt und deployed. 🚀
Zuletzt aktualisiert am 06. März 2026 von Gemini CLI