1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
   | #!/usr/bin/env bash # 删除kubeshpere集群脚本 # set -x: Print commands and their arguments as they are executed. # set -e: Exit immediately if a command exits with a non-zero status.
  # set -xe
  # delete ks-install kubectl delete deploy ks-installer -n kubesphere-system
  # delete helm for namespaces in kubesphere-system kubesphere-devops-system kubesphere-monitoring-system kubesphere-logging-system istio-system kube-federation-system kube-system openpitrix-system do   helm list -n $namespaces | grep -v NAME | awk '{print $1}' | sort -u | xargs -r -L1 helm uninstall -n $namespaces done
  # delete kubesphere deployment kubectl delete deployment -n kubesphere-system `kubectl get deployment -n kubesphere-system -o jsonpath="{.items[*].metadata.name}"`
  # delete monitor statefulset kubectl delete statefulset -n kubesphere-monitoring-system `kubectl get statefulset -n kubesphere-monitoring-system -o jsonpath="{.items[*].metadata.name}"`
  # delete pvc pvcs="kubesphere-system|openpitrix-system|kubesphere-monitoring-system|kubesphere-devops-system|kubesphere-logging-system" kubectl --no-headers=true get pvc --all-namespaces -o custom-columns=:metadata.namespace,:metadata.name | grep -E $pvcs | xargs -n2 kubectl delete pvc -n
 
  # delete rolebindings delete_role_bindings() {   for rolebinding in `kubectl -n $1 get rolebindings -l iam.kubesphere.io/user-ref -o jsonpath="{.items[*].metadata.name}"`   do     kubectl -n $1 delete rolebinding $rolebinding   done }
  # delete roles delete_roles() {   kubectl -n $1 delete role admin   kubectl -n $1 delete role operator   kubectl -n $1 delete role viewer   for role in `kubectl -n $1 get roles -l iam.kubesphere.io/role-template -o jsonpath="{.items[*].metadata.name}"`   do     kubectl -n $1 delete role $role   done }
  # remove useless labels and finalizers for ns in `kubectl get ns -o jsonpath="{.items[*].metadata.name}"` do   kubectl label ns $ns kubesphere.io/workspace-   kubectl label ns $ns kubesphere.io/namespace-   kubectl patch ns $ns -p '{"metadata":{"finalizers":null,"ownerReferences":null}}'   delete_role_bindings $ns   delete_roles $ns done
  # delete workspaces for ws in `kubectl get workspaces -o jsonpath="{.items[*].metadata.name}"` do   kubectl patch workspace $ws -p '{"metadata":{"finalizers":null}}' --type=merge done kubectl delete workspaces --all
  # delete clusters for cluster in `kubectl get clusters -o jsonpath="{.items[*].metadata.name}"` do   kubectl patch cluster $cluster -p '{"metadata":{"finalizers":null}}' --type=merge done
  # delete validatingwebhookconfigurations for webhook in ks-events-admission-validate users.iam.kubesphere.io validating-webhook-configuration do   kubectl delete validatingwebhookconfigurations.admissionregistration.k8s.io $webhook done
  # delete mutatingwebhookconfigurations for webhook in ks-events-admission-mutate logsidecar-injector-admission-mutate mutating-webhook-configuration do   kubectl delete mutatingwebhookconfigurations.admissionregistration.k8s.io $webhook done
  # delete users for user in `kubectl get users -o jsonpath="{.items[*].metadata.name}"` do   kubectl patch user $user -p '{"metadata":{"finalizers":null}}' --type=merge done kubectl delete users --all
  # delete crds for crd in `kubectl get crds -o jsonpath="{.items[*].metadata.name}"` do   if [[ $crd == *kubesphere.io ]]; then kubectl delete crd $crd; fi done
  # delete relevance ns for ns in kubesphere-alerting-system kubesphere-controls-system kubesphere-devops-system kubesphere-logging-system kubesphere-monitoring-system openpitrix-system istio-system do   kubectl delete ns $ns done
   
   |