#!/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