apiVersion: argoproj.io/v1alpha1 kind: ApplicationSet metadata: name: postgres-referenz-fachverfahren namespace: argocd spec: generators: - git: repoURL: https://git.cooltux.net/dbaas/postgres.git revision: HEAD directories: - path: "referenz/*" # Sucht nach allen Verzeichnissen in "referenz/*" template: metadata: name: "{{path.basename}}" # Setzt den Namen basierend auf dem Verzeichnisnamen spec: project: dbaas source: repoURL: https://git.cooltux.net/dbaas/postgres.git targetRevision: HEAD path: "{{path}}" # Nutzt den spezifischen Verzeichnispfad (z.B. apps/nginx) destination: server: https://k8s-control1:6443 namespace: "{{path.basename}}" # Namespace wird basierend auf dem Verzeichnisnamen erstellt syncPolicy: automated: prune: true # Entfernt nicht mehr genutzte Ressourcen selfHeal: true # Automatische Wiederherstellung, falls der Clusterzustand abweicht syncOptions: - CreateNamespace=true # Hier wird sichergestellt, dass der Namespace automatisch angelegt wird - ServerSideApply=true # Aktiviert Server-Side Apply
apiVersion: argoproj.io/v1alpha1 kind: ApplicationSet metadata: name: postgres-produktion-fachverfahren namespace: argocd spec: generators: - git: repoURL: https://git.cooltux.net/dbaas/postgres.git revision: HEAD directories: - path: "produktion/*" # Sucht nach allen Verzeichnissen in "produktion/" template: metadata: name: "{{path.basename}}" # Setzt den Namen basierend auf dem Verzeichnisnamen spec: project: dbaas source: repoURL: https://git.cooltux.net/dbaas/postgres.git targetRevision: HEAD path: "{{path}}" # Nutzt den spezifischen Verzeichnispfad (z.B. produktion/instanz/10010067) destination: server: https://k8s-control1:6443 namespace: "{{path.basename}}" # Namespace wird basierend auf dem Verzeichnisnamen erstellt syncPolicy: automated: prune: true # Entfernt nicht mehr genutzte Ressourcen selfHeal: true # Automatische Wiederherstellung, falls der Clusterzustand abweicht syncOptions: - CreateNamespace=true # Hier wird sichergestellt, dass der Namespace automatisch angelegt wird - ServerSideApply=true # Aktiviert Server-Side Apply
Erklärung:
GitOps-Verzeichnisstruktur festlegen
dbaas-postgres/ ├── referenz/ ├── instanz1/ ├── Cluster.yml ├── instanz2/ ├── Cluster.yml ├── production/ ├── instanz1/ ├── MariaDB.yml ├── instanz2/ ├── MariaDB.yml dbaas-mariadb/ ├── referenz/ ├── instanz3/ ├── Cluster.yml ├── instanz4/ ├── Cluster.yml ├── production/ ├── instanz3/ ├── MariaDB.yml ├── instanz4/ ├── MariaDB.yml
Mit diesem Setup erreichen Sie Folgendes:
Dies ist eine sehr effektive Möglichkeit, um den vollen Vorteil des GitOps-Ansatzes zu nutzen, bei dem das Git-Repository die einzige Quelle der Wahrheit ist und die gesamte Deployment-Automatisierung darauf basiert.