diff --git a/kubernetes/apps/networking/metallb/app/helmrelease.yaml b/kubernetes/apps/networking/metallb/app/helmrelease.yaml index 38e6b250c..89b2562d6 100644 --- a/kubernetes/apps/networking/metallb/app/helmrelease.yaml +++ b/kubernetes/apps/networking/metallb/app/helmrelease.yaml @@ -7,6 +7,7 @@ metadata: namespace: networking spec: interval: 15m + timeout: 10m chart: spec: chart: metallb diff --git a/tools/backup.sh b/tools/backup.sh new file mode 100755 index 000000000..8abbf16f2 --- /dev/null +++ b/tools/backup.sh @@ -0,0 +1,116 @@ +#!/bin/bash + +kubectl apply -f - < /dev/null + +for namespace in $(kubectl get ns --no-headers | awk '{ print $1 }'); do + for pvc in $(kubectl get pvc --no-headers -n ${namespace} | awk '{ print $1 }' | grep -v pv-backup); do + echo "Backup ${pvc} ..." + kubectl exec -it ${backuppod} -- bash -c "mkdir -p /pv-backup/${namespace}" + # usedby=$(kubectl describe -n ${namespace} pvc ${pvc} | grep "Used By" | awk '{print $3}') + # controlledby=$(kubectl describe -n ${namespace} pod ${usedby} | grep "Controlled By" | awk '{print $3}') + # if echo ${controlledby} | grep "StatefulSet\|Deployment" + # then + # kubectl scale -n ${namespace} --replicas 0 ${controlledby} + # else + # controlledby1=$(kubectl describe -n ${namespace} ${controlledby} | grep "Controlled By" | awk '{print $3}') + # if echo ${controlledby1} | grep "StatefulSet\|Deployment" + # then + # kubectl scale -n ${namespace} --replicas 0 ${controlledby1} + # else + # controlledby2=$(kubectl describe -n ${namespace} ${controlledby} | grep "Controlled By" | awk '{print $3}') + # if echo ${controlledby2} | grep "StatefulSet\|Deployment" + # then + # kubectl scale -n ${namespace} --replicas 0 ${controlledby2} + # fi + # fi + # fi + # echo Waiting for pvc not being used + # max_retry=10 + # counter=0 + # until kubectl describe -n ${namespace} pvc ${pvc} | grep "Used By" | awk '{print $3}' | grep "" + # do + # sleep 5 + # [[ counter -eq $max_retry ]] && echo "Failed!" && break + # kubectl describe -n ${namespace} pvc ${pvc} | grep "Used By" | awk '{print $3}' | grep "" + # echo -n . + # ((counter++)) + # done + pv-migrate migrate ${pvc} pv-backup -i --dest-path ${namespace}/${pvc} --dest-namespace default --source-namespace ${namespace} -d | grep '❌\|✅ ' + kubectl exec -it ${backuppod} -- bash -c "rm -f /nfs-backup/${namespace}--${pvc}.tar.gz; cd /pv-backup/${namespace}; tar -czf /nfs-backup/${namespace}--${pvc}.tar.gz ${pvc}; rm -rf ${pvc}" + echo "" + done +done + +sleep 10 + +# echo enable flux +# flux resume kustomization --all -n flux-system > /dev/null + +kubectl get pods -A --no-headers | grep pv- | awk '{ print $1 " " $2 }' | xargs -L1 kubectl delete pod -n +kubectl delete deployment pv-backup +kubectl delete persistentvolumeclaim pv-backup