xpeditis2.0/infra/prod/scripts/secrets-apply.sh
2026-09-07 21:40:50 +02:00

51 lines
1.8 KiB
Bash
Executable File

#!/usr/bin/env bash
# =============================================================================
# Application des secrets chiffres SOPS sur le cluster
# =============================================================================
# export KUBECONFIG=~/.kube/xpeditis-prod.yaml
# bash scripts/secrets-apply.sh
#
# Le contenu dechiffre ne touche JAMAIS le disque : sops ecrit sur la sortie
# standard, kubectl lit sur l'entree standard. Rien a nettoyer, rien a oublier.
set -euo pipefail
HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
SECRETS_FILE="${HERE}/../k8s/base/03-secrets.sops.yaml"
command -v sops >/dev/null || { echo "sops n'est pas installe." >&2; exit 1; }
[[ -f "$SECRETS_FILE" ]] || {
cat >&2 <<MSG
Fichier introuvable : $SECRETS_FILE
Creez-le a partir du gabarit :
cp k8s/base/03-secrets.template.yaml /tmp/secrets.yaml
\$EDITOR /tmp/secrets.yaml
sops -e /tmp/secrets.yaml > k8s/base/03-secrets.sops.yaml
shred -u /tmp/secrets.yaml
MSG
exit 1
}
# Refuse d'appliquer un fichier qui ne serait pas reellement chiffre : c'est le
# genre d'erreur qui ne se voit qu'une fois le secret pousse sur GitHub.
grep -q 'sops:' "$SECRETS_FILE" || {
echo "ERREUR: $SECRETS_FILE ne semble pas chiffre par SOPS. Abandon." >&2
exit 1
}
echo ">>> Application des secrets sur $(kubectl config current-context)"
sops -d "$SECRETS_FILE" | kubectl apply -f -
echo
echo ">>> Secrets presents :"
kubectl -n xpeditis-prod get secrets
kubectl -n monitoring get secrets 2>/dev/null || true
kubectl -n cert-manager get secret cloudflare-api-token 2>/dev/null || true
cat <<'NEXT'
Rappel : modifier un Secret ne redemarre PAS les pods qui l'utilisent.
Pour que la nouvelle valeur soit prise en compte :
kubectl -n xpeditis-prod rollout restart deploy/xpeditis-backend
NEXT