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
This commit is contained in:
Executable
+117
@@ -0,0 +1,117 @@
|
||||
#!/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 ""
|
||||
Reference in New Issue
Block a user