Arquitetura, identidade entre workloads, roteamento, resiliência e observabilidade do tráfego east-west
Edição aprofundada - material de estudo e consulta profissional
Por João Ricardo Dutra••Material integral
Service mesh: uma camada de comunicação entre workloads
Figura de abertura - O service mesh introduz uma camada operacional uniforme entre os serviços.
O plano de dados aplica controles de forma transparente ao tráfego .
Edição aprofundada - material de estudo e consulta profissional
Apresentação do capítulo
Nos capítulos anteriores, o foi estudado como ponto controlado de exposição, autenticação, políticas e observabilidade do tráfego que entra ou sai de um domínio. Em arquiteturas de microsserviços, entretanto, grande parte da comunicação ocorre dentro do ambiente, entre workloads que mudam de endereço, escalam horizontalmente e dependem de múltiplos serviços. Aplicar manualmente , , métricas, autorização e balanceamento em cada aplicação gera duplicação, inconsistência e alto custo de manutenção.
Um service mesh cria uma camada de infraestrutura para tratar esse tráfego . A ideia central é separar a lógica de negócio das funções de comunicação. ou componentes equivalentes interceptam conexões, aplicam políticas e produzem telemetria. Um plano de controle observa o ambiente e distribui configuração aos componentes do plano de dados. Dessa forma, segurança e comportamento de rede podem ser administrados de maneira relativamente uniforme sem incorporar uma biblioteca específica em cada linguagem.
Essa abstração não elimina a rede nem resolve automaticamente todos os problemas distribuídos. Pelo contrário: adiciona componentes, certificados, regras de roteamento e novas dependências. Uma configuração incorreta de pode multiplicar carga; uma política de autorização pode interromper tráfego legítimo; um pode mascarar a origem de latência; e uma atualização mal coordenada do plano de controle pode produzir divergência de configuração. A adoção precisa ser orientada por problemas reais e acompanhada de capacidade operacional.
Este capítulo aprofunda os conceitos de service mesh e compara três peças importantes do ecossistema. Istio oferece um plano de controle amplo e dois modelos de plano de dados: e ambient. Linkerd enfatiza simplicidade operacional e utiliza um microproxy próprio escrito em Rust. é um de alto desempenho usado como por Istio e por diversas plataformas, podendo atuar também em e independentes.
Como estudar este capítulo
Para cada recurso do mesh, identifique onde a decisão é declarada, qual componente distribui a configuração, onde ela é executada no caminho do tráfego e quais evidências comprovam o comportamento. Essa sequência reduz diagnósticos baseados apenas em manifests ou .
Objetivos de aprendizagem
Explicar o problema que um service mesh procura resolver e seus custos arquiteturais.
Distinguir tráfego e , além das fronteiras entre e mesh.
Descrever plano de controle, plano de dados, , e .
Compreender entre workloads, identidade de serviço e autorização baseada em principal.
Aplicar traffic splitting, , , circuit breaking e fault injection com senso crítico.
Interpretar a arquitetura do Istio em mode e .
Interpretar a arquitetura do Linkerd, seus microproxies e componentes de identidade e discovery.
Explicar listeners, filtros, routes, , e no .
Relacionar service mesh a , , multi- e observabilidade.
Diagnosticar falhas de injeção, , protocolo, rota, policy e capacidade.
Estrutura do capítulo
29.1 O problema da comunicação entre serviços; 29.2 O que é service mesh; 29.3 x ; 29.4 e ; 29.5 Interceptação de tráfego; 29.6 Identidade e ; 29.7 Autorização; 29.8 Traffic management; 29.9 Resiliência; 29.10 Observabilidade; 29.11 Istio; 29.12 mode; 29.13 ; 29.14 Linkerd; 29.15 ; 29.16 ; 29.17 e ; 29.18 Multi- ; 29.19 Egress; 29.20 Performance; 29.21 Segurança; 29.22 Operação e upgrades; 29.23 ; 29.24 Estudos de caso e laboratórios; resumo, checklist, exercícios, glossário e referências.
29.1 O problema da comunicação entre serviços
Uma aplicação monolítica executa chamadas internas dentro do mesmo processo. Em uma arquitetura distribuída, a chamada vira comunicação de rede e passa a depender de , , balanceamento, , , filas, e observabilidade. A semântica de uma função local não corresponde à semântica de uma chamada remota: a resposta pode atrasar, o pode ter sido processado mesmo que o cliente receba e o destino pode mudar durante a execução.
Quando cada equipe implementa essas preocupações em bibliotecas próprias, surgem versões divergentes, configurações incompatíveis e dificuldade de governança. Um serviço Java pode usar uma política de diferente de um serviço Go; um workload legado pode não emitir métricas; outro pode manter certificados estáticos por anos. O mesh procura deslocar uma parte dessas responsabilidades para a infraestrutura, oferecendo comportamento uniforme ao redor das aplicações.
O benefício é maior quando há muitos serviços, múltiplas linguagens, alto volume de mudanças e requisitos fortes de identidade e observabilidade. Em ambientes pequenos, a sobrecarga de instalar, operar e atualizar um mesh pode superar o ganho. A decisão deve considerar complexidade real, maturidade do time, criticidade do tráfego e capacidade de .
29.2 O que é service mesh
Service mesh é uma camada dedicada à comunicação entre serviços. Ela não é um único protocolo e não substitui Kubernetes, ou a lógica de negócio. Em sua forma mais comum, consiste em um plano de dados distribuído e um plano de controle. O plano de dados participa diretamente das conexões; o plano de controle calcula e distribui estado, políticas e identidade.
O mesh pode fornecer descoberta de serviços, balanceamento, , autorização, , , circuit breaking, divisão de tráfego, telemetria e integração com . Nem toda implementação oferece todos os recursos, e nem todo recurso deve ser ativado de forma indiscriminada. Por exemplo, automáticos são úteis para falhas transitórias, mas perigosos em operações não idempotentes.
A transparência é uma propriedade operacional, não uma ausência de efeitos. A aplicação pode não conhecer o , mas sofre os , resets, cabeçalhos, latência e políticas aplicados por ele. Por isso, arquitetura, SRE e desenvolvimento precisam compartilhar um modelo mental do caminho real da requisição.
Figura 1 - O plano de controle distribui decisões; o plano de dados aplica essas decisões no tráfego.
Tráfego cruza a borda do ambiente: consumidor externo para , ingress ou aplicação. Tráfego ocorre entre serviços dentro do ambiente ou entre domínios internos. O concentra exposição, produtos, consumidores, autenticação de clientes, quotas e transformação na borda. O service mesh concentra comunicação entre workloads, identidade de serviço, telemetria e política distribuída.
As fronteiras podem se sobrepor. Istio e também podem implementar ingress e egress . Um pode estar dentro do mesh e receber como qualquer workload. O erro arquitetural é presumir que uma tecnologia substitui automaticamente a outra. A pergunta correta é qual plano de governança, qual público e qual tipo de contrato cada componente controla.
Em uma plataforma bancária, por exemplo, o ou Axway pode autenticar o aplicativo e aplicar quotas no tráfego externo, enquanto o mesh autentica o como workload e controla quais serviços internos podem ser chamados. Identidade do usuário e identidade do workload são contextos distintos e podem precisar ser propagados simultaneamente.
Tabela 1 - Gateway e mesh podem coexistir com responsabilidades complementares.
Componente
Foco principal
Exemplos de responsabilidade
API Gateway
Exposição e governança de APIs.
Produtos, consumidores, OAuth, quotas, transformação e portal.
Ingress Gateway
Entrada de tráfego no cluster.
TLS, host, path e roteamento inicial.
Service Mesh
Comunicação east-west.
mTLS, policy de workload, retries, telemetry e traffic split.
Egress Gateway
Saída controlada.
Política, auditoria e origem estável para destinos externos.
O plano de dados precisa executar decisões com baixa latência e alta disponibilidade. Ele intercepta conexões, reconhece protocolo, seleciona destinos, estabelece , aplica filtros e exporta métricas. Como participa de cada requisição, falhas de CPU, memória, configuração ou atualização no afetam diretamente o tráfego.
O plano de controle observa serviços, , identidades e recursos declarativos. A partir disso, produz configuração para os . Em Istio, o consolida discovery, configuração e emissão de identidade. Em Linkerd, serviços como destination e identity cumprem papéis específicos. No ecossistema , control planes usam para publicar listeners, routes, , e secrets.
A separação reduz dependência do plano de controle durante cada . normalmente continuam usando a última configuração válida se o ficar temporariamente indisponível. Entretanto, mudanças de , certificados ou políticas deixam de propagar. Assim, saúde do plano de controle e convergência do precisam ser monitoradas separadamente.
29.5 Interceptação de tráfego: , CNI e dataplanes por nó
No modelo , cada pod recebe um adicional. Regras de iptables ou eBPF redirecionam tráfego de entrada e saída para esse . O benefício é isolamento por workload e capacidade L7 próxima da aplicação. O custo inclui CPU e memória por pod, aumento do tempo de inicialização, necessidade de injeção e coordenação do ciclo de vida entre aplicação e .
Um plugin CNI pode instalar regras de redirecionamento fora do init , reduzindo privilégios no pod. Ainda assim, o operador precisa conhecer portas excluídas, probes, tráfego do próprio e condições em que uma conexão contorna o mesh. Marcar um namespace como injetado não prova que todos os pods atuais receberam ; pods existentes precisam ser recriados.
No modelo ambient do Istio, um por nó fornece conectividade segura e políticas L4. Workloads que precisam de recursos L7 podem usar waypoint baseados em . Isso reduz a necessidade de um em cada pod, mas introduz outra topologia operacional e exige compreender quais controles são aplicados no e quais dependem do waypoint.
Figura 2 - O Istio oferece por pod ou um plano de dados ambient dividido em L4 e L7.
29.6 Identidade de workload e automático
A segurança de um mesh começa pela identidade do workload. Em vez de confiar apenas no endereço , o apresenta um certificado ligado a uma identidade do ambiente, frequentemente derivada de namespace e ServiceAccount. O peer valida a cadeia, o nome esperado e as políticas associadas. Assim, a autorização pode continuar válida mesmo quando o endereço do pod muda.
O fornece confidencialidade, integridade e autenticação mútua entre . Ele não prova, por si só, qual usuário final iniciou a operação. Para preservar contexto de negócio, o serviço pode continuar validando , ou outros elementos de identidade. O mesh protege a comunicação e identifica o workload; a aplicação decide o que aquele usuário ou processo pode fazer no domínio.
Operação de certificados exige atenção a trust anchors, issuers, duração, renovação e relógio. Linkerd, por exemplo, vincula certificados à ServiceAccount e usa certificados de curta duração nos . Istio pode emitir identidades usando sua ou integrar-se a uma externa. Em multi- , a estratégia de confiança determina quais identidades são reconhecidas entre ambientes.
não é autorização completa
Uma conexão autenticada informa quem é o workload remoto. Ainda é necessário declarar quais identidades podem acessar qual serviço, porta, método ou caminho. Sem policy de autorização, criptografia pode proteger tráfego indevido.
29.7 Autorização de serviço e política L4/L7
Políticas L4 avaliam propriedades como identidade da origem, namespace, porta e protocolo de transporte. Elas são eficientes e funcionam mesmo quando o não interpreta . Políticas L7 podem considerar método, path, host, e . Esse nível oferece granularidade maior, mas depende de reconhecimento de protocolo e de um componente capaz de executar filtros de aplicação.
No Istio ambient, autorização L4 pode ser aplicada no , enquanto regras L7 dependem de waypoint. No modo , o do pod executa os dois níveis. Em Linkerd, o inbound aplica políticas de autorização, e recursos de policy podem definir servidores, rotas e identidades permitidas. O desenho deve começar com default deny para superfícies sensíveis e exceções explícitas.
Uma política incorreta pode criar indisponibilidade total. Por isso, implantação gradual, modo de auditoria quando disponível, testes de integração e métricas de negação são indispensáveis. A regra deve ser revisada junto ao contrato da aplicação: permitir em um path não equivale a autorizar qualquer operação de negócio acessível por esse path.
29.8 Traffic management e progressive delivery
O mesh pode dividir tráfego entre versões, aplicar canary, espelhamento, afinidade, roteamento por e seleção baseada em identidade. Essas capacidades ajudam a realizar progressive delivery sem incorporar lógica de roteamento em cada aplicação. A regra declarativa é convertida pelo em configuração distribuída aos .
Traffic splitting precisa considerar unidade de balanceamento e persistência. Uma regra 90/10 normalmente distribui , não usuários nem transações de negócio. Em conexões longas, /2 ou , poucas conexões podem concentrar muito tráfego. Métricas por e por conexão devem ser analisadas antes de concluir que a divisão atingiu a proporção planejada.
Além disso, roteamento por cabeçalho pode criar dependência de metadados que atravessam fronteiras de confiança. Cabeçalhos usados para canary ou tenant devem ser produzidos por componentes confiáveis ou validados. Permitir que qualquer cliente escolha uma versão privilegiada pode contornar controles de rollout.
Figura 3 - A intenção declarativa só produz o resultado esperado quando o possui e métricas corretas.
define quanto tempo o chamador aceita esperar. cria uma nova tentativa após uma falha considerada transitória. Circuit breaking limita conexões, pendentes ou erros para impedir saturação. Fault injection introduz atraso ou falha controlada para testar resiliência. Esses mecanismos são poderosos, mas interagem de maneira não linear.
Um configurado no cliente, no e no pode multiplicar tentativas. Três camadas com duas tentativas adicionais podem produzir até vinte e sete execuções em uma cadeia de três serviços. Por isso, budgets de , idempotência, deadlines propagados e observabilidade por tentativa são essenciais. O ponto de deve ser escolhido conscientemente.
Circuit breakers do protegem recursos de transporte, mas não substituem limites de negócio nem mecanismos de fila. Fault injection deve ser restrita a ambientes, usuários ou percentuais controlados. Uma regra ampla em produção pode simular uma falha real e dificultar a distinção entre experimento e incidente.
Tabela 2 - Resiliência exige limites coordenados entre aplicação, gateway e mesh.
Mecanismo
Objetivo
Risco de configuração incorreta
Timeout
Limitar espera e liberar recursos.
Prazo curto interrompe operações válidas; prazo longo amplifica filas.
Retry
Recuperar falhas transitórias.
Tempestade de tentativas e duplicação de operações.
Circuit breaking
Conter saturação e falha em cascata.
Rejeições prematuras ou estado divergente entre proxies.
Fault injection
Validar resiliência.
Impacto não intencional em tráfego real.
29.10 Observabilidade: métricas, e
Como o observa tráfego de forma uniforme, o mesh consegue produzir métricas de rate, error rate, latency, bytes, conexões e status sem modificar cada aplicação. Essa uniformidade é valiosa em ambientes poliglotas. Entretanto, o enxerga o protocolo e o transporte, não necessariamente a semântica completa do negócio.
Métricas precisam distinguir reporter de origem e destino, workload, namespace, rota e resposta. Cardinalidade excessiva pode tornar o sistema de métricas caro ou instável. Access são úteis para investigação detalhada, mas podem conter , IDs pessoais e sensíveis se os formatos não forem controlados.
distribuído normalmente depende de propagação de contexto pela aplicação. O pode gerar spans e medir a comunicação, mas não consegue inferir sozinho a relação entre chamadas assíncronas ou tarefas internas. O desenho ideal combina spans da aplicação com spans da infraestrutura, usando IDs de correlação consistentes.
29.11 Istio: arquitetura e componentes
O Istio separa logicamente e . No modo , são injetados nos pods e mediam tráfego. O observa recursos do Kubernetes e configurações do mesh, executa service discovery, converte regras em configuração e participa da emissão de identidades para os .
Recursos como VirtualService e DestinationRule foram historicamente usados para roteamento e políticas de destino. A adoção de Kubernetes aumenta a padronização de recursos de entrada e mesh. Independentemente da declarativa, o operador precisa verificar a configuração efetivamente recebida pelo : , routes, listeners e .
Istio oferece ingress e egress , integração com telemetria, autorização, extensão por filtros e Wasm e modelos de implantação multi- . Essa amplitude traz flexibilidade e também uma superfície operacional grande. Profiles, revisões do e canary upgrade ajudam a reduzir risco de atualização.
29.12 Istio mode
No mode, cada workload meshed recebe um . O outbound resolve destinos, aplica rotas e políticas e abre conexão com o inbound do destino. O inbound valida identidade e aplica autorização. Como cada pod possui dedicado, recursos L7 e extensões podem ser aplicados de forma granular.
O custo operacional aparece em memória total, CPU, tempo de startup, quantidade de conexões com o e coordenação de shutdown. A aplicação pode iniciar antes de o estar pronto ou encerrar antes de drenar conexões. Hooks de lifecycle, probes e configurações de holdApplicationUntilProxyStarts precisam ser avaliados conforme o ambiente.
Injeção automática depende de labels ou annotations e de um admission . Falhas no podem impedir criação de pods. Excluir portas incorretamente pode contornar ou gerar loops. Por isso, uma verificação de readiness do mesh deve observar tanto o pod da aplicação quanto a presença e o estado do .
29.13 Istio : e waypoint
O busca reduzir a necessidade de por workload. Um executado por nó captura tráfego dos workloads inscritos no mesh, fornece , identidade, telemetria e policy L4. Quando uma aplicação precisa de roteamento, autorização ou observabilidade L7, um baseado em pode ser associado ao serviço ou à identidade relevante.
A divisão L4/L7 permite adotar segurança básica com menor custo por pod e adicionar recursos avançados apenas onde necessários. Contudo, muda: o caminho pode passar pelo de origem, waypoint e de destino. É necessário identificar qual componente deveria processar a policy e onde a conexão foi interrompida.
e ambient podem coexistir no mesmo mesh. Essa capacidade facilita migração gradual, mas exige testar fluxos entre modos, políticas equivalentes e comportamento de telemetria. Um workload não deve ser inscrito simultaneamente de forma ambígua nos dois modos.
29.14 Linkerd: arquitetura e princípios
O Linkerd também separa e . Seu usa um microproxy transparente escrito em Rust, desenhado especificamente para service mesh. O é injetado como , intercepta e reconhece , /2, e . O foco do projeto é oferecer recursos essenciais com operação relativamente simples e baixo consumo.
No , o destination service fornece discovery, identidade esperada do destino, policy e informações de rota. O identity service funciona como autoridade certificadora e emite certificados aos . O injector modifica pods marcados para injeção. Extensões como viz adicionam e componentes de observabilidade.
Em uma conexão meshed, o outbound realiza discovery, , e ; o inbound aplica autorização. O é automático entre pods meshed, com certificados vinculados à ServiceAccount e renovados pelo . O operador ainda precisa cuidar da rotação de trust anchor e issuer e da confiança entre .
Tabela 3 - A escolha depende de requisitos, maturidade e modelo operacional.
Aspecto
Istio
Linkerd
Data plane
Envoy sidecar ou ambient com ztunnel/waypoint.
Microproxy próprio em Rust como sidecar.
Control plane
istiod e componentes/gateways associados.
destination, identity, injector e extensões.
Escopo funcional
Amplo conjunto de L4/L7 e extensibilidade.
Ênfase em simplicidade e funções essenciais.
Adoção
Grande flexibilidade e maior superfície operacional.
Menor complexidade inicial, com trade-offs de recursos.
29.15 : , filtros e upstreams
é um de alto desempenho escrito em C++ e projetado para arquiteturas distribuídas. Ele pode atuar como , , edge ou universal. No Istio, executa grande parte das políticas L4 e L7. Outros control planes também o utilizam por meio das .
Um listener aceita conexões em um endereço e porta. Filter chains escolhem filtros de rede e transporte conforme propriedades da conexão, como . Para , o connection manager executa filtros, roteamento e observabilidade. Routes selecionam virtual hosts, e ações. representam grupos lógicos de upstreams, e são as instâncias reais.
mantém pools de conexão, realiza health checking, service discovery e . Recursos como outlier detection, circuit breaking, overload manager e draining são importantes em produção. A flexibilidade dos filtros é poderosa, mas extensões Lua ou Wasm precisam ser tratadas como código confiável e submetidas a governança.
Figura 4 - Listener, filtros, rota e formam o caminho lógico de uma requisição no .
é o conjunto de usado para configurar dinamicamente . LDS publica listeners, RDS publica rotas, CDS publica , EDS publica e SDS publica secrets. O Aggregated Discovery Service permite transportar múltiplos tipos sobre uma relação . O precisa manter versão, , /NACK e consistência entre recursos relacionados.
Configuração dinâmica evita reiniciar a cada mudança, mas cria um sistema distribuído de convergência. Um pode rejeitar uma configuração inválida e continuar usando a anterior. de NACK e status de sincronização devem ser monitorados. Declarar um recurso no Kubernetes não garante que todos os tenham aplicado a versão esperada.
Em , é útil comparar a intenção declarada, o estado calculado pelo e a configuração efetiva do . Ferramentas de Istio como -status e -config materializam essa abordagem. Em control planes próprios, administrativas do e config dumps cumprem papel semelhante.
29.17 e para service mesh
Kubernetes foi projetada como evolução das de ingress e , com separação explícita de papéis. A iniciativa estende seu uso a service mesh. Em vez de associar uma HTTPRoute apenas a um , uma rota de mesh pode ser associada diretamente a um Service e controlar tráfego .
A padronização reduz dependência de CRDs específicos e facilita portabilidade conceitual. Ainda assim, cada implementação possui nível de conformidade e recursos estendidos. O operador deve verificar quais campos pertencem ao canal Standard, quais são Experimental e quais comportamentos dependem do mesh utilizado.
não elimina a necessidade de compreender o . Ela padroniza a intenção declarativa. O resultado continua dependendo do controller, da tradução para configuração de e da convergência dos .
Um mesh multi- precisa resolver discovery, identidade, conectividade e política entre ambientes. podem compartilhar uma rede plana ou exigir para atravessar redes distintas. O desenho também precisa decidir se haverá um único , control planes primário-remoto ou control planes independentes com confiança federada.
Compartilhar trust anchor simplifica reconhecimento de identidades, mas amplia a fronteira de confiança. Trust domains distintos podem ser federados com regras explícitas. entre precisa considerar consistência de dados, latência, capacidade e locality-aware . Redirecionar tráfego sem preparar dependências pode apenas mover a falha.
Linkerd oferece componentes multicluster e requer planejamento de confiança entre . Istio suporta diversas topologias e . Em ambos, , ServiceExport/ServiceImport, rotas e health precisam ser observados em conjunto.
Figura 5 - Multi- adiciona identidade, discovery, conectividade e à equação.
Tráfego para bancos, SaaS e externas não deve ser ignorado pelo desenho do mesh. Um egress pode centralizar origem de rede, política, e auditoria. O benefício é maior quando destinos exigem allowlist de ou inspeção. O custo é criar um ponto adicional de capacidade e disponibilidade.
Service entries ou recursos equivalentes registram destinos externos no modelo do mesh. Isso permite aplicar routing e telemetria, mas não transforma um serviço externo em workload confiável. Certificados, e políticas de saída continuam sendo responsabilidade da arquitetura.
Bloquear qualquer destino desconhecido reduz exfiltração, mas pode interromper dependências não inventariadas. Uma adoção segura começa com observação, inventário e classificação, seguida de enforcement gradual.
29.20 Performance, capacidade e custo
O mesh adiciona processamento, conexões, criptografia e telemetria. A latência por pode ser pequena, mas uma cadeia longa acumula custo. CPU e memória dependem de taxa, tamanho de , protocolo, quantidade de rotas, métricas, access e extensões. Benchmarks genéricos não substituem testes com o perfil real da aplicação.
No model, o consumo se multiplica pelo número de pods. Em ambient, parte do custo é compartilhada por nó e por waypoint. Isso muda a unidade de capacity planning. também mantêm pools e ; limites inadequados podem causar OOM, de CPU ou filas internas.
O plano de controle precisa escalar com quantidade de e mudanças de configuração. Atualizações massivas de podem provocar picos de distribuição. Sharding, revisões e rollout controlado reduzem blast radius. Métricas de tempo de convergência e tamanho de config ajudam a identificar crescimento não sustentável.
29.21 Segurança e modelo de ameaça
O mesh melhora a segurança ao fornecer identidade e criptografia uniformes, mas também se torna infraestrutura crítica. Comprometer o pode permitir distribuir rotas ou policies maliciosas. Comprometer credenciais de pode afetar toda a confiança. administrativas, , secrets e service accounts exigem menor privilégio e segmentação.
processam tráfego não confiável e extensões configuráveis. Filtros customizados, Wasm e scripts devem ter cadeia de fornecimento, revisão e assinatura. Debug e config dumps podem revelar nomes internos, rotas, certificados ou . Eles não devem ser expostos indiscriminadamente.
Zero Trust no mesh significa verificar identidade, aplicar autorização explícita e manter telemetria, não apenas ativar . Políticas devem restringir movimento lateral e separar namespaces, ambientes e domínios. A segurança precisa incluir o tráfego que contorna o , como probes, portas excluídas e host networking.
29.22 Operação, upgrades e governança
Operar um mesh exige gestão de versão do , e CRDs. Atualizações devem respeitar matrizes de compatibilidade. Istio suporta revisões para executar control planes paralelos e migrar namespaces gradualmente. Linkerd oferece procedimentos de upgrade e verificações de saúde. independente pode usar hot restart ou draining conforme o modelo de implantação.
GitOps ajuda a auditar manifests, mas não substitui validação do estado runtime. Quality gates podem executar lint, dry-run, testes de policy e comparação de rotas. Recursos compartilhados precisam de ownership claro: plataforma mantém o mesh; equipes de domínio mantêm rotas e policies dentro de limites governados.
A remoção do mesh também deve ser planejada. Desinjetar , retirar CNI, remover CRDs e alterar políticas de rede fora de ordem pode interromper tráfego. Um exit plan saudável demonstra que a aplicação não depende acidentalmente de comportamento não documentado.
29.23 orientado pelo caminho real
O diagnóstico deve começar pela pergunta: qual caminho a conexão deveria percorrer? Identifique aplicação de origem, outbound ou , waypoint ou intermediário, inbound e aplicação de destino. Em seguida, verifique , , sincronização do , , policy, rota, , health e resposta da aplicação.
Erros 503 podem significar ausência de , , reset, conexão recusada ou policy. Falhas podem decorrer de , identidade esperada, certificado expirado ou tráfego em plaintext. Um pode estar no aplicativo, , ou . O texto do erro e o componente que o produziu são evidências essenciais.
Compare os dois lados. Se o de origem enviou mas o destino não registrou conexão, investigue rede e . Se o inbound aceitou mas a aplicação não recebeu, investigue porta e redirecionamento. Se a aplicação respondeu e o cliente recebeu reset, observe draining, e conexão de retorno.
Tabela 4 - O diagnóstico deve correlacionar intenção, control plane, proxy e aplicação.
Sintoma
Hipóteses
Evidências úteis
Pod sem sidecar
Label, webhook, namespace ou pod antigo.
Spec do pod, events e logs do injector.
503 no proxy
Sem endpoint, reset, circuit breaker ou cluster ausente.
Config dump, endpoints, flags de resposta e upstream logs.
mTLS falha
Trust, SAN, identity ou relógio.
Certificado, trust domain e logs de handshake.
Rota não aplicada
Resource inválido, NACK ou proxy desatualizado.
Status de sync, ACK/NACK e config efetiva.
Latência elevada
Retry, fila, CPU do proxy ou upstream lento.
Tracing por hop, retries e métricas de saturação.
Estudo de caso 1 - Um chama três microsserviços internos. Após ativar no mesh, a latência de cauda aumenta e o satura durante falhas parciais. A investigação mostra simultâneos no , no e no . A correção centraliza a política, propaga deadlines e limita o budget.
Estudo de caso 2 - Um namespace é migrado para Istio ambient. L4 funciona, mas uma policy por path não é aplicada. O time descobre que o serviço não possuía waypoint associado. A solução é implantar waypoint, revisar a policy L7 e validar o caminho com telemetria.
Estudo de caso 3 - Dois Linkerd precisam comunicar-se. A conexão falha após rotação de issuer. A análise separa trust anchor compartilhado, issuer de cada , certificados dos e componentes multicluster, identificando uma cadeia não atualizada no remoto.
Laboratórios sugeridos
1) Injete dois serviços em um mesh e valide e identidade. 2) Configure 90/10 entre duas versões e compare e conexões. 3) Aplique e somente em uma camada e observe . 4) Gere uma negação de policy e identifique o que respondeu. 5) Inspecione listeners, routes, e de um .
Resumo do capítulo
Service mesh transfere funções de comunicação para uma camada de infraestrutura, oferecendo identidade, , policy, routing e observabilidade ao tráfego . O modelo depende da separação entre , que calcula e distribui configuração, e , que participa das conexões.
Istio oferece mode com por pod e com L4 e waypoint L7. Linkerd utiliza microproxies próprios em Rust e um com discovery e identidade. fornece a base de , filtros, e configuração usada em diversas plataformas.
O mesh não substitui , segurança de aplicação ou boas práticas distribuídas. , e circuit breakers precisam ser coordenados. identifica workloads, mas não substitui autorização nem identidade do usuário. A observabilidade do precisa ser combinada com métricas e da aplicação.
Uma adoção bem-sucedida exige capacidade, governança, upgrades controlados e baseado no caminho real. O valor aparece quando a organização reduz inconsistência e melhora segurança e observabilidade sem esconder os efeitos da rede.
Próximo passo do curso
O próximo capítulo aprofunda microserviços e padrões de integração, conectando as capacidades de rede do mesh a decisões de decomposição, comunicação síncrona e assíncrona, consistência e resiliência de domínio.
Checklist de arquitetura e operação
O problema que justifica o mesh está documentado e mensurável.
, ingress, egress e mesh possuem responsabilidades delimitadas.
e têm e monitoração independentes.
Todos os workloads esperados estão realmente inscritos no mesh.
Trust anchors, issuers e rotação de certificados estão governados.
Policies L4 e L7 foram testadas com identidades reais e default deny controlado.
, e circuit breakers estão coordenados com aplicação e .
Traffic splitting foi validado por , conexão e impacto de negócio.
Métricas e evitam cardinalidade e dados sensíveis excessivos.
Upgrades usam canary, revisão ou rollout gradual com .
Configuração declarada é comparada com configuração efetiva dos .
O plano multi- considera confiança, rede, e consistência.
Existe procedimento para contornar ou remover o mesh em emergência.
Exercícios
Diferencie e e explique onde e mesh se encontram.
Descreva o fluxo de configuração do até o .
Compare mode e do Istio.
Explique a função de e waypoint.
Descreva como Linkerd emite identidade e aplica .
Explique listeners, filter chains, routes e no .
Proponha uma estratégia de que evite multiplicação entre camadas.
Defina uma policy de autorização baseada em identidade de workload.
Explique como / representa rotas de mesh.
Desenhe uma topologia multi- e identifique suas fronteiras de confiança.
Monte um roteiro de para erro 503 após alteração de rota.
Discuta quando não adotar um service mesh.
Glossário
Tabela 5 - Vocabulário essencial do capítulo.
Termo
Definição
Ambient mode
Modelo de data plane do Istio sem sidecar obrigatório em cada pod.
Control plane
Componente que calcula e distribui configuração, identidade e política.
Data plane
Proxies ou componentes que processam diretamente o tráfego.
East-west
Tráfego entre serviços ou domínios internos.
Envoy
Proxy L4/L7 de alto desempenho usado em meshes e gateways.
GAMMA
Iniciativa para uso do Kubernetes Gateway API em service mesh.
Istiod
Componente central do control plane do Istio.
mTLS
TLS com autenticação mútua entre os peers.
North-south
Tráfego que cruza a borda do ambiente.
Sidecar
Proxy executado ao lado da aplicação no mesmo pod.
Service identity
Identidade criptográfica associada ao workload.
Traffic split
Distribuição ponderada de tráfego entre destinos.
Trust domain
Espaço administrativo de identidades confiáveis.
Waypoint proxy
Proxy L7 usado no Istio ambient para serviços ou workloads.
xDS
Família de APIs de configuração dinâmica do Envoy.
ztunnel
Proxy por nó do data plane ambient do Istio.
Istio Documentation. Architecture; or ambient?; Ambient ; Security e Traffic Management.
Kubernetes SIG Network. ; for Service Mesh; Initiative.
CNCF. Service Mesh Interface e materiais de arquitetura cloud native.
. 8446 - The Transport Layer Security Protocol Version 1.3.
OpenTelemetry Documentation. Distributed e semantic conventions para e .
Nota de atualização
Istio, Linkerd, e evoluem continuamente. Valide a documentação oficial da versão implantada antes de aplicar manifests, políticas, procedimentos de upgrade ou decisões de suporte a , ambient, e multi- .