#!/bin/bash # ============================================================================ # Aula 17 - Cleanup do CNPG # ============================================================================ # Remove o cluster PostgreSQL, app demo, e o CNPG operator. # ============================================================================ 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 17 (CNPG) ║${NC}" echo -e "${CYAN}╚═══════════════════════════════════════════════════════════╝${NC}" echo "" echo -e "${YELLOW}Isso vai remover:${NC}" echo " - App demo (cnpg namespace)" echo " - Cluster PostgreSQL shared-postgres" echo " - Secrets (credenciais S3, superuser)" echo " - ScheduledBackup" echo " - Namespace cnpg" echo " - CNPG Operator (cnpg-system namespace)" echo "" echo -e "${YELLOW}NÃO vai remover:${NC}" echo " - Backups no Hetzner Object Storage (permanecem no S3)" echo " - Victoria Metrics (aula-12)" echo " - PVCs (removidos junto com o cluster)" echo "" read -p "Confirmar remoção? (digite 'sim'): " confirm if [[ "$confirm" != "sim" ]]; then echo "Cancelado." exit 0 fi echo "" # 1. Remover app demo log_info "Removendo app demo..." kubectl delete deployment pg-demo -n cnpg --ignore-not-found=true 2>/dev/null || true kubectl delete service pg-demo -n cnpg --ignore-not-found=true 2>/dev/null || true log_success "App demo removido" # 2. Remover ScheduledBackup log_info "Removendo backup agendado..." kubectl delete scheduledbackup shared-postgres-backup -n cnpg --ignore-not-found=true 2>/dev/null || true log_success "Backup agendado removido" # 3. Remover Cluster PostgreSQL (isso também remove PVCs) log_info "Removendo cluster PostgreSQL..." kubectl delete cluster shared-postgres -n cnpg --ignore-not-found=true 2>/dev/null || true log_info "Aguardando pods serem removidos..." kubectl wait --for=delete cluster/shared-postgres -n cnpg --timeout=300s 2>/dev/null || true log_success "Cluster removido" # 4. Remover secrets log_info "Removendo secrets..." kubectl delete secret cnpg-backup-credentials -n cnpg --ignore-not-found=true 2>/dev/null || true kubectl delete secret shared-postgres-superuser -n cnpg --ignore-not-found=true 2>/dev/null || true log_success "Secrets removidos" # 5. Remover namespace log_info "Removendo namespace cnpg..." kubectl delete namespace cnpg --ignore-not-found=true 2>/dev/null || true log_success "Namespace cnpg removido" # 6. Remover CNPG Operator log_info "Removendo CNPG operator..." helm uninstall cnpg -n cnpg-system --wait 2>/dev/null || true kubectl delete namespace cnpg-system --ignore-not-found=true 2>/dev/null || true log_success "CNPG operator removido" # 7. Remover CRDs log_info "Removendo CNPG CRDs..." kubectl delete crd clusters.postgresql.cnpg.io backups.postgresql.cnpg.io scheduledbackups.postgresql.cnpg.io poolers.postgresql.cnpg.io imagecatalogs.postgresql.cnpg.io 2>/dev/null || true log_success "CRDs removidos" # 8. Remover .env read -p "Remover arquivo .env? [s/N]: " remove_env if [[ "$remove_env" == "s" || "$remove_env" == "S" ]]; then rm -f "${SCRIPT_DIR}/.env" log_success ".env removido" fi echo "" echo -e "${GREEN}Cleanup concluído!${NC}" echo "" echo -e "${YELLOW}Lembrete:${NC} Backups no Hetzner Object Storage NÃO foram removidos." echo " Para remover: acesse o console Hetzner > Object Storage" echo ""