Files
arcodange 5ac60c54fa
Helm Charts / Detect changed charts (pull_request) Successful in 1m59s
Helm Charts / Library charts tool (pull_request) Skipped
Helm Charts / Application charts pgcat (pull_request) Skipped
fix(vault) — un PDB pour les évictions volontaires, OnRootMismatch pour les remounts
Ce Vault tourne en standalone (Shamir, un seul réplica, pas d'auto-unseal) :
toute interruption de pod exige un unseal humain ensuite. Le PDB du sous-chart
vendored ne se rend qu'en mode HA (server.ha.disruptionBudget, gardé par
`eq .mode "ha"`), donc jamais ici — il en fallait un écrit à la main.

Par ailleurs chaque remount du volume déclenchait un chown -R complet du
fsGroup, mesuré à ~9 min sur ce PVC (event kubelet
VolumePermissionChangeInProgress, suggestion du kubelet lui-même). Avec
OnRootMismatch, un remount dont le propriétaire racine est déjà correct saute
ce chown.

Le PDB ne protège que des évictions volontaires (drain, descheduler) — pas
d'une panne de nœud ni d'une suppression manuelle.
2026-08-11 13:15:13 +02:00

27 lines
1.1 KiB
YAML

# Le sous-chart vendored `vault` ne rend son PodDisruptionBudget qu'en mode HA
# (server.ha.disruptionBudget.enabled, gardé par `eq .mode "ha"` dans
# server-disruptionbudget.yaml). Ce Vault tourne en standalone (storage "file",
# un seul réplica, scellement Shamir sans auto-unseal) : le garde-fou du chart
# ne s'applique jamais ici, d'où ce PDB écrit à la main dans le chart parapluie.
#
# Il ne protège que des évictions VOLONTAIRES (kubectl drain, descheduler) — pas
# d'une panne de nœud ni d'une suppression manuelle. Avec un seul réplica et
# aucun auto-unseal, toute interruption exige un unseal humain ensuite ; ce PDB
# réduit seulement les interruptions évitables.
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
name: {{ .Release.Name }}-server
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: vault
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
spec:
maxUnavailable: 0
selector:
matchLabels:
app.kubernetes.io/name: vault
app.kubernetes.io/instance: {{ .Release.Name }}
component: server