Skip to content

fix(server-nestjs): reuse Vault AppRole secret-id instead of minting on every sync - #2626

Draft
shikanime wants to merge 1 commit into
mainfrom
fix/argocd-secret-id-idempotent
Draft

fix(server-nestjs): reuse Vault AppRole secret-id instead of minting on every sync#2626
shikanime wants to merge 1 commit into
mainfrom
fix/argocd-secret-id-idempotent

Conversation

@shikanime

Copy link
Copy Markdown
Member

Issues liées

Quel est le comportement actuel ?

À chaque synchronisation (project.upsert, cron), generateVaultValues appelle createAuthApproleRoleSecretId, qui émet un nouveau secret-id AppRole via POST auth/approle/role/{role}/secret-id. Le secret-id n'est ni relu ni réutilisé : il s'accumule dans Vault à chaque exécution, et son renouvellement systématique rend la diff de contenu des values toujours sale, d'où un nouveau commit values.yaml à chaque passage même sans changement de configuration.

Comportement attendu

Le secret-id est idempotent : une seconde synchronisation sans changement de configuration ne produit ni nouveau secret-id ni nouveau commit values.yaml. Le role-id continue d'être relu via GET (chemin inchangé).

Changements

  • createAuthApproleRoleSecretId devient un get-or-create : il relit un secret-id persisté dans le KV Vault du projet ; s'il existe, il le réutilise, sinon il le crée puis le persiste.
  • Ajout du chemin KV APPROLE_SECRET_ID (aux côtés des autres identifiants du projet).
  • Ajout de tests unitaires : premier sync crée et persiste le secret-id, sync suivant le réutilise sans en créer un nouveau.

@github-actions github-actions Bot added the built label Aug 28, 2026
@shikanime
shikanime force-pushed the fix/argocd-secret-id-idempotent branch 2 times, most recently from 297676a to e61aa06 Compare August 28, 2026 14:20
@shikanime
shikanime changed the base branch from main to fix/uniformize-error-guards August 28, 2026 14:22
Base automatically changed from fix/uniformize-error-guards to main August 28, 2026 15:54

@shikanime shikanime left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verdict : Changements demandés — conflit de fusion + gardes déjà sur main (PR propriétaire : commentaire, non request-changes).

  • mergeable=CONFLICTING — [🔴 Bloquant] La PR cible main mais re-implémente isVaultNotFound/isVaultBadRequest/isNexusNotFound/isGitbeakerUnauthorized qui y sont déjà (commit ec9c18a914). Le conflit porte précisément sur vault.utils.ts, nexus.utils.ts, gitlab.utils.ts. Rebasez sur main : gardez uniquement generateAppRoleSecretIdPath + la logique get-or-create de ensureAuthApproleRoleSecretId.
  • vault-client.service.ts:401-456 — [✨ Éloge] Le get-or-create du secret-id AppRole (relit le KV APPROLE_SECRET_ID, réutilise si présent, sinon mint + persiste) résout exactement #2622 : plus de nouveau commit values.yaml à chaque sync. Tests first/second-sync bien couverts.
  • argocd.service.ts:405 + spec — [🟢 Conforme] Le renommage createAuthApproleRoleSecretIdensureAuthApproleRoleSecretId est cohérent partout (service + 5 mocks de spec).

Corrigez le conflit par un rebase sur main avant fusion.

…on every sync

Refs #2622

Co-authored-by: Automata <automata@shikanime.studio>
Signed-off-by: William Phetsinorath <william.phetsinorath-open@interieur.gouv.fr>
Change-Id: Ie3d3b7df1e0539c02d6a215ce7eff82a6a6a6964
@cloud-pi-native-sonarqube

Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant