Add backup testing scripts

This commit is contained in:
Ruben Hensen
2025-03-04 03:23:44 +01:00
parent 36ce0e0009
commit 0522748a2b
5 changed files with 203 additions and 123 deletions
+77
View File
@@ -0,0 +1,77 @@
#!/bin/bash
# validate-restore.sh - Script to validate Velero backup restoration
set -e
echo "Starting validation of restored resources..."
# Get namespace from command line or use default
NAMESPACE="${1:-default}"
# Check all deployments
echo "Checking deployments..."
deployments=$(kubectl get deployment -n $NAMESPACE -o name)
if [[ -z "$deployments" ]]; then
echo "❌ No deployments found in namespace $NAMESPACE"
else
echo "Found deployments: $deployments"
# Check if pods are running for each deployment
for deployment in $deployments; do
name=$(echo $deployment | cut -d'/' -f2)
echo -n "Checking deployment $name: "
# Check if pods are running
ready_replicas=$(kubectl get deployment -n $NAMESPACE $name -o jsonpath='{.status.readyReplicas}')
if [[ -n "$ready_replicas" && "$ready_replicas" != "0" ]]; then
echo "$ready_replicas pods ready"
else
echo "❌ No pods running"
fi
done
fi
# Check all services
echo "Checking services..."
services=$(kubectl get service -n $NAMESPACE -o name | grep -v "kubernetes")
if [[ -z "$services" ]]; then
echo "❌ No services found in namespace $NAMESPACE"
else
echo "Found services: $services"
# Check if services have endpoints
for service in $services; do
name=$(echo $service | cut -d'/' -f2)
echo -n "Checking service $name: "
# Check if service has endpoints
endpoints=$(kubectl get endpoints -n $NAMESPACE $name -o jsonpath='{.subsets[*].addresses[*].ip}')
if [ -n "$endpoints" ]; then
echo "✅ Has endpoints"
else
echo "❌ No endpoints"
fi
done
fi
# Check PVCs
echo "Checking PVCs..."
pvcs=$(kubectl get pvc -n $NAMESPACE -o name)
if [[ -z "$pvcs" ]]; then
echo "No PVCs found in namespace $NAMESPACE"
else
pvc_count=$(echo "$pvcs" | wc -l)
echo "Found $pvc_count PVCs"
# Check if PVCs are bound
bound_count=$(kubectl get pvc -n $NAMESPACE -o jsonpath='{.items[?(@.status.phase=="Bound")].metadata.name}' | wc -w)
echo "$bound_count/$pvc_count PVCs are bound"
if [ "$bound_count" -ne "$pvc_count" ]; then
echo "❌ Not all PVCs are bound"
else
echo "✅ All PVCs are bound"
fi
fi
echo "Validation complete!"
exit 0