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
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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user