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:
@@ -37,7 +37,10 @@ ports:
|
||||
jaeger-grpc:
|
||||
enabled: false
|
||||
zipkin:
|
||||
enabled: false
|
||||
enabled: true
|
||||
containerPort: 9411
|
||||
servicePort: 9411
|
||||
protocol: TCP
|
||||
|
||||
config:
|
||||
receivers:
|
||||
@@ -47,6 +50,8 @@ config:
|
||||
endpoint: "0.0.0.0:4317"
|
||||
http:
|
||||
endpoint: "0.0.0.0:4318"
|
||||
zipkin:
|
||||
endpoint: "0.0.0.0:9411"
|
||||
|
||||
connectors:
|
||||
spanmetrics:
|
||||
@@ -79,7 +84,7 @@ config:
|
||||
service:
|
||||
pipelines:
|
||||
traces:
|
||||
receivers: [otlp]
|
||||
receivers: [otlp, zipkin]
|
||||
processors: [memory_limiter, batch]
|
||||
exporters: [otlp/tempo, spanmetrics]
|
||||
metrics/spanmetrics:
|
||||
|
||||
+58
-1
@@ -209,7 +209,7 @@ data:
|
||||
datasources:
|
||||
- name: Tempo
|
||||
type: tempo
|
||||
url: http://tempo.monitoring:3100
|
||||
url: http://tempo.monitoring:3200
|
||||
access: proxy
|
||||
isDefault: false
|
||||
jsonData:
|
||||
@@ -413,6 +413,63 @@ log_success "Ingress demo-app criado"
|
||||
log_info "Aguardando demo-app ficar pronta..."
|
||||
kubectl wait --for=condition=available deployment/demo-app -n demo --timeout=180s 2>/dev/null || true
|
||||
|
||||
# =============================================================================
|
||||
# CONFIGURAR ISTIO TRACING (se Istio estiver instalado)
|
||||
# =============================================================================
|
||||
|
||||
if kubectl get deployment istiod -n istio-system &> /dev/null; then
|
||||
echo ""
|
||||
log_info "=== Istio detectado — configurando tracing via OTel Collector ==="
|
||||
|
||||
OTEL_ZIPKIN_URL="otel-collector-opentelemetry-collector.monitoring"
|
||||
|
||||
# Configurar istiod para enviar traces ao OTel Collector via Zipkin
|
||||
log_info "Configurando istiod para enviar traces ao OTel Collector..."
|
||||
helm upgrade istiod istio/istiod -n istio-system \
|
||||
--set "meshConfig.defaultConfig.tracing.zipkin.address=${OTEL_ZIPKIN_URL}:9411" \
|
||||
--set 'meshConfig.defaultConfig.tracing.sampling=100' \
|
||||
--set 'meshConfig.enablePrometheusMerge=true' \
|
||||
--set 'meshConfig.extensionProviders[0].name=zipkin' \
|
||||
--set "meshConfig.extensionProviders[0].zipkin.service=${OTEL_ZIPKIN_URL}.svc.cluster.local" \
|
||||
--set 'meshConfig.extensionProviders[0].zipkin.port=9411' \
|
||||
--reuse-values \
|
||||
--wait --timeout=5m 2>/dev/null || log_warn "Falha ao configurar istiod (helm upgrade)"
|
||||
log_success "istiod configurado"
|
||||
|
||||
# Criar Telemetry API resource
|
||||
log_info "Criando Telemetry resource..."
|
||||
kubectl apply -f - <<'TELEMETRY_EOF'
|
||||
apiVersion: telemetry.istio.io/v1
|
||||
kind: Telemetry
|
||||
metadata:
|
||||
name: mesh-default
|
||||
namespace: istio-system
|
||||
spec:
|
||||
tracing:
|
||||
- providers:
|
||||
- name: zipkin
|
||||
randomSamplingPercentage: 100
|
||||
TELEMETRY_EOF
|
||||
log_success "Telemetry resource criado"
|
||||
|
||||
# Atualizar Kiali para apontar tracing ao Grafana/Tempo
|
||||
log_info "Configurando Kiali para usar Tempo via Grafana..."
|
||||
VICTORIA_METRICS_URL="http://vmsingle-monitoring-victoria-metrics-k8s-stack.monitoring:8429"
|
||||
GRAFANA_HOST_INTERNAL="${GRAFANA_HOST:-grafana.${DOMAIN}}"
|
||||
kubectl patch configmap kiali -n istio-system --type merge -p "{
|
||||
\"data\": {
|
||||
\"config.yaml\": \"auth:\\n strategy: anonymous\\nlogin_token:\\n signing_key: kiali-signing-key-1234\\nserver:\\n web_root: /kiali\\nexternal_services:\\n prometheus:\\n url: ${VICTORIA_METRICS_URL}\\n tracing:\\n enabled: true\\n provider: tempo\\n internal_url: http://tempo.monitoring:3200\\n use_grpc: true\\n grafana:\\n enabled: false\\n\"
|
||||
}
|
||||
}" 2>/dev/null || true
|
||||
kubectl rollout restart deployment/kiali -n istio-system 2>/dev/null || true
|
||||
log_success "Kiali configurado com Tempo"
|
||||
|
||||
log_info "Reinicie os pods com sidecar para ativar tracing:"
|
||||
log_info " kubectl rollout restart deployment -n <namespace>"
|
||||
else
|
||||
log_info "Istio nao detectado — tracing apenas via OTel SDK (demo app)"
|
||||
fi
|
||||
|
||||
# =============================================================================
|
||||
# APLICAR ALERTAS
|
||||
# =============================================================================
|
||||
|
||||
Reference in New Issue
Block a user