Files
ArgoCD Setup 60e69c9ff6 feat: adicionar aula-16 (Flagger), remover Jaeger da aula-14 e integrar tracing Istio na aula-15
- aula-16: nova aula de canary deployment automatizado com Flagger
- aula-14: removido Jaeger (tracing movido para aula-15), corrigido
  nome do serviço Victoria Metrics, adicionado rate limiting no Kiali
- aula-15: adicionado receiver Zipkin no OTel Collector para receber
  traces do Istio, corrigida porta do Tempo (3100→3200), integração
  automática com Istio quando detectado
- aula-03: corrigido MAX_REQUESTS de 10 para 3 (valor padrão)
- CLAUDE.md: adicionada aula-16 na documentação
2026-04-10 08:43:01 -03:00

118 lines
4.6 KiB
Bash
Executable File

#!/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 ""