[Factory](../../../README.md) > [Doc](../../README.md) > [Runbooks](../README.md) > [Nouvelle application web](README.md) > **7. Enregistrement ArgoCD** # 7. Enregistrer l'app dans ArgoCD > **Status:** ✅ Active > **Upstream:** [4. Chart Helm](04-helm-chart.md), [6. Workflows CI](06-ci-workflows.md) > **Related:** [Conventions de nommage](conventions.md) · [Checklist](08-checklist.md) --- ## Summary ArgoCD fonctionne en **app-of-apps** : le chart `factory/argocd` lit une liste d'applications dans son `values.yaml` et génère une ressource `Application` par entrée. Enregistrer l'app = ajouter son nom à cette liste. ArgoCD se charge ensuite de cloner le dépôt, déployer `chart/` dans le namespace ``, et resynchroniser à chaque push. ## Action Ajouter `` sous `gitea_applications` dans [`factory/argocd/values.yaml`](https://gitea.arcodange.lab/arcodange-org/factory/src/branch/main/argocd/values.yaml) : ```yaml gitea_applications: webapp: { … } erp: annotations: {} : # ← cas simple annotations: {} ``` Variante avec **auto-déploiement** sur nouvelle image (recommandé pour une image maison) : ```yaml : annotations: argocd-image-updater.argoproj.io/image-list: =gitea.arcodange.lab/arcodange-org/:latest argocd-image-updater.argoproj.io/.update-strategy: digest ``` Options supplémentaires : | Champ | Quand l'utiliser | Effet | |---|---|---| | `org: arcodange` | dépôt hors `arcodange-org` | change le `repoURL` (défaut `arcodange-org`) | | `syncPolicy: …` | contrôle manuel | surcharge la policy (défaut : `automated {prune, selfHeal}`) | ## Ce que ça génère Le template [`argocd/templates/apps.yaml`](https://gitea.arcodange.lab/arcodange-org/factory/src/branch/main/argocd/templates/apps.yaml) rend, pour chaque entrée : ```yaml apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: namespace: argocd spec: project: default source: repoURL: https://gitea.arcodange.lab/arcodange-org/ # = arcodange-org par défaut targetRevision: HEAD path: chart # ← d'où l'exigence du dossier chart/ destination: server: https://kubernetes.default.svc namespace: # = nom de l'app syncPolicy: automated: { prune: true, selfHeal: true } syncOptions: [ CreateNamespace=true ] # le namespace est créé tout seul ``` ```mermaid %%{init: {'theme': 'base'}}%% flowchart LR classDef gitops fill:#7c3aed,stroke:#6d28d9,color:#fff classDef k8s fill:#2563eb,stroke:#1e40af,color:#fff VAL["values.yaml
gitea_applications.‹app›"]:::gitops --> APP["Application ArgoCD
‹app›"]:::gitops APP -->|"path: chart, HEAD"| SYNC["sync du dépôt
arcodange-org/‹app›"]:::gitops SYNC --> NS["namespace ‹app›
(CreateNamespace=true)"]:::k8s NS --> DEP["Deployment + Service + Ingress + CRD Vault"]:::k8s ``` ## Notes / contraintes > [!IMPORTANT] > `path: chart` et `namespace: ` sont **déduits du nom**, pas configurables par entrée. C'est pourquoi le dossier doit s'appeler `chart/` ([étape 1](01-gitea-repo.md)) et le nom doit être cohérent partout ([conventions](conventions.md)). - Le chart `factory/argocd` est lui-même réconcilié par ArgoCD (app-of-apps racine) : committer `values.yaml` sur `main` suffit à faire apparaître/synchroniser la nouvelle `Application`. Pas de `kubectl apply` manuel. - `prune: true` + `selfHeal: true` : ArgoCD supprime ce qui n'est plus dans le chart et réécrase les dérives manuelles. En tenir compte avant tout `kubectl edit`. ## Related - [4. Chart Helm](04-helm-chart.md) — le contenu déployé (le dossier `chart/`). - [6. Workflows CI](06-ci-workflows.md) — les annotations `argocd-image-updater` collaborent avec l'image poussée. - [8. Checklist](08-checklist.md) — vérifier que l'`Application` passe `Healthy`/`Synced`.