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
This commit is contained in:
184
aula-10/cleanup.sh
Executable file
184
aula-10/cleanup.sh
Executable file
@@ -0,0 +1,184 @@
|
||||
#!/bin/bash
|
||||
# =============================================================================
|
||||
# Cleanup da Aula 10 - Remove GitLab
|
||||
# =============================================================================
|
||||
#
|
||||
# Este script remove:
|
||||
# - GitLab (Helm release)
|
||||
# - PVCs (dados persistentes)
|
||||
# - Secrets
|
||||
# - Namespace gitlab
|
||||
# - cert-manager (se instalado por esta aula)
|
||||
# - Arquivo .env
|
||||
#
|
||||
# NÃO remove (gerenciados pela aula-08):
|
||||
# - NGINX Ingress Controller
|
||||
# - Hetzner CSI Driver
|
||||
# - LoadBalancer
|
||||
#
|
||||
# ATENÇÃO: Todos os dados do GitLab serão perdidos!
|
||||
#
|
||||
# =============================================================================
|
||||
|
||||
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 10 (GitLab)${NC}"
|
||||
echo -e "${CYAN}============================================${NC}"
|
||||
echo ""
|
||||
|
||||
log_warn "ATENÇÃO: Isso vai remover os recursos da aula 10:"
|
||||
echo " - GitLab e todos os componentes"
|
||||
echo " - Volumes persistentes (PostgreSQL, Redis, MinIO, Gitaly)"
|
||||
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 TCP SERVICES DO NGINX
|
||||
# =============================================================================
|
||||
|
||||
log_info "=== Removendo configuração TCP do NGINX ==="
|
||||
|
||||
if kubectl get configmap tcp-services -n ingress-nginx &> /dev/null; then
|
||||
kubectl patch configmap tcp-services \
|
||||
-n ingress-nginx \
|
||||
--type json \
|
||||
-p '[{"op": "remove", "path": "/data/22"}]' 2>/dev/null || true
|
||||
log_success "Configuração TCP removida"
|
||||
else
|
||||
log_info "ConfigMap tcp-services não encontrado"
|
||||
fi
|
||||
|
||||
# =============================================================================
|
||||
# 2. DESINSTALAR GITLAB
|
||||
# =============================================================================
|
||||
|
||||
log_info "=== Removendo GitLab ==="
|
||||
|
||||
if helm status gitlab -n gitlab &> /dev/null; then
|
||||
log_info "Desinstalando GitLab via Helm..."
|
||||
helm uninstall gitlab -n gitlab --wait 2>/dev/null || true
|
||||
log_success "GitLab removido"
|
||||
else
|
||||
log_info "GitLab não está instalado"
|
||||
fi
|
||||
|
||||
# Remover PVCs
|
||||
if kubectl get pvc -n gitlab &> /dev/null 2>&1; then
|
||||
log_info "Removendo PVCs do namespace gitlab..."
|
||||
kubectl delete pvc --all -n gitlab --wait=false 2>/dev/null || true
|
||||
fi
|
||||
|
||||
# Aguardar PVs serem liberados
|
||||
sleep 5
|
||||
|
||||
# Remover secrets restantes
|
||||
log_info "Removendo secrets..."
|
||||
kubectl delete secret --all -n gitlab 2>/dev/null || true
|
||||
|
||||
# Remover namespace
|
||||
if kubectl get namespace gitlab &> /dev/null; then
|
||||
log_info "Removendo namespace gitlab..."
|
||||
kubectl delete namespace gitlab --wait=false 2>/dev/null || true
|
||||
log_success "Namespace gitlab removido"
|
||||
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 " - GitLab e todos os componentes"
|
||||
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 ""
|
||||
Reference in New Issue
Block a user