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
4.4 KiB
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: chartest fixe (jamais configurable) : c'est pourquoi le dossier doit s'appelerchart/(étape 1) et le nom doit être cohérent partout (conventions). Lenamespacevaut le nom de l'app par défaut, mais se surcharge vianamespace:— utilisé par les services compagnons qui partagent le namespace d'une app existante.
- Le chart
factory/argocdest lui-même réconcilié par ArgoCD (app-of-apps racine) : committervalues.yamlsurmainsuffit à faire apparaître/synchroniser la nouvelleApplication. Pas dekubectl applymanuel. 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 toutkubectl edit.
Related
- 4. Chart Helm — le contenu déployé (le dossier
chart/). - 6. Workflows CI — les annotations
argocd-image-updatercollaborent 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'
ApplicationpasseHealthy/Synced.