forked from k-space/kube
64 lines
2.1 KiB
Bash
64 lines
2.1 KiB
Bash
#!/bin/bash
|
|
|
|
NAMESPACE=${NAMESPACE:-longhorn-system}
|
|
|
|
remove_and_wait() {
|
|
local crd=$1
|
|
out=`kubectl -n ${NAMESPACE} delete $crd --all 2>&1`
|
|
if [ $? -ne 0 ]; then
|
|
echo $out
|
|
return
|
|
fi
|
|
while true; do
|
|
out=`kubectl -n ${NAMESPACE} get $crd -o yaml | grep 'items: \[\]'`
|
|
if [ $? -eq 0 ]; then
|
|
break
|
|
fi
|
|
sleep 1
|
|
done
|
|
echo all $crd instances deleted
|
|
}
|
|
|
|
remove_crd_instances() {
|
|
remove_and_wait volumes.longhorn.rancher.io
|
|
# TODO: remove engines and replicas once we fix https://github.com/rancher/longhorn/issues/273
|
|
remove_and_wait engines.longhorn.rancher.io
|
|
remove_and_wait replicas.longhorn.rancher.io
|
|
remove_and_wait engineimages.longhorn.rancher.io
|
|
remove_and_wait settings.longhorn.rancher.io
|
|
# do this one last; manager crashes
|
|
remove_and_wait nodes.longhorn.rancher.io
|
|
}
|
|
|
|
# Delete driver related workloads in specific order
|
|
remove_driver() {
|
|
kubectl -n ${NAMESPACE} delete deployment.apps/longhorn-driver-deployer
|
|
kubectl -n ${NAMESPACE} delete daemonset.apps/longhorn-csi-plugin
|
|
kubectl -n ${NAMESPACE} delete statefulset.apps/csi-attacher
|
|
kubectl -n ${NAMESPACE} delete service/csi-attacher
|
|
kubectl -n ${NAMESPACE} delete statefulset.apps/csi-provisioner
|
|
kubectl -n ${NAMESPACE} delete service/csi-provisioner
|
|
kubectl -n ${NAMESPACE} delete daemonset.apps/longhorn-flexvolume-driver
|
|
}
|
|
|
|
# Delete all workloads in the namespace
|
|
remove_workloads() {
|
|
kubectl -n ${NAMESPACE} get daemonset.apps -o yaml | kubectl delete -f -
|
|
kubectl -n ${NAMESPACE} get deployment.apps -o yaml | kubectl delete -f -
|
|
kubectl -n ${NAMESPACE} get replicaset.apps -o yaml | kubectl delete -f -
|
|
kubectl -n ${NAMESPACE} get statefulset.apps -o yaml | kubectl delete -f -
|
|
kubectl -n ${NAMESPACE} get pods -o yaml | kubectl delete -f -
|
|
kubectl -n ${NAMESPACE} get service -o yaml | kubectl delete -f -
|
|
}
|
|
|
|
# Delete CRD definitions with longhorn.rancher.io in the name
|
|
remove_crds() {
|
|
for crd in $(kubectl get crd -o jsonpath={.items[*].metadata.name} | tr ' ' '\n' | grep longhorn.rancher.io); do
|
|
kubectl delete crd/$crd
|
|
done
|
|
}
|
|
|
|
remove_crd_instances
|
|
remove_driver
|
|
remove_workloads
|
|
remove_crds |