prole/tmp/force_delete_ns.sh

25 lines
888 B
Bash

#!/usr/bin/env bash
set -euo pipefail
export KUBECONFIG=/Users/chrisfu/dev/knoe/knoe-k3s.kubeconfig
echo "==> Resources blocking termination:"
kubectl -n gitlab get all --ignore-not-found 2>&1 | head -20 || true
echo "==> Force-removing finalizers from stuck GitLab CRs..."
for res in $(kubectl -n gitlab get gitlabs.apps.gitlab.com --no-headers -o name 2>/dev/null || true); do
kubectl -n gitlab patch "$res" -p '{"metadata":{"finalizers":[]}}' --type=merge 2>/dev/null || true
done
echo "==> Forcing namespace finalizer removal via API..."
kubectl get namespace gitlab -o json 2>/dev/null | \
python3 -c "
import sys, json
d = json.load(sys.stdin)
d['spec']['finalizers'] = []
print(json.dumps(d))
" | kubectl replace --raw /api/v1/namespaces/gitlab/finalize -f - 2>&1 || true
sleep 10
echo "==> Namespace status:"
kubectl get ns gitlab 2>&1 || echo "Namespace gone — clean."