chore: создан cleanup_test_namespaces.sh для удаления тестовых namespace

This commit is contained in:
“Naeel”
2026-05-02 14:56:40 +04:00
parent d18958467c
commit 6d02c532d2
+54
View File
@@ -0,0 +1,54 @@
#!/bin/bash
# cleanup_test_namespaces.sh — удаляет все тестовые namespace по списку пользователей
# Использование: cleanup_test_namespaces.sh user1@test.local user2@test.local ...
# Переменная окружения: KUBECTL_DIRECT=1 (если использовать kubectl напрямую, иначе через SSH)
set -uo pipefail
if [ $# -eq 0 ]; then
echo "Usage: $0 user1@test.local [user2@test.local ...]"
exit 1
fi
if [ "${KUBECTL_DIRECT:-0}" = "1" ]; then
KUBECTL_CMD="kubectl"
else
SSH="ssh -i ~/.ssh/naeel_vm_id_ed25519 -o StrictHostKeyChecking=no -o ConnectTimeout=10 naeel@5.172.178.213"
KUBECTL_CMD="$SSH kubectl"
fi
# Генерируем хэши namespace для каждого пользователя
# Fission console создаёт NS как fission-<hash(email)>
declare -a NS_TO_DELETE=()
for user in "$@"; do
# Вычисляем хэш email (console использует sha256sum и берёт первые 16 символов)
ns_hash=$(printf '%s' "$user" | sha256sum | head -c 16)
ns_name="fission-${ns_hash}"
NS_TO_DELETE+=("$ns_name")
done
# Также удаляем все NS явно с префиксом test- (тестовые)
if [ "${KUBECTL_DIRECT:-0}" = "1" ]; then
EXTRA_NS=$(kubectl get ns --no-headers 2>/dev/null | awk '{print $1}' | grep '^test-' || true)
else
EXTRA_NS=$($SSH "kubectl get ns --no-headers 2>/dev/null | awk '{print \$1}' | grep '^test-' || true")
fi
for ns in $EXTRA_NS; do
NS_TO_DELETE+=("$ns")
done
# Удаляем все найденные namespace
if [ ${#NS_TO_DELETE[@]} -gt 0 ]; then
for ns in "${NS_TO_DELETE[@]}"; do
if $KUBECTL_CMD get ns "$ns" &>/dev/null 2>&1; then
echo " Deleting namespace: $ns"
$KUBECTL_CMD delete ns "$ns" --wait=false 2>/dev/null || true
fi
done
else
echo " No namespaces to delete"
fi
exit 0