docs(runbook) — corrige 09 : NE PAS écrire vaultConnectionRef dans un ns applicatif

Le chapitre « service compagnon » montrait `vaultConnectionRef: default` dans
l'exemple VaultAuth — c'est faux hors du namespace `tools` et ça a réellement bloqué
le déploiement de kadans-api (pods en CreateContainerConfigError, VaultDynamicSecret
sur « VaultConnection default not found »).

VSO résout vaultConnectionRef dans le namespace DU CR ; la VaultConnection `default`
ne vit que dans `tools`. Les apps hors `tools` (erp, webapp) OMETTENT le champ et
laissent VSO retomber sur sa defaultVaultConnection. On retire donc la ligne de
l'exemple + on ajoute un encart WARNING dédié au piège.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
Claude-Session: https://claude.ai/code/session_013ws8L74dVZmp97Wu36fm8j
This commit is contained in:
2026-07-24 11:29:17 +02:00
co-authored by Claude Opus 4.8
parent 97b2f49d49
commit 51d01f47c2
@@ -82,7 +82,7 @@ Le host DB reste **`pgbouncer.tools`**, base = celle du primaire ([étape 4](04-
> name: kadans # ou « auth » ; l'important est spec.kubernetes.*
> namespace: {{ .Release.Namespace }}
> spec:
> vaultConnectionRef: default # VaultConnection cluster-wide (VSO)
> # PAS de vaultConnectionRef → VSO retombe sur sa connexion globale (comme erp/webapp).
> method: kubernetes
> mount: kubernetes
> kubernetes:
@@ -93,6 +93,9 @@ Le host DB reste **`pgbouncer.tools`**, base = celle du primaire ([étape 4](04-
>
> C'est la seule raison pour laquelle le SA et le rôle du VaultAuth ne portent **pas** le nom du service qui le déploie. Ne crée **pas** un second SA `kadans-api` : le rôle K8s Vault `kadans` n'accepte que le SA `kadans`.
> [!WARNING]
> **N'écris PAS `vaultConnectionRef: default` dans un namespace applicatif.** VSO résout `vaultConnectionRef` **dans le namespace du CR** — or la VaultConnection `default` n'existe que dans le namespace **`tools`**. La nommer explicitement ailleurs fait chercher `<ns>/default` (inexistant) : le `VaultDynamicSecret` reste bloqué sur `VaultConnection "default" not found`, le Secret n'est jamais matérialisé, et le pod tourne en `CreateContainerConfigError`. Les apps hors `tools` (erp, webapp) **omettent** ce champ et laissent VSO utiliser sa `defaultVaultConnection`. (crowdsec/plausible peuvent l'écrire car ils vivent **dans** `tools`.)
## Carte
```mermaid