add secret store

This commit is contained in:
2026-01-22 21:59:05 +01:00
parent 7c38f9355a
commit cd6d841c13
2 changed files with 169 additions and 29 deletions

View File

@@ -0,0 +1,160 @@
#!/bin/bash
# Script de vérification des ExternalSecrets pour cert-manager-webhook-ovh
set -e
# Détection automatique du contexte si non fourni
if [ -z "$1" ]; then
# Essayer de détecter le contexte actuel
CURRENT_CONTEXT=$(kubectl config current-context 2>/dev/null || echo "")
if [ -n "$CURRENT_CONTEXT" ]; then
CONTEXT="$CURRENT_CONTEXT"
echo "⚠️ Aucun contexte spécifié, utilisation du contexte actuel: $CONTEXT"
else
CONTEXT=""
echo "⚠️ Aucun contexte kubectl trouvé. Les commandes seront exécutées sans --context"
fi
else
CONTEXT="$1"
fi
# Fonction pour exécuter kubectl avec ou sans contexte
kubectl_cmd() {
if [ -n "$CONTEXT" ]; then
kubectl "$@" --context="$CONTEXT"
else
kubectl "$@"
fi
}
SECRET_NAME="${2:-cert-manager-webhook-ovh}"
NAMESPACE_WEBHOOK="${3:-cert-manager-webhook-ovh-ops}"
NAMESPACE_CERTMANAGER="${4:-cert-manager-ops}"
SECRET_STORE_NAME="${5:-vault-backend}"
echo "=== Vérification des ExternalSecrets pour cert-manager-webhook-ovh ==="
echo "Contexte: $CONTEXT"
echo ""
# 1. Vérifier le ClusterSecretStore
echo "1. Vérification du ClusterSecretStore '$SECRET_STORE_NAME'..."
if kubectl_cmd get clustersecretstore "$SECRET_STORE_NAME" &>/dev/null; then
echo " ✅ ClusterSecretStore trouvé"
kubectl_cmd get clustersecretstore "$SECRET_STORE_NAME" -o wide
echo ""
# Afficher les détails
echo " Détails du ClusterSecretStore:"
kubectl_cmd describe clustersecretstore "$SECRET_STORE_NAME" | grep -A 20 "Spec:" || true
echo ""
else
echo " ❌ ClusterSecretStore '$SECRET_STORE_NAME' non trouvé"
echo ""
fi
# 2. Vérifier les ExternalSecrets
echo "2. Vérification des ExternalSecrets..."
# Dans cert-manager-webhook-ovh-ops
echo " a) Dans le namespace '$NAMESPACE_WEBHOOK':"
if kubectl_cmd get externalsecret "$SECRET_NAME" -n "$NAMESPACE_WEBHOOK" &>/dev/null; then
echo " ✅ ExternalSecret trouvé"
kubectl_cmd get externalsecret "$SECRET_NAME" -n "$NAMESPACE_WEBHOOK" -o wide
echo ""
# Afficher le statut
echo " Statut:"
kubectl_cmd get externalsecret "$SECRET_NAME" -n "$NAMESPACE_WEBHOOK" -o jsonpath='{.status}' | jq '.' 2>/dev/null || \
kubectl_cmd describe externalsecret "$SECRET_NAME" -n "$NAMESPACE_WEBHOOK" | grep -A 10 "Status:" || true
echo ""
else
echo " ❌ ExternalSecret '$SECRET_NAME' non trouvé dans '$NAMESPACE_WEBHOOK'"
echo ""
fi
# Dans cert-manager-ops
echo " b) Dans le namespace '$NAMESPACE_CERTMANAGER':"
if kubectl_cmd get externalsecret "$SECRET_NAME" -n "$NAMESPACE_CERTMANAGER" &>/dev/null; then
echo " ✅ ExternalSecret trouvé"
kubectl_cmd get externalsecret "$SECRET_NAME" -n "$NAMESPACE_CERTMANAGER" -o wide
echo ""
# Afficher le statut
echo " Statut:"
kubectl_cmd get externalsecret "$SECRET_NAME" -n "$NAMESPACE_CERTMANAGER" -o jsonpath='{.status}' | jq '.' 2>/dev/null || \
kubectl_cmd describe externalsecret "$SECRET_NAME" -n "$NAMESPACE_CERTMANAGER" | grep -A 10 "Status:" || true
echo ""
else
echo " ❌ ExternalSecret '$SECRET_NAME' non trouvé dans '$NAMESPACE_CERTMANAGER'"
echo ""
fi
# 3. Vérifier les Secrets créés
echo "3. Vérification des Secrets créés par External Secrets..."
# Dans cert-manager-webhook-ovh-ops
echo " a) Secret dans '$NAMESPACE_WEBHOOK':"
if kubectl_cmd get secret "$SECRET_NAME" -n "$NAMESPACE_WEBHOOK" &>/dev/null; then
echo " ✅ Secret trouvé"
kubectl_cmd get secret "$SECRET_NAME" -n "$NAMESPACE_WEBHOOK" -o wide
echo ""
# Vérifier les clés présentes
echo " Clés présentes dans le secret:"
kubectl_cmd get secret "$SECRET_NAME" -n "$NAMESPACE_WEBHOOK" -o jsonpath='{.data}' | jq 'keys' 2>/dev/null || \
kubectl_cmd get secret "$SECRET_NAME" -n "$NAMESPACE_WEBHOOK" -o jsonpath='{.data}' | grep -o '"[^"]*":' | sed 's/"//g' | sed 's/://g' || true
echo ""
else
echo " ❌ Secret '$SECRET_NAME' non trouvé dans '$NAMESPACE_WEBHOOK'"
echo " ⚠️ Le secret sera créé automatiquement par External Secrets une fois la synchronisation réussie"
echo ""
fi
# Dans cert-manager-ops
echo " b) Secret dans '$NAMESPACE_CERTMANAGER':"
if kubectl_cmd get secret "$SECRET_NAME" -n "$NAMESPACE_CERTMANAGER" &>/dev/null; then
echo " ✅ Secret trouvé"
kubectl_cmd get secret "$SECRET_NAME" -n "$NAMESPACE_CERTMANAGER" -o wide
echo ""
# Vérifier les clés présentes
echo " Clés présentes dans le secret:"
kubectl_cmd get secret "$SECRET_NAME" -n "$NAMESPACE_CERTMANAGER" -o jsonpath='{.data}' | jq 'keys' 2>/dev/null || \
kubectl_cmd get secret "$SECRET_NAME" -n "$NAMESPACE_CERTMANAGER" -o jsonpath='{.data}' | grep -o '"[^"]*":' | sed 's/"//g' | sed 's/://g' || true
echo ""
else
echo " ❌ Secret '$SECRET_NAME' non trouvé dans '$NAMESPACE_CERTMANAGER'"
echo " ⚠️ Le secret sera créé automatiquement par External Secrets une fois la synchronisation réussie"
echo ""
fi
# 4. Vérifier les événements et logs d'External Secrets Operator
echo "4. Vérification des événements récents..."
echo " Événements pour ExternalSecret dans '$NAMESPACE_CERTMANAGER':"
kubectl_cmd get events -n "$NAMESPACE_CERTMANAGER" \
--field-selector involvedObject.name="$SECRET_NAME" \
--sort-by='.lastTimestamp' | tail -5 || echo " Aucun événement récent"
echo ""
# 5. Résumé
echo "=== Résumé ==="
echo ""
echo "Pour voir les détails complets d'un ExternalSecret:"
if [ -n "$CONTEXT" ]; then
echo " kubectl describe externalsecret $SECRET_NAME -n $NAMESPACE_CERTMANAGER --context=$CONTEXT"
echo ""
echo "Pour voir les logs d'External Secrets Operator:"
echo " kubectl logs -n external-secrets-system -l app.kubernetes.io/name=external-secrets --context=$CONTEXT --tail=50"
echo ""
echo "Pour forcer une synchronisation immédiate:"
echo " kubectl annotate externalsecret $SECRET_NAME -n $NAMESPACE_CERTMANAGER --context=$CONTEXT force-sync=\$(date +%s) --overwrite"
else
echo " kubectl describe externalsecret $SECRET_NAME -n $NAMESPACE_CERTMANAGER"
echo ""
echo "Pour voir les logs d'External Secrets Operator:"
echo " kubectl logs -n external-secrets-system -l app.kubernetes.io/name=external-secrets --tail=50"
echo ""
echo "Pour forcer une synchronisation immédiate:"
echo " kubectl annotate externalsecret $SECRET_NAME -n $NAMESPACE_CERTMANAGER force-sync=\$(date +%s) --overwrite"
fi
echo ""