Files
factory/doc/runbooks/new-web-app/07-argocd-register.md
arcodangeandClaude Opus 4.8 e1167eec27 docs(runbook) — chapitre « service compagnon » (namespace + stack partagés)
Le runbook new-web-app couvre l'app autonome (dépôt/base/Vault/namespace propres,
tout nommé <app>). Il manquait le cas du SERVICE COMPAGNON : un second service qui
partage le namespace — et parfois le stack Vault/DB — d'une app existante (API cœur
à côté de son front, façade d'analyse). Deux précédents vivants non documentés :
kadans-jobs (namespace seul) et kadans-api (namespace + base + Vault).

- Nouvelle page 09-service-compagnon.md : compagnon vs app autonome ; les deux
  formes (sans état / partage Vault+DB) ; le PIÈGE du VaultAuth manquant quand
  l'app primaire ne consomme pas Vault (front statique) → le compagnon pose son
  propre VaultAuth mais avec le rôle+SA du PRIMAIRE ; carte, précédents, delta de
  checklist.
- 07-argocd-register.md : ajoute la ligne `namespace:` aux options (elle existait
  dans values.yaml — kadans-jobs — mais n'était pas documentée) ; corrige le
  callout qui affirmait le namespace « non configurable ».
- conventions.md : note l'exception compagnon à la règle « tout est <app> ».
- README.md : entrée 09 dans l'index + Last Updated.

Vérifié : VaultAuth erp nommé `auth` ; connexion via pgbouncer.tools ; liens
internes tous résolus.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
Claude-Session: https://claude.ai/code/session_013ws8L74dVZmp97Wu36fm8j
2026-07-24 10:38:27 +02:00

4.4 KiB
Raw Permalink Blame History

Factory > Doc > Runbooks > Nouvelle application web > 7. Enregistrement ArgoCD

7. Enregistrer l'app dans ArgoCD

Status: Active Upstream: 4. Chart Helm, 6. Workflows CI Related: Conventions de nommage · Checklist


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 <app>, et resynchroniser à chaque push.

Action

Ajouter <app> sous gitea_applications dans factory/argocd/values.yaml :

gitea_applications:
  webapp: { … }
  erp:
    annotations: {}
  <app>:                         # ← cas simple
    annotations: {}

Variante avec auto-déploiement sur nouvelle image (recommandé pour une image maison) :

  <app>:
    annotations:
      argocd-image-updater.argoproj.io/image-list: <app>=gitea.arcodange.lab/arcodange-org/<app>:latest
      argocd-image-updater.argoproj.io/<app>.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)
namespace: <autre> service compagnon partageant le namespace d'une app existante déploie hors du namespace <app> (défaut = nom de l'app) — voir 9. Service compagnon
syncPolicy: … contrôle manuel surcharge la policy (défaut : automated {prune, selfHeal})

Ce que ça génère

Le template argocd/templates/apps.yaml rend, pour chaque entrée :

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: <app>
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://gitea.arcodange.lab/arcodange-org/<app>   # <org> = arcodange-org par défaut
    targetRevision: HEAD
    path: chart                                                # ← d'où l'exigence du dossier chart/
  destination:
    server: https://kubernetes.default.svc
    namespace: <app>                                           # = nom de l'app
  syncPolicy:
    automated: { prune: true, selfHeal: true }
    syncOptions: [ CreateNamespace=true ]                      # le namespace est créé tout seul
%%{init: {'theme': 'base'}}%%
flowchart LR
    classDef gitops fill:#7c3aed,stroke:#6d28d9,color:#fff
    classDef k8s fill:#2563eb,stroke:#1e40af,color:#fff
    VAL["values.yaml<br>gitea_applications.app"]:::gitops --> APP["Application ArgoCD<br>app"]:::gitops
    APP -->|"path: chart, HEAD"| SYNC["sync du dépôt<br>arcodange-org/app"]:::gitops
    SYNC --> NS["namespace app<br>(CreateNamespace=true)"]:::k8s
    NS --> DEP["Deployment + Service + Ingress + CRD Vault"]:::k8s

Notes / contraintes

Important

path: chart est fixe (jamais configurable) : c'est pourquoi le dossier doit s'appeler chart/ (étape 1) et le nom doit être cohérent partout (conventions). Le namespace vaut le nom de l'app par défaut, mais se surcharge via namespace: — utilisé par les services compagnons qui partagent le namespace d'une app existante.

  • 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.
  • 4. Chart Helm — le contenu déployé (le dossier chart/).
  • 6. Workflows CI — les annotations argocd-image-updater collaborent avec l'image poussée.
  • 9. Service compagnon — le champ namespace: pour déployer dans le namespace d'une app existante.
  • 8. Checklist — vérifier que l'Application passe Healthy/Synced.