From d7b574acd6a2a780eee2439f4e8eb1584ed35257 Mon Sep 17 00:00:00 2001 From: Sheng Yang Date: Fri, 31 Aug 2018 16:11:52 -0700 Subject: [PATCH] Sync with Longhorn manager commit 8e060dce288c4dfa054a4b0a188559e624aeb3c8 Author: James Oliver Date: Fri Aug 31 16:09:06 2018 -0700 Add script to tear down Longhorn system --- examples/deployment.yaml | 5 ++++ scripts/cleanup.sh | 65 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+) create mode 100755 scripts/cleanup.sh diff --git a/examples/deployment.yaml b/examples/deployment.yaml index d912238..e00563d 100644 --- a/examples/deployment.yaml +++ b/examples/deployment.yaml @@ -30,6 +30,8 @@ metadata: labels: app: mysql spec: + strategy: + type: Recreate template: metadata: labels: @@ -47,6 +49,9 @@ spec: volumeMounts: - name: mysql-volume mountPath: /var/lib/mysql + env: + - name: MYSQL_ROOT_PASSWORD + value: "rancher" volumes: - name: mysql-volume persistentVolumeClaim: diff --git a/scripts/cleanup.sh b/scripts/cleanup.sh new file mode 100755 index 0000000..c21b805 --- /dev/null +++ b/scripts/cleanup.sh @@ -0,0 +1,65 @@ +#!/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 + break + fi + while true; do + out=`kubectl -n ${NAMESPACE} get $crd -o yaml | grep 'items: \[\]'` + if [ $? -eq 0 ]; then + break + fi + echo $out + 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 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 + kubectl -n ${NAMESPACE} delete deployment.apps/longhorn-driver-deployer +} + +# 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