a0cf1e6cef
- Corrigir tipos Hetzner: CPX não existe, usar CX (Intel shared vCPU) - CX23 (2 vCPU, 4GB) equivalente ao CAX11 - CX33 (4 vCPU, 8GB) equivalente ao CAX21 - CX43 (8 vCPU, 16GB) equivalente ao CAX31 - Corrigir location no autoscaler para amd64 (nbg1→fsn1) - Remover gitlab-pool do autoscaler (substituído pelo Gitea) - Aumentar worker-pool max para 30 - Corrigir Floating IP e Load Balancer hardcoded em nbg1 - Corrigir stdin em read interativo: usar < /dev/tty e read -p - Corrigir cleanup de namespace: lidar com Terminating e finalizers - Corrigir CNPG: nome do deployment, secret e endpointURL duplo - Aulas afetadas: 08, 09, 10, 11, 12, 14, 17
127 lines
4.6 KiB
Bash
Executable File
127 lines
4.6 KiB
Bash
Executable File
#!/bin/bash
|
|
# ============================================================================
|
|
# Aula 14 - Cleanup do Istio Traffic Splitting
|
|
# ============================================================================
|
|
# Remove todos os componentes instalados pelo setup.sh:
|
|
# - Namespace istio (aplicação)
|
|
# - Kiali (addon)
|
|
# - Istio (istiod + base)
|
|
# - Ingress resources
|
|
#
|
|
# Mantém:
|
|
# - Cluster Kubernetes
|
|
# - Gitea e Registry (aula-10)
|
|
# - Outros namespaces
|
|
# ============================================================================
|
|
|
|
set -e
|
|
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
CYAN='\033[0;36m'
|
|
NC='\033[0m'
|
|
|
|
log_info() { echo -e "${BLUE}[INFO]${NC} $1"; }
|
|
log_success() { echo -e "${GREEN}[OK]${NC} $1"; }
|
|
log_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; }
|
|
log_error() { echo -e "${RED}[ERRO]${NC} $1"; }
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
|
|
echo ""
|
|
echo -e "${CYAN}╔═══════════════════════════════════════════════════════════╗${NC}"
|
|
echo -e "${CYAN}║ Cleanup - Aula 14 Istio Traffic Splitting ║${NC}"
|
|
echo -e "${CYAN}╚═══════════════════════════════════════════════════════════╝${NC}"
|
|
echo ""
|
|
echo -e "${YELLOW}Este script irá remover:${NC}"
|
|
echo " - Namespace 'istio' com aplicação"
|
|
echo " - Addon: Kiali"
|
|
echo " - Istio: istiod e istio-base"
|
|
echo " - Ingress do Kiali"
|
|
echo ""
|
|
read -p "Continuar? (digite 'sim' para confirmar): " confirm
|
|
if [[ "$confirm" != "sim" ]]; then
|
|
log_info "Operação cancelada"
|
|
exit 0
|
|
fi
|
|
|
|
echo ""
|
|
|
|
# Remover pod de teste
|
|
log_info "Removendo pod de teste..."
|
|
kubectl delete pod curl-test -n istio --ignore-not-found=true 2>/dev/null || true
|
|
|
|
# Remover namespace istio (aplicação demo)
|
|
if kubectl get namespace istio &> /dev/null; then
|
|
log_info "Removendo namespace istio..."
|
|
kubectl delete namespace istio --timeout=120s 2>/dev/null || {
|
|
log_warn "Namespace preso em Terminating, forçando remoção..."
|
|
kubectl get namespace istio -o json | \
|
|
python3 -c "import sys,json; d=json.load(sys.stdin); d['metadata'].pop('finalizers',None); json.dump(d,sys.stdout)" | \
|
|
kubectl replace --raw /api/v1/namespaces/istio/finalize -f - 2>/dev/null || true
|
|
kubectl wait --for=delete namespace istio --timeout=60s 2>/dev/null || sleep 5
|
|
}
|
|
log_success "Namespace istio marcado para remoção"
|
|
else
|
|
log_info "Namespace istio não encontrado"
|
|
fi
|
|
|
|
# Remover Ingress
|
|
log_info "Removendo Ingress..."
|
|
kubectl delete ingress kiali -n istio-system --ignore-not-found=true 2>/dev/null || true
|
|
log_success "Ingress removidos"
|
|
|
|
# Remover addon (Kiali)
|
|
log_info "Removendo Kiali..."
|
|
kubectl delete -f https://raw.githubusercontent.com/istio/istio/release-1.24/samples/addons/kiali.yaml 2>/dev/null || true
|
|
|
|
log_success "Addon removido"
|
|
|
|
# Remover istiod
|
|
if helm status istiod -n istio-system &> /dev/null; then
|
|
log_info "Removendo istiod..."
|
|
helm uninstall istiod -n istio-system --wait
|
|
log_success "istiod removido"
|
|
else
|
|
log_info "istiod não encontrado"
|
|
fi
|
|
|
|
# Remover istio-base
|
|
if helm status istio-base -n istio-system &> /dev/null; then
|
|
log_info "Removendo istio-base..."
|
|
helm uninstall istio-base -n istio-system --wait
|
|
log_success "istio-base removido"
|
|
else
|
|
log_info "istio-base não encontrado"
|
|
fi
|
|
|
|
# Remover namespace istio-system
|
|
if kubectl get namespace istio-system &> /dev/null; then
|
|
log_info "Removendo namespace istio-system..."
|
|
kubectl delete namespace istio-system --timeout=120s 2>/dev/null || {
|
|
log_warn "Namespace preso em Terminating, forçando remoção..."
|
|
kubectl get namespace istio-system -o json | \
|
|
python3 -c "import sys,json; d=json.load(sys.stdin); d['metadata'].pop('finalizers',None); json.dump(d,sys.stdout)" | \
|
|
kubectl replace --raw /api/v1/namespaces/istio-system/finalize -f - 2>/dev/null || true
|
|
kubectl wait --for=delete namespace istio-system --timeout=60s 2>/dev/null || sleep 5
|
|
}
|
|
log_success "Namespace istio-system marcado para remoção"
|
|
fi
|
|
|
|
# Remover arquivo .env
|
|
echo ""
|
|
read -p "Remover arquivo .env? [s/N]: " remove_env
|
|
if [[ "$remove_env" == "s" || "$remove_env" == "S" ]]; then
|
|
rm -f "${SCRIPT_DIR}/.env"
|
|
log_success "Arquivo .env removido"
|
|
fi
|
|
|
|
echo ""
|
|
echo -e "${GREEN}Cleanup concluído.${NC}"
|
|
echo ""
|
|
echo "Aguarde alguns minutos para os namespaces serem removidos completamente."
|
|
echo "Verificar: kubectl get ns"
|
|
echo ""
|