51 lines
1.5 KiB
Bash
51 lines
1.5 KiB
Bash
#!/bin/bash
|
|
# GENERATED — component={{COMPONENT}} bundle={{BUNDLE_ID}} op=delete
|
|
# Removes workload resources only (by label). Preserves pvc, secret, namespace.
|
|
set -euo pipefail
|
|
|
|
BUNDLE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
LOG="${BUNDLE_DIR}/delete.log"
|
|
NAMESPACE="{{NAMESPACE}}"
|
|
COMPONENT="{{COMPONENT}}"
|
|
STEP="init"
|
|
|
|
exec > >(tee -a "$LOG") 2>&1
|
|
|
|
_kubectl() {
|
|
if command -v kubectl >/dev/null 2>&1; then
|
|
command kubectl "$@"
|
|
elif command -v k0s >/dev/null 2>&1; then
|
|
k0s kubectl "$@"
|
|
else
|
|
echo "ERROR: no kubectl or k0s binary found on host" >&2
|
|
exit 127
|
|
fi
|
|
}
|
|
|
|
_fail() {
|
|
local rc=$?
|
|
echo "FAILED step=${STEP} line=${BASH_LINENO[0]} rc=${rc}" >&2
|
|
exit "${rc}"
|
|
}
|
|
trap _fail ERR
|
|
|
|
echo "[delete] component=${COMPONENT} bundle={{BUNDLE_ID}} namespace=${NAMESPACE} started=$(date -Iseconds)"
|
|
|
|
STEP="delete-workload"
|
|
_kubectl delete statefulset,deployment,service,configmap \
|
|
--namespace "${NAMESPACE}" \
|
|
--selector "app.kubernetes.io/name=${COMPONENT}" \
|
|
--ignore-not-found \
|
|
--timeout=90s
|
|
|
|
STEP="verify-preserved"
|
|
if _kubectl get pvc --namespace "${NAMESPACE}" --selector "app.kubernetes.io/name=${COMPONENT}" -o name 2>/dev/null | grep -q .; then
|
|
echo "[delete] PVCs preserved:"
|
|
_kubectl get pvc --namespace "${NAMESPACE}" --selector "app.kubernetes.io/name=${COMPONENT}"
|
|
fi
|
|
if _kubectl get secret "${COMPONENT}-credentials" --namespace "${NAMESPACE}" >/dev/null 2>&1; then
|
|
echo "[delete] Secret ${COMPONENT}-credentials preserved."
|
|
fi
|
|
|
|
STEP="done"
|
|
echo "[delete] OK finished=$(date -Iseconds)"
|