Vault est resté scellé onze jours en silence, et c'était le pod le plus faible du cluster (#46)
Helm Charts / Detect changed charts (push) Successful in 17s
Helm Charts / Library charts tool (push) Skipped
Helm Charts / Application charts alloy (push) Skipped
Helm Charts / Application charts chart (push) Skipped
Helm Charts / Application charts crowdsec (push) Skipped
Helm Charts / Application charts prometheus (push) Successful in 54s
Helm Charts / Application charts grafana (push) Skipped
Helm Charts / Application charts loki (push) Skipped
Helm Charts / Application charts minio (push) Skipped
Helm Charts / Application charts pgbouncer (push) Skipped
Helm Charts / Application charts pgcat (push) Skipped
Helm Charts / Application charts redis (push) Skipped
Helm Charts / Application charts hashicorp-vault (push) Successful in 12s

Co-authored-by: Gabriel Radureau <[email protected]>
This commit was merged in pull request #46.
This commit is contained in:
2026-09-11 14:51:24 +02:00
committed by arcodange
parent 61020645bf
commit e32faa3c77
4 changed files with 129 additions and 0 deletions
+55
View File
@@ -1265,6 +1265,61 @@ prometheus: &prometheus_config
annotations:
summary: "Homelab — cert {{ $labels.namespace }}/{{ $labels.name }} expire dans {{ $value | humanizeDuration }}"
description: "Le renouvellement automatique (cert-manager → step-issuer → step-ca) est en échec. Vérifier : kubectl get certificaterequest -A, logs step-issuer (résolution DNS de ssl-ca.arcodange.lab), santé de step-ca sur pi1:8443."
# ---- VAULT SCELLÉ ------------------------------------------------------
# Incident 2026-08-30 → 2026-09-10 : Vault est resté SCELLÉ ONZE JOURS.
# Le VSO ne pouvait plus s'authentifier (503 « Vault is sealed »), donc les
# Secrets de plusieurs applications ont cessé d'être réconciliés — en silence.
# Découvert par hasard, en enquêtant sur tout autre chose.
#
# CE QUI A MARCHÉ CE JOUR-LÀ : `NoeudInjoignable` a bien tiré à 11:46 quand pi3
# a cessé de répondre. L'infra a parlé. CE QUI A MANQUÉ : la CONSÉQUENCE. Le
# nœud est revenu, les pods ont été recréés, l'alerte s'est éteinte — et
# personne n'a su que Vault, lui, était reparti scellé et le resterait.
#
# POURQUOI `kube_pod_status_ready` ET PAS `vault_core_unsealed` : Vault n'expose
# ses métriques que via /v1/sys/metrics, qui exige soit un token, soit
# `unauthenticated_metrics_access = true` dans la stanza telemetry. Le second
# ouvre un endpoint non authentifié pour gagner… le même signal. Or la
# readinessProbe du chart est littéralement `vault status` : un Vault scellé est
# NotReady, point. kube-state-metrics est déjà scrapé, ça ne coûte rien, et ça
# ne touche pas à la configuration de Vault.
#
# ⚠ Cette alerte ne distingue pas « scellé » de « en train de démarrer » ou
# « planté ». C'est VOULU : dans les trois cas Vault ne sert plus de secrets, et
# le geste de l'opérateur commence pareil — aller voir `vault status`.
- alert: VaultIndisponible
# ⚠ LE SÉLECTEUR EST ANCRÉ SUR `[0-9]+`, ET CE N'EST PAS COSMÉTIQUE : un
# `hashicorp-vault-.*` attrape aussi les pods du Vault Secrets Operator
# (`hashicorp-vault-vault-secrets-operator-controller-manager-xxxxx`), dont un
# exemplaire terminé traîne en permanence — la règle aurait donc tiré sans
# arrêt, et une alerte qui crie tout le temps ne se lit plus. Vérifié contre le
# Prometheus du cluster : `[0-9]+` ne rend que hashicorp-vault-0. Toute
# évolution de ce sélecteur se re-teste de la même façon, sur le vrai serveur.
#
# `absent()` : si le pod disparaît (évincé, nœud perdu), la série n'existe plus
# et une simple comparaison `== 0` serait muette — exactement le mode de panne
# qu'on essaie de couvrir. Même motif que IngressLabIndisponible ci-dessus.
expr: >-
kube_pod_status_ready{namespace="tools", pod=~"hashicorp-vault-[0-9]+", condition="true"} == 0
or absent(kube_pod_status_ready{namespace="tools", pod=~"hashicorp-vault-[0-9]+", condition="true"})
# 10 min : large devant un redémarrage normal (le pod est Ready en ~30 s),
# court devant onze jours.
for: 10m
labels:
severity: critical
app: homelab
annotations:
summary: "Homelab — Vault ne sert plus de secrets (probablement scellé)"
description: >-
hashicorp-vault n'est plus Ready depuis 10 min. Le cas le plus fréquent est
un Vault SCELLÉ : il repart toujours scellé après recréation du pod (Shamir
1/1, pas d'auto-unseal — c'est une décision assumée, cf. factory
vibe/guidebooks/lab-ecosystem/secrets-and-vault.md). Tant qu'il l'est, le
Vault Secrets Operator ne réconcilie plus AUCUN Secret : les applications
tournent sur leurs Secrets existants et cassent dès qu'un pod redémarre.
Vérifier - kubectl -n tools exec hashicorp-vault-0 -- vault status.
Desceller - le rôle ansible arcodange.factory/hashicorp_vault, tâche
unseal.yml (clé dans ~/.arcodange/cluster-keys.json sur le poste).
# Le veilleur (arcodange-org/tools#36). Du 2026-09-04 02:41 au
# 2026-09-07 07:37, Prometheus n'a rien enregistré et les 11 règles
# ci-dessus se sont TUES — sans échantillon frais, une règle ne se