#!/bin/bash # ============================================================================ # Aula 16 - Cleanup do Flagger # ============================================================================ # Remove o Flagger e reverte as configurações de canary. # NÃO remove o Istio (aula-14) nem o Victoria Metrics (aula-12). # ============================================================================ 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 16 (Flagger) ║${NC}" echo -e "${CYAN}╚═══════════════════════════════════════════════════════════╝${NC}" echo "" echo -e "${YELLOW}Isso vai remover:${NC}" echo " - Flagger Loadtester (streamify-production)" echo " - Flagger Controller (istio-system)" echo " - Flagger CRDs" echo " - VMPodScrapes do Istio" echo " - PeerAuthentication" echo " - Label istio-injection do namespace" echo "" echo -e "${YELLOW}NÃO vai remover:${NC}" echo " - Istio (aula-14)" echo " - Victoria Metrics (aula-12)" echo " - Mudanças no Helm chart (reverter manualmente no repo streamify-deploy)" echo "" read -p "Confirmar remoção? (digite 'sim'): " confirm if [[ "$confirm" != "sim" ]]; then echo "Cancelado." exit 0 fi echo "" # 1. Remover Loadtester log_info "Removendo Flagger Loadtester..." helm uninstall flagger-loadtester -n streamify-production --wait 2>/dev/null || true log_success "Loadtester removido" # 2. Remover Canary CRD resource (para Flagger devolver controle do deployment) log_info "Removendo Canary resources..." kubectl delete canary --all -n streamify-production --ignore-not-found=true 2>/dev/null || true log_success "Canary resources removidos" # 3. Aguardar Flagger restaurar o deployment original log_info "Aguardando restauração do deployment..." sleep 10 # 4. Remover Flagger log_info "Removendo Flagger..." helm uninstall flagger -n istio-system --wait 2>/dev/null || true log_success "Flagger removido" # 5. Remover CRDs log_info "Removendo Flagger CRDs..." kubectl delete crd canaries.flagger.app metrictemplates.flagger.app alertproviders.flagger.app 2>/dev/null || true log_success "CRDs removidos" # 6. Remover VMPodScrapes log_info "Removendo VMPodScrapes do Istio..." kubectl delete vmpodscrape envoy-stats istiod -n monitoring --ignore-not-found=true 2>/dev/null || true log_success "VMPodScrapes removidos" # 7. Remover PeerAuthentication log_info "Removendo PeerAuthentication..." kubectl delete peerauthentication default -n streamify-production --ignore-not-found=true 2>/dev/null || true log_success "PeerAuthentication removida" # 8. Remover label de sidecar injection log_info "Removendo label istio-injection..." kubectl label namespace streamify-production istio-injection- 2>/dev/null || true log_success "Label removida" # 9. Reiniciar pods para remover sidecars log_info "Reiniciando deployments para remover sidecars..." kubectl rollout restart deployment -n streamify-production 2>/dev/null || true kubectl rollout status deployment/streamify-production-web -n streamify-production --timeout=300s 2>/dev/null || true log_success "Sidecars removidos" # 10. Limpar VirtualService e DestinationRule órfãos log_info "Removendo VirtualServices e DestinationRules órfãos..." kubectl delete virtualservice --all -n streamify-production --ignore-not-found=true 2>/dev/null || true kubectl delete destinationrule --all -n streamify-production --ignore-not-found=true 2>/dev/null || true log_success "Recursos Istio limpos" # 11. 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} Para reverter as mudanças no Helm chart:" echo " 1. Remova canary.enabled do values-production.yaml" echo " 2. Remova o template canary.yaml" echo " 3. Reverta a linha do ingress.yaml (remova o sufixo -primary)" echo " 4. Commit e push no repo streamify-deploy" echo ""