mirror of
https://github.com/rubenhensen/k8scd.git
synced 2026-09-17 02:12:55 +02:00
Add backup testing scripts
This commit is contained in:
Executable
+77
@@ -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
|
||||
Reference in New Issue
Block a user