App-of-Apps (Bootstrapping)
Eine Parent-Application zeigt auf einen Ordner (oder ein
Chart) voller Application-Manifeste, ein Sync bootstrappt
den ganzen Cluster deklarativ. Sync-Waves zwischen Child-Apps
warten nur mit einem Lua-Health-Check für
argoproj.io_Application, eingebaut ist er seit v1.8
nicht mehr.
Achtung: Wer ins Parent-Repo pushen darf, kann Applications in beliebige Projekte legen, Push-Zugriff dorthin ist Admin-Level. ApplicationSets ebenso nur von Admins anlegen und ändern lassen.
ApplicationSet-Generators
Template + Generator = Applications in Serie: List (feste Wertepaare), Cluster (alle in Argo CD registrierten Cluster), Git (Directories/Files eines Repos), SCM-Provider und Pull-Request (Repo-/PR-Discovery via Provider-API), Plugin (eigener RPC-Dienst), Cluster Decision Resource (Cluster-Auswahl per CR).
Matrix kombiniert zwei Generators (z.B. Cluster × Git), Merge überlagert Parameter mehrerer Generators.
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata: {name: workloads, namespace: argocd}
spec:
goTemplate: true
goTemplateOptions: ["missingkey=error"]
generators:
- matrix:
generators:
- clusters: {} # alle registrierten Cluster
- git:
repoURL: https://git.example.com/deploy.git
revision: HEAD
directories:
- path: apps/*
template:
metadata:
name: '{{.name}}-{{.path.basename}}'
spec:
project: workloads
source:
repoURL: https://git.example.com/deploy.git
targetRevision: HEAD
path: '{{.path.path}}'
destination:
server: '{{.server}}'
namespace: '{{.path.basename}}'
syncPolicy:
automated: {prune: true, selfHeal: true}