Skip to content

🐛 [BUG] - ArgoCD : un secret-id Vault AppRole est gĂ©nĂ©rĂ© Ă  chaque synchronisation #2622

Description

@shikanime

Description

generateVaultValues (argocd.service.ts:399-416) génÚre un nouveau secret-id Vault AppRole à chaque synchronisation via vault.createAuthApproleRoleSecretId(projectSlug) (argocd.service.ts:405, méthode vault-client.service.ts:404-413).

Cette mĂ©thode fait un POST brut (auth/approle/role/{roleName}/secret-id) qui gĂ©nĂšre un secret-id frais Ă  chaque appel — aucune vĂ©rification d'existence, aucune rĂ©utilisation, pas de listing prĂ©alable. AppelĂ©e sur chaque project.upsert et chaque cron, elle a deux consĂ©quences :

  1. Les secret-id s'accumulent dans Vault au fil des ré-synchronisations.
  2. Le secret-id frais est embarquĂ© dans values → le diff de contenu de generateCreateOrUpdateAction est toujours « sale » → un nouveau commit est Ă©crit Ă  chaque cron/upsert mĂȘme quand rien n'a changĂ©.

Le .catch(() => undefined) (argocd.service.ts:405-408) masque les échecs au lieu de régler l'idempotence. Le role-id, lui, est bien relu via GET (:401).

Etapes de reproduction

  1. DĂ©clencher deux synchronisations successives du mĂȘme projet (upsert puis cron, ou deux upserts).
  2. Observer qu'un nouveau secret-id Vault est généré à chaque run et qu'un commit values.yaml est écrit à chaque run.
  3. Constater l'accumulation des secret-id dans Vault.

Version de la console impactée

server-nestjs (module ArgoCD)

Définition du fini

  • Le secret-id Vault AppRole est relu/rĂ©utilisĂ© quand il existe, plutĂŽt que gĂ©nĂ©rĂ© Ă  chaque sync
  • Un run de rĂ©-synchronisation sans changement de configuration ne produit pas de nouveau secret-id ni de nouveau commit
  • Les tests liĂ©s Ă  ce correctif ont Ă©tĂ© ajoutĂ©s

Issues liees

Relie a #2087 : migration des plugins vers une approche declarative (moteur Alchemy.run), dont cette idempotence est un prerequis.

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions