Files
workshop/aula-09/cleanup.sh
Allyson de Paula 07b7ee62d3 Workshop completo: aulas 08-10 com Talos, n8n e GitLab na Hetzner
Aula 08 - Cluster Kubernetes HA:
- Setup interativo com OpenTofu para Talos na Hetzner
- CCM, CSI Driver, Cluster Autoscaler, Metrics Server
- NGINX Ingress com LoadBalancer (HTTP/HTTPS/SSH)

Aula 09 - n8n na Hetzner:
- Deploy via Helm com PostgreSQL e Redis
- Suporte multi-tenant com add-client.sh
- Integração com Hetzner CSI para volumes persistentes

Aula 10 - GitLab na Hetzner:
- Setup agnóstico: CloudFlare (trusted proxies) ou Let's Encrypt
- Anti-affinity para distribuir webservice/sidekiq em nós diferentes
- Container Registry e SSH via TCP passthrough
- Documentação do erro 422 e solução com trustedCIDRsForXForwardedFor

Melhorias gerais:
- READMEs atualizados com arquitetura e troubleshooting
- Scripts cleanup.sh para todas as aulas
- CLAUDE.md atualizado com contexto do projeto
2025-12-31 17:57:02 -03:00

186 lines
5.6 KiB
Bash
Executable File

#!/bin/bash
# =============================================================================
# Cleanup da Aula 09 - Remove n8n e clientes
# =============================================================================
#
# Este script remove:
# - n8n principal (namespace n8n)
# - Todos os clientes (namespaces *-n8n)
# - cert-manager (se instalado por esta aula)
# - Arquivo .env
#
# NÃO remove (gerenciados pela aula-08):
# - NGINX Ingress Controller
# - Hetzner CSI Driver
# - LoadBalancer
#
# =============================================================================
set -e
# Cores para output
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 09 (n8n)${NC}"
echo -e "${CYAN}============================================${NC}"
echo ""
log_warn "ATENÇÃO: Isso vai remover os recursos da aula 09:"
echo " - n8n principal e todos os clientes"
echo " - Volumes persistentes (PostgreSQL, Redis, n8n)"
echo " - cert-manager (se instalado)"
echo " - Arquivo .env"
echo ""
echo "Mantido (aula-08):"
echo " - NGINX Ingress Controller"
echo " - Hetzner CSI Driver"
echo " - LoadBalancer"
echo ""
read -p "Continuar? (digite 'sim' para confirmar): " confirm
if [ "$confirm" != "sim" ]; then
log_info "Operação cancelada"
exit 0
fi
echo ""
# =============================================================================
# 1. REMOVER n8n PRINCIPAL
# =============================================================================
log_info "=== Removendo n8n principal ==="
if helm status n8n -n n8n &> /dev/null; then
log_info "Removendo Helm release n8n..."
helm uninstall n8n -n n8n --wait 2>/dev/null || true
log_success "n8n removido"
else
log_info "n8n não está instalado"
fi
# Remover PVCs
if kubectl get pvc -n n8n &> /dev/null 2>&1; then
log_info "Removendo PVCs do namespace n8n..."
kubectl delete pvc --all -n n8n --wait=false 2>/dev/null || true
fi
# Remover namespace
if kubectl get namespace n8n &> /dev/null; then
log_info "Removendo namespace n8n..."
kubectl delete namespace n8n --wait=false 2>/dev/null || true
log_success "Namespace n8n removido"
fi
# =============================================================================
# 2. REMOVER CLIENTES (namespaces *-n8n)
# =============================================================================
log_info "=== Removendo clientes ==="
CLIENT_NAMESPACES=$(kubectl get namespaces -o name 2>/dev/null | grep -E ".*-n8n$" | sed 's/namespace\///' || true)
if [ -n "$CLIENT_NAMESPACES" ]; then
for ns in $CLIENT_NAMESPACES; do
log_info "Removendo cliente: $ns"
# Remover helm release
RELEASE_NAME=$(echo "$ns" | sed 's/-n8n$//')
helm uninstall "${RELEASE_NAME}-n8n" -n "$ns" --wait 2>/dev/null || true
# Remover PVCs
kubectl delete pvc --all -n "$ns" --wait=false 2>/dev/null || true
# Remover namespace
kubectl delete namespace "$ns" --wait=false 2>/dev/null || true
log_success "Cliente $ns removido"
done
else
log_info "Nenhum cliente encontrado"
fi
# =============================================================================
# 3. REMOVER CERT-MANAGER (se instalado)
# =============================================================================
log_info "=== Verificando cert-manager ==="
if helm status cert-manager -n cert-manager &> /dev/null; then
log_info "Removendo cert-manager..."
# Remover ClusterIssuer primeiro
kubectl delete clusterissuer --all 2>/dev/null || true
# Remover helm release
helm uninstall cert-manager -n cert-manager --wait 2>/dev/null || true
# Remover CRDs
kubectl delete crd \
certificates.cert-manager.io \
certificaterequests.cert-manager.io \
challenges.acme.cert-manager.io \
clusterissuers.cert-manager.io \
issuers.cert-manager.io \
orders.acme.cert-manager.io \
2>/dev/null || true
# Remover namespace
kubectl delete namespace cert-manager --wait=false 2>/dev/null || true
log_success "cert-manager removido"
else
log_info "cert-manager não está instalado"
fi
# =============================================================================
# 4. REMOVER ARQUIVO .env
# =============================================================================
log_info "=== Removendo arquivo de configuração ==="
if [ -f "$SCRIPT_DIR/.env" ]; then
rm -f "$SCRIPT_DIR/.env"
log_success "Arquivo .env removido"
else
log_info "Arquivo .env não existe"
fi
# =============================================================================
# RESUMO
# =============================================================================
echo ""
echo -e "${CYAN}============================================${NC}"
echo -e "${GREEN} Cleanup Concluído!${NC}"
echo -e "${CYAN}============================================${NC}"
echo ""
echo "Removido:"
echo " - n8n principal e clientes"
echo " - cert-manager (se existia)"
echo " - Arquivo .env"
echo ""
echo "Mantido (aula-08):"
echo " - NGINX Ingress Controller"
echo " - Hetzner CSI Driver"
echo " - LoadBalancer"
echo " - Cluster Kubernetes"
echo ""
log_warn "Volumes Hetzner podem demorar alguns minutos para serem"
log_warn "completamente removidos. Verifique no painel da Hetzner."
echo ""