apiVersion: argoproj.io/v1alpha1 kind: ApplicationSet metadata: name: external-devices namespace: argocd-ops spec: generators: # Les certificats sont créés UNIQUEMENT dans le cluster OPS # qui a cert-manager installé et accès à Internet pour Let's Encrypt - merge: generators: # Premier générateur : scanne les répertoires Helm pour les certificats - git: repoURL: https://git.gkdomaine.fr/kubernetes/argocd.git revision: main directories: - path: "helm/external-devices/*" # Deuxième générateur : lit la config OPS uniquement - git: repoURL: https://git.gkdomaine.fr/kubernetes/argocd.git revision: main files: - path: "configs/*/config.json" mergeKeys: - path.basename template: metadata: name: external-devices-{{path.basename}} annotations: # Forcer ArgoCD à gérer les Endpoints argocd.argoproj.io/sync-options: "ServerSideApply=true" spec: project: '{{path.basename}}' source: repoURL: '{{repository}}' targetRevision: '{{targetRevision}}' path: '{{helmPath}}/external-devices/{{path.basename}}' helm: valueFiles: - values.yaml destination: name: '{{name}}' namespace: 'traefik-{{path.basename}}' syncPolicy: automated: prune: true selfHeal: true syncOptions: - CreateNamespace=true # ServerSideApply pour mieux gérer les Endpoints - ServerSideApply=true