178 lines
6.2 KiB
Bash
178 lines
6.2 KiB
Bash
#!/bin/bash
|
|
# Script de vérification rapide du TLS Sync Wildcard
|
|
# Usage: ./verify-tls-sync.sh [--context cluster-ops]
|
|
|
|
set -e
|
|
|
|
CONTEXT="${1:-cluster-ops}"
|
|
NAMESPACE="certificates-ops"
|
|
|
|
echo "=== Vérification du TLS Sync Wildcard ==="
|
|
echo "Contexte: $CONTEXT"
|
|
echo "Namespace: $NAMESPACE"
|
|
echo ""
|
|
|
|
# Couleurs pour l'affichage
|
|
GREEN='\033[0;32m'
|
|
RED='\033[0;31m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# Fonction pour afficher un résultat
|
|
check_result() {
|
|
if [ $? -eq 0 ]; then
|
|
echo -e "${GREEN}✅ $1${NC}"
|
|
else
|
|
echo -e "${RED}❌ $1${NC}"
|
|
fi
|
|
}
|
|
|
|
# 1. Vérifier le CronJob
|
|
echo "1. Vérification du CronJob..."
|
|
if kubectl get cronjob -n "$NAMESPACE" tls-sync-wildcard --context="$CONTEXT" &>/dev/null; then
|
|
echo -e "${GREEN}✅ CronJob existe${NC}"
|
|
SCHEDULE=$(kubectl get cronjob -n "$NAMESPACE" tls-sync-wildcard --context="$CONTEXT" -o jsonpath='{.spec.schedule}' 2>/dev/null)
|
|
echo " Schedule: $SCHEDULE"
|
|
else
|
|
echo -e "${RED}❌ CronJob manquant${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
echo ""
|
|
|
|
# 2. Vérifier les Jobs
|
|
echo "2. Vérification des Jobs..."
|
|
JOBS=$(kubectl get jobs -n "$NAMESPACE" -l app=tls-sync-wildcard --context="$CONTEXT" --no-headers 2>/dev/null | wc -l)
|
|
if [ "$JOBS" -gt 0 ]; then
|
|
echo -e "${GREEN}✅ $JOBS Job(s) trouvé(s)${NC}"
|
|
echo ""
|
|
echo " Derniers Jobs:"
|
|
kubectl get jobs -n "$NAMESPACE" -l app=tls-sync-wildcard --context="$CONTEXT" --sort-by=.metadata.creationTimestamp -o custom-columns=NAME:.metadata.name,STATUS:.status.conditions[0].type,AGE:.metadata.creationTimestamp | tail -5
|
|
else
|
|
echo -e "${YELLOW}⚠️ Aucun Job trouvé (le CronJob n'a peut-être pas encore été exécuté)${NC}"
|
|
fi
|
|
|
|
echo ""
|
|
|
|
# 3. Vérifier les logs du dernier Job
|
|
echo "3. Logs du dernier Job..."
|
|
LAST_JOB=$(kubectl get jobs -n "$NAMESPACE" -l app=tls-sync-wildcard --context="$CONTEXT" --sort-by=.metadata.creationTimestamp -o jsonpath='{.items[-1].metadata.name}' 2>/dev/null)
|
|
if [ -n "$LAST_JOB" ]; then
|
|
echo " Job: $LAST_JOB"
|
|
echo ""
|
|
LOGS=$(kubectl logs -n "$NAMESPACE" job/"$LAST_JOB" --context="$CONTEXT" --tail=20 2>/dev/null)
|
|
if [ -n "$LOGS" ]; then
|
|
echo "$LOGS" | sed 's/^/ /'
|
|
|
|
# Vérifier les erreurs dans les logs
|
|
if echo "$LOGS" | grep -qi "error\|❌\|failed"; then
|
|
echo ""
|
|
echo -e "${RED}⚠️ Des erreurs ont été détectées dans les logs${NC}"
|
|
elif echo "$LOGS" | grep -qi "✅\|succès"; then
|
|
echo ""
|
|
echo -e "${GREEN}✅ Synchronisation réussie${NC}"
|
|
fi
|
|
else
|
|
echo -e "${YELLOW}⚠️ Aucun log disponible${NC}"
|
|
fi
|
|
else
|
|
echo -e "${YELLOW}⚠️ Aucun Job trouvé pour voir les logs${NC}"
|
|
fi
|
|
|
|
echo ""
|
|
|
|
# 4. Vérifier les secrets dans les clusters cibles
|
|
echo "4. Vérification des secrets synchronisés..."
|
|
|
|
# Cluster DEV
|
|
echo " Cluster DEV:"
|
|
for ns in headlamp-dev homarr-dev longhorn-dev; do
|
|
if kubectl get secret wildcard-dev-tls -n "$ns" --context=cluster-dev &>/dev/null; then
|
|
AGE=$(kubectl get secret wildcard-dev-tls -n "$ns" --context=cluster-dev -o jsonpath='{.metadata.creationTimestamp}' 2>/dev/null)
|
|
echo -e " ${GREEN}✅ $ns${NC} (créé: $AGE)"
|
|
else
|
|
echo -e " ${RED}❌ $ns: secret manquant${NC}"
|
|
fi
|
|
done
|
|
|
|
# Cluster RCT (si applicable)
|
|
if kubectl get secret wildcard-rct-tls -n certificates-ops --context="$CONTEXT" &>/dev/null; then
|
|
echo " Cluster RCT:"
|
|
for ns in headlamp-rct homarr-rct longhorn-rct; do
|
|
if kubectl get secret wildcard-rct-tls -n "$ns" --context=cluster-rct &>/dev/null; then
|
|
AGE=$(kubectl get secret wildcard-rct-tls -n "$ns" --context=cluster-rct -o jsonpath='{.metadata.creationTimestamp}' 2>/dev/null)
|
|
echo -e " ${GREEN}✅ $ns${NC} (créé: $AGE)"
|
|
else
|
|
echo -e " ${RED}❌ $ns: secret manquant${NC}"
|
|
fi
|
|
done
|
|
fi
|
|
|
|
# Cluster PRD (si applicable)
|
|
if kubectl get secret wildcard-prd-tls -n certificates-ops --context="$CONTEXT" &>/dev/null; then
|
|
echo " Cluster PRD:"
|
|
for ns in headlamp-prd homarr-prd longhorn-prd; do
|
|
if kubectl get secret wildcard-prd-tls -n "$ns" --context=cluster-prd &>/dev/null; then
|
|
AGE=$(kubectl get secret wildcard-prd-tls -n "$ns" --context=cluster-prd -o jsonpath='{.metadata.creationTimestamp}' 2>/dev/null)
|
|
echo -e " ${GREEN}✅ $ns${NC} (créé: $AGE)"
|
|
else
|
|
echo -e " ${RED}❌ $ns: secret manquant${NC}"
|
|
fi
|
|
done
|
|
fi
|
|
|
|
echo ""
|
|
|
|
# 5. Vérifier les ressources nécessaires
|
|
echo "5. Vérification des ressources..."
|
|
|
|
# ServiceAccount
|
|
if kubectl get serviceaccount tls-sync-wildcard -n "$NAMESPACE" --context="$CONTEXT" &>/dev/null; then
|
|
echo -e "${GREEN}✅ ServiceAccount existe${NC}"
|
|
else
|
|
echo -e "${RED}❌ ServiceAccount manquant${NC}"
|
|
fi
|
|
|
|
# ClusterRole
|
|
if kubectl get clusterrole tls-sync-wildcard --context="$CONTEXT" &>/dev/null; then
|
|
echo -e "${GREEN}✅ ClusterRole existe${NC}"
|
|
else
|
|
echo -e "${RED}❌ ClusterRole manquant${NC}"
|
|
fi
|
|
|
|
# ClusterRoleBinding
|
|
if kubectl get clusterrolebinding tls-sync-wildcard --context="$CONTEXT" &>/dev/null; then
|
|
echo -e "${GREEN}✅ ClusterRoleBinding existe${NC}"
|
|
else
|
|
echo -e "${RED}❌ ClusterRoleBinding manquant${NC}"
|
|
fi
|
|
|
|
# ConfigMap
|
|
if kubectl get configmap tls-sync-wildcard-script -n "$NAMESPACE" --context="$CONTEXT" &>/dev/null; then
|
|
echo -e "${GREEN}✅ ConfigMap existe${NC}"
|
|
else
|
|
echo -e "${RED}❌ ConfigMap manquant${NC}"
|
|
fi
|
|
|
|
# Secret kubeconfig
|
|
if kubectl get secret tls-sync-kubeconfig -n "$NAMESPACE" --context="$CONTEXT" &>/dev/null; then
|
|
echo -e "${GREEN}✅ Secret kubeconfig existe${NC}"
|
|
else
|
|
echo -e "${RED}❌ Secret kubeconfig manquant${NC}"
|
|
echo " Créez-le avec: kubectl create secret generic tls-sync-kubeconfig --from-file=config=\$HOME/.kube/config -n $NAMESPACE"
|
|
fi
|
|
|
|
echo ""
|
|
|
|
# 6. Résumé
|
|
echo "=== Résumé ==="
|
|
echo ""
|
|
echo "Pour déclencher une synchronisation manuelle:"
|
|
echo " kubectl create job --from=cronjob/tls-sync-wildcard tls-sync-wildcard-manual-\$(date +%s) -n $NAMESPACE --context=$CONTEXT"
|
|
echo ""
|
|
echo "Pour voir les logs en temps réel:"
|
|
echo " kubectl logs -n $NAMESPACE -l app=tls-sync-wildcard --context=$CONTEXT -f"
|
|
echo ""
|
|
echo "Pour plus de détails, consultez: helm/tls-sync-wildcard/ops/VÉRIFICATION.md"
|
|
|