diff --git a/07_bootstrap_argocd/00_installation_instructions.md b/07_bootstrap_argocd/00_installation_instructions.md index 950c10f..9b17b90 100644 --- a/07_bootstrap_argocd/00_installation_instructions.md +++ b/07_bootstrap_argocd/00_installation_instructions.md @@ -1,10 +1,68 @@ -# Zwischenstand -Der Cluster hat bereits folgendes installiert: -- Cilium Netzwerk mit BGP -- Envoy Gateway API -- Cert-Manager -- External DNS für Einträge im Unifi-DNS-Server +# 🎡 ArgoCD Bootstrapping (App-of-Apps) -## Weitere Infrastuktur-Bestandteile installieren +Diese Sektion beschreibt den Übergang von der manuellen Installation zur vollautomatischen GitOps-Verwaltung des gesamten Clusters. -Diese werden mit ArgoCD gemanagt. \ No newline at end of file +## 🏗️ 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 +```mermaidjs +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 aus `08_cluster_infrastructure/`. +- **`homelab-apps.yaml`:** Übernimmt alle Ordner aus `09_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: + +```bash +# 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*