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:
ArgoCD Setup
2026-04-10 08:43:01 -03:00
parent 6ae82ed183
commit 60e69c9ff6
15 changed files with 1397 additions and 129 deletions
+17 -17
View File
@@ -1,6 +1,6 @@
# Aula 14 - Istio Traffic Splitting
Demonstração de **app-backend deployment** usando Istio para dividir tráfego entre duas versões da aplicação.
Demonstração de **canary deployment manual** usando Istio para dividir tráfego entre duas versões da aplicação.
## Motivação
@@ -29,9 +29,9 @@ Em produção, lançar uma nova versão diretamente para 100% dos usuários é a
│ │ bug │ │ ok │ │
│ └──────┘ └──────┘ │
│ │
│ ┌─────────┐ ┌────────┐ ┌─────────────────┐│
│ │ Kiali │ │ Jaeger │ │ Victoria Metrics
│ └─────────┘ └────────┘ └─────────────────┘│
│ ┌─────────┐ ┌─────────────────┐
│ │ Kiali │ │ Victoria Metrics
│ └─────────┘ └─────────────────┘
└─────────────────────────────────────────────┘
```
@@ -72,11 +72,10 @@ aula-14/
│ ├── deployment-v2.yaml
│ ├── service.yaml
│ ├── destination-rule.yaml # Define subsets v1, v2
── virtual-service.yaml # Traffic splitting (90/10)
── virtual-service.yaml # Traffic splitting (90/10)
│ └── ingress-kiali.yaml
└── istio/
── kiali-values.yaml
├── jaeger-values.yaml
└── gateway.yaml
── kiali-values.yaml
```
## Instalação
@@ -89,9 +88,9 @@ cd aula-14
O script irá:
1. Verificar pré-requisitos (incluindo Victoria Metrics da aula-12)
2. Coletar configuração (domínio, registry, TLS)
3. Instalar Istio (istio-base + istiod)
4. Instalar Kiali e Jaeger (métricas via Victoria Metrics)
5. Configurar Ingress para dashboards
3. Instalar Istio (istio-base + istiod + ingressgateway)
4. Instalar Kiali (dashboard do service mesh, métricas via Victoria Metrics)
5. Configurar Ingress com Basic Auth e rate limiting
6. Build e push das imagens v1 e v2
7. Deploy da aplicação com traffic splitting 90/10
@@ -152,9 +151,9 @@ kubectl patch virtualservice app-backend -n istio --type='json' \
{"op":"replace","path":"/spec/http/0/route/1/weight","value":50}]'
```
### 4. Verificar traces no Jaeger
### 4. Observar no Kiali
Abra o Jaeger e observe os traces das requisições passando pelo mesh.
Volte ao Kiali e veja o tráfego redistribuído igualmente entre v1 e v2.
### 5. Rollout completo para v2
@@ -185,9 +184,6 @@ kubectl logs -n istio -l app=app-backend,version=v2 -f
# Port-forward para Kiali (alternativa ao Ingress)
kubectl port-forward svc/kiali -n istio-system 20001:20001
# Port-forward para Jaeger
kubectl port-forward svc/tracing -n istio-system 16686:80
```
## Cleanup
@@ -196,7 +192,7 @@ kubectl port-forward svc/tracing -n istio-system 16686:80
./cleanup.sh
```
Remove Istio, addons e namespace da aplicação.
Remove Istio, Kiali e namespace da aplicação.
## Troubleshooting
@@ -228,3 +224,7 @@ Verificar se DestinationRule existe:
```bash
kubectl get destinationrule app-backend -n istio -o yaml
```
### E o tracing?
O tracing distribuído (ver o caminho de um request individual) é configurado na **aula-15** com Grafana Tempo + OpenTelemetry. O Istio envia traces automaticamente para o Tempo após a aula-15 ser instalada.