Training Module
Kubernetes GitOps at Scale — App-of-Apps & Sync-Waves
In diesem 110-Minuten-Modul löst ihr ein Problem, das im
ArgoCD-Kurs bewusst außen vor geblieben ist: Eine einzelne
Application pro Kommando zu pflegen funktioniert für
eine Demo, aber nicht für zehn, zwanzig oder hundert Anwendungen –
spätestens dann will niemand mehr jede Application
einzeln per kubectl apply anlegen. Das
App-of-Apps-Pattern löst das: Eine
Parent-Application zeigt nicht auf rohe
Deployment-Manifeste, sondern auf ein Git-Verzeichnis voller
Application-Manifeste – und wenn die Parent-Application
synct, legt ArgoCD alle darin beschriebenen
Child-Applications selbst an. Danach seziert ihr die
Sync-Waves: die Annotation
argocd.argoproj.io/sync-wave, mit der sich eine
erzwungene Reihenfolge zwischen Ressourcen durchsetzen lässt, die
voneinander abhängen – etwa ein Namespace vor einem Secret, das
wiederum vor einem Deployment existieren muss, das dieses Secret
mountet. Im ersten Hands-on registriert ihr eine Parent-Application,
deren source ein Git-Verzeichnis mit drei
Child-Application-Manifesten ist, löst den Sync aus und beobachtet
live, wie ArgoCD alle drei Child-Applications automatisch anlegt und
synct – ohne dass ihr eine einzige davon selbst per
kubectl apply registriert. Im zweiten Hands-on baut ihr
euch zunächst bewusst eine Race-Bedingung: Namespace,
Secret und Deployment gleichzeitig ohne Sync-Wave deployen, und live
sehen, wie das Deployment das Secret nicht mounten kann, weil es zum
Zeitpunkt des Pod-Starts noch nicht existiert. Anschließend behebt
ihr das mit sync-wave-Annotationen (
-1/0/1) und beobachtet, wie
ArgoCD jetzt wartet, bis eine Welle abgeschlossen ist, bevor die
nächste startet. Ein kurzer Ausblick ohne eigenes Hands-on rundet
ab: ApplicationSet als Generator-basierte Alternative
zum manuell gepflegten Child-App-Verzeichnis, sowie eine vertiefte
Abgrenzung zu Flux’ eigenem Dependency-Modell.
Ausdrücklich NICHT Teil dieses Kurses: Progressive
Delivery mit Argo Rollouts (eigenes Aufbaumodul), CI/Image-Build und
ein eigenständiger Multi-Cluster-Hands-on – der Anwendungsfall
Multi-App-/Cluster-Bootstrap wird benannt und eingeordnet, aber
nicht selbst als zweiter Cluster aufgebaut. Pflicht ist das Modul
“Kubernetes GitOps — Deklaratives Deployment mit ArgoCD” – dieses
Modul setzt dessen Git-Repo und ArgoCD-Installation direkt fort,
statt sie zu wiederholen. Die Session läuft komplett lokal über
Minikube (–driver=docker) – ArgoCD selbst läuft rein
containerisiert im Cluster, ohne Cloud-Account und ohne
Kostenwirkung.
Format
110 Minuten, live (remote oder vor Ort), Input & zwei Hands-on-Übungen
Teilnehmende
Absolvent:innen von “Kubernetes GitOps — Deklaratives Deployment mit ArgoCD”, die mehrere GitOps-verwaltete Anwendungen zentral statt einzeln steuern wollen
Voraussetzungen
Abgeschlossenes Modul “Kubernetes GitOps — Deklaratives Deployment mit ArgoCD” (Pflicht) – Application-CRD, Sync-/Health-Status und Reconciliation-Loop gelten als bekannt, lauffähige lokale Docker-Umgebung für Minikube
Warum dieses Training für deine Organisation wirkt
Ein Sync, viele Anwendungen
Statt zehn Application-Objekte einzeln per
kubectl apply zu pflegen, registriert ihr eine
einzige Parent-Application – der Rest entsteht automatisch aus
eurem Git-Repo, inklusive Prune/Self-Heal für jede
Child-Application einzeln.
Reihenfolge wird erzwungen, nicht gehofft
Ohne Sync-Wave verlässt ihr euch darauf, dass ein Secret
“zufällig” vor dem Deployment existiert, das es mountet. Mit
sync-wave-Annotationen wartet ArgoCD nachweislich,
bis eine Welle abgeschlossen ist, bevor die nächste beginnt.
Der Weg zum Multi-App-/Cluster-Bootstrap
App-of-Apps ist der strukturelle Baustein, mit dem Teams später ganze Cluster oder ganze Anwendungslandschaften aus einem einzigen Git-Repo heraus bootstrappen – ein Anwendungsfall, den ihr hier kennenlernt und einordnet, ohne ihn selbst als zweiten Cluster nachzubauen.
Was Teilnehmende mitnehmen
- Eine Parent-Application als App-of-Apps-Root aufsetzen, deren
sourceein Git-Verzeichnis mit mehreren Child-Application-Manifesten ist, und darüber mehrere Child-Applications zentral steuern. - Live beobachten, wie ArgoCD beim Sync der Parent-Application automatisch alle darin beschriebenen Child-Applications anlegt und selbst synct.
- Die Annotation
argocd.argoproj.io/sync-waveeinsetzen, um eine erzwungene Reihenfolge zwischen abhängigen Ressourcen durchzusetzen (z. B. Namespace → Secret → Deployment), statt sich auf Zufallsreihenfolge zu verlassen. - Live erleben, was ohne Sync-Wave passiert: eine Race-Bedingung, bei der ein Deployment ein noch nicht existierendes Secret nicht mounten kann – und wie
sync-wave-Annotationen (-1/0/1) genau das beheben. - Den Anwendungsfall Multi-App-/Cluster-Bootstrap benennen und einordnen: App-of-Apps als struktureller Baustein für zentral gesteuerte, große GitOps-Landschaften.
ApplicationSetals Generator-basierte Alternative zum manuell gepflegten Child-App-Verzeichnis sowie eine vertiefte Abgrenzung zu Flux’ eigenem Dependency-Modell konzeptionell einordnen – bewusst ohne eigenes Hands-on zu diesen Punkten.- Benennen, was dieses Modul bewusst nicht behandelt: Progressive Delivery mit Argo Rollouts, CI/Image-Build und ein eigenständiger Multi-Cluster-Hands-on.
Für wen dieses Modul ideal ist
- • Absolvent:innen von “Kubernetes GitOps — Deklaratives Deployment mit ArgoCD” oder gleichwertigen Vorkenntnissen
- • Teams, die schon mehr als eine
Applicationpflegen und den manuellenkubectl apply-Aufwand pro Anwendung loswerden wollen - • Alle, die vor dem ersten produktiven Multi-App-Rollout wissen wollen, wie sich eine erzwungene Reihenfolge zwischen abhängigen Ressourcen technisch durchsetzen lässt – bevor eine Race-Bedingung produktiv auffällt
Rahmendaten
- • Dauer: 110 Minuten live (remote oder vor Ort)
- • Format: Input, Live-Demo, zwei Hands-on-Übungen (Parent-Application & Child-Apps, Race-Bedingung ohne Sync-Wave → Fix mit Sync-Wave-Annotationen)
- • Voraussetzungen: abgeschlossenes Modul “Kubernetes GitOps — Deklaratives Deployment mit ArgoCD” (Pflicht), lauffähige lokale Docker-Umgebung für Minikube, keine Cloud-Kostenwirkung
Modulaufbau & Agenda
GitOps-Recap (10 min): kurzer Rückblick auf Reconciliation-Loop,
Application-CRD und Sync-/Health-Status aus dem Vorgängerkurs – als bekannt vorausgesetzt, nicht neu hergeleitet.App-of-Apps-Konzept (15 min): Parent-Application als App-of-Apps-Root, Child-Applications als von ihr verwaltete Objekte, Anwendungsfall Multi-App-/Cluster-Bootstrap.
Hands-on 1: Parent-Application & Child-Apps (30 min, Hands-on): Parent-Application registrieren, deren
sourceein Git-Verzeichnis mit drei Child-Application-Manifesten ist, Sync auslösen, live beobachten, wie ArgoCD alle Child-Applications automatisch anlegt.Sync-Waves-Konzept (10 min): die Annotation
argocd.argoproj.io/sync-wave, wie ArgoCD Wellen sortiert und nacheinander abarbeitet.Hands-on 2: Race ohne Sync-Wave → Fix mit Sync-Wave (35 min, Hands-on): Namespace, Secret und Deployment zunächst ohne Sync-Wave gemeinsam deployen und die Race-Bedingung live sehen, danach mit
sync-wave-Annotationen (-1/0/1) korrigieren.Ausblick ohne Hands-on & Abschluss (10 min):
ApplicationSetals Generator-Alternative, vertiefte Abgrenzung zu Flux; Progressive Delivery, CI/Image-Build und eigenständiger Multi-Cluster-Hands-on ausdrücklich nicht Teil dieses Kurses.
Dieses Modul setzt das Aufbaumodul
Kubernetes GitOps — Deklaratives Deployment mit ArgoCD
zwingend voraus. Die Application-CRD, Sync-Status
(Synced/OutOfSync) gegen Health-Status
(Healthy/Degraded/Progressing)
und die Reconciliation-Loop gelten als bekannt und werden hier
nicht erneut hergeleitet – Hands-on 1 setzt direkt auf dem dort
aufgebauten Git-Repo und der dort installierten ArgoCD-Instanz
auf.
Was dieses Modul bewusst nicht behandelt:
ApplicationSet als Generator-basierte Alternative
zum manuell gepflegten Child-App-Verzeichnis (List-, Git- und
Cluster-Generator) sowie eine vertiefte Abgrenzung zu Flux’
eigenem Dependency-Modell (Kustomization
dependsOn) – beides nur als Ausblick genannt, kein
eigenes Hands-on hier. Für List- und Git-Directory-Generator gibt
es dafür das eigenständige Aufbaumodul
Kubernetes GitOps at Scale — ApplicationSet & Generators
, das direkt auf diesem Kurs aufsetzt und dieselben drei
Child-Services weiterverwendet. Für die vertiefte
Flux-Abgrenzung samt Umstiegsszenario gibt es das eigenständige
Aufbaumodul
Kubernetes GitOps mit Flux — Abgrenzung und Umstieg von ArgoCD. Ebenfalls nicht Thema:
Progressive Delivery mit Argo Rollouts
(Canary/Blue-Green) – dafür gibt es das eigenständige
Aufbaumodul
Kubernetes Progressive Delivery — Canary & Blue-Green mit Argo Rollouts.
Kein CI/Image-Build (das leistet das Modul
CI: Continuous Integration & der Build-Prozess
). Und kein eigenständiger Multi-Cluster-Hands-on: Der
Anwendungsfall Multi-App-/Cluster-Bootstrap wird in Block 2 als
Konzept benannt und eingeordnet, aber nicht selbst als zweiter
Cluster aufgebaut – dieses 110-Minuten-Modul bleibt bei einem
einzigen Minikube-Cluster.
Hands-on Inhalte (Auszug)
Parent-Application registrieren
- Drei Child-
Application-Manifeste in einem Git-Verzeichnisapps/ablegen, committen und pushen - Eine Parent-
Applicationanwenden, derensource.pathauf genau dieses Verzeichnis zeigt, mitsyncPolicy.automatedfür Auto-Sync
Child-Apps automatisch beobachten
- Mit
kubectl -n argocd get application -wlive sehen, wie drei Child-Applications ohne eigeneskubectl applyentstehen - Jede Child-Application einzeln auf
Synced/Healthyprüfen
Race-Bedingung ohne Sync-Wave
- Namespace, Secret und Deployment ohne
sync-wave-Annotation gemeinsam in einer Child-Application deployen - Live beobachten, wie das Deployment das Secret nicht mounten kann, weil es zum Pod-Start noch nicht existiert
Fix mit Sync-Wave-Annotationen
- Annotationen
argocd.argoproj.io/sync-wave: “-1”(Namespace),“0”(Secret) und“1”(Deployment) ergänzen - Erneut synchen und bestätigen, dass die Deployment-Welle erst startet, wenn die Secret-Welle
Healthyist
Dieses Modul ist Teil unserer Pilotphase. Gemeinsam mit euch definieren wir passende Metriken (z. B. Zeit von der Parent-Application-Registrierung bis alle Child-Applications bestätigt Synced/Healthy sind) und werten sie im Anschluss transparent aus. Ergebnisse veröffentlichen wir, sobald sie belastbar sind.
Bereit, das Modul zu buchen?
Wir passen die Hands-on-Übung auf euren Erfahrungsstand und eure Zielumgebung an.
Academy Briefing anfragen