All checks were successful
kustomization/cert-manager/3a682516 reconciliation succeeded
kustomization/kyverno/3a682516 reconciliation succeeded
kustomization/akri/3a682516 reconciliation succeeded
kustomization/rook-ceph/3a682516 reconciliation succeeded
kustomization/node-feature-discovery/3a682516 reconciliation succeeded
kustomization/node-feature-discovery-rules/3a682516 reconciliation succeeded
kustomization/velero/3a682516 reconciliation succeeded
kustomization/flux-system/3a682516 reconciliation succeeded
kustomization/kyverno-policies/3a682516 reconciliation succeeded
kustomization/letsencrypt/3a682516 reconciliation succeeded
kustomization/topolvm/3a682516 reconciliation succeeded
kustomization/rook-ceph-cluster/3a682516 reconciliation succeeded
kustomization/kube-vip/3a682516 reconciliation succeeded
kustomization/traefik/3a682516 reconciliation succeeded
kustomization/cnpg/3a682516 reconciliation succeeded
kustomization/authelia/3a682516 reconciliation succeeded
kustomization/traefik-middleware/3a682516 reconciliation succeeded
kustomization/lldap/3a682516 reconciliation succeeded
kustomization/apps/3a682516 reconciliation succeeded
73 lines
2.2 KiB
Bash
Executable File
73 lines
2.2 KiB
Bash
Executable File
#!/bin/bash
|
|
###############################################################################
|
|
# Remove all api-resources in namespace and then remove the namespace
|
|
#
|
|
# Query all api-resources in namespace, remove the finalizers and
|
|
# then remove the resource. Finally remove the finalizers on the Namespace and
|
|
# finally remove the namespace.
|
|
#
|
|
# Oracle Consulting Netherlands
|
|
#
|
|
# History
|
|
# -------
|
|
# 2024-05-11, M. van den Akker, Initial Creation
|
|
#
|
|
###############################################################################
|
|
|
|
export NS=$1
|
|
|
|
function count_apiresources() {
|
|
resource=$1
|
|
ROWS=$(kubectl get $resource -n $NS -o name |wc -l);
|
|
echo $ROWS
|
|
return $ROWS
|
|
}
|
|
|
|
function patch_apiresources(){
|
|
resource=$1
|
|
for resource_name in $(kubectl get $resource -n $NS -o name); do
|
|
echo "Patch $resource $resource_name"
|
|
kubectl -n $NS patch $resource_name -p '{"metadata":{"finalizers":null}}' --type=merge
|
|
done
|
|
}
|
|
|
|
function delete_apiresources(){
|
|
resource=$1
|
|
for resource_name in $(kubectl get $resource -n $NS -o name); do
|
|
echo "Delete $resource $resource_name"
|
|
kubectl -n $NS delete $resource_name --force
|
|
done
|
|
}
|
|
|
|
function patch_delete_apiresources(){
|
|
API_RESOURCE=$1
|
|
ROWS=$(count_apiresources $API_RESOURCE)
|
|
if [ $ROWS -gt 0 ]; then
|
|
echo Patch $ROWS occurrences of api-resource $API_RESOURCE for $NS to remove finalizers
|
|
patch_apiresources $API_RESOURCE
|
|
ROWS=$(count_apiresources $API_RESOURCE)
|
|
if [ $ROWS -gt 0 ]; then
|
|
echo Delete $ROWS occurrences of api-resource $API_RESOURCE for $NS
|
|
delete_apiresources $API_RESOURCE
|
|
else
|
|
echo No occurrences of api-resource $API_RESOURCE left.
|
|
fi
|
|
else
|
|
echo No occurrences of api-resource $API_RESOURCE found...
|
|
fi
|
|
}
|
|
|
|
for API_RESOURCE in $(kubectl api-resources --no-headers --verbs=list --namespaced -o name); do
|
|
patch_delete_apiresources $API_RESOURCE
|
|
done
|
|
|
|
|
|
echo Patch namespace $NS to clear metadata.finalizers
|
|
kubectl patch ns $NS -p '{"metadata":{"finalizers":null}}'
|
|
echo Patch namespace $NS to clear spec.finalizers
|
|
kubectl patch ns $NS -p '{"spec":{"finalizers":null}}'
|
|
echo Patch namespace $NS to clear metadata.annotations
|
|
kubectl patch ns $NS -p '{"metadata":{"annotations":null}}'
|
|
echo Force delete namespace $NS
|
|
kubectl delete ns $NS --grace-period=0 --force
|