Service Mesh (Istio, Linkerd e Envoy)
Voltar para Learn
FAACCapítulo 29

Fundamentos e Arquitetura de APIs Corporativas

Service Mesh (Istio, Linkerd e Envoy)

Arquitetura, identidade entre workloads, roteamento, resiliência e observabilidade do tráfego east-west

Edição aprofundada - material de estudo e consulta profissional

Plano de controle coordenando uma malha segura de workloads, proxies e múltiplos clusters

Service mesh: uma camada de comunicação entre workloads

Plano de controle distribuindo identidade, rotas e políticas para proxies entre serviços
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.

Separação entre plano de controle e plano de dados do service mesh
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.
ComponenteFoco principalExemplos de responsabilidade
API GatewayExposição e governança de APIs.Produtos, consumidores, OAuth, quotas, transformação e portal.
Ingress GatewayEntrada de tráfego no cluster.TLS, host, path e roteamento inicial.
Service MeshComunicação east-west.mTLS, policy de workload, retries, telemetry e traffic split.
Egress GatewaySaí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.

Modelos sidecar e ambient do plano de dados do Istio
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.

Traffic management transformando regra declarativa em divisão ponderada
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.
MecanismoObjetivoRisco de configuração incorreta
TimeoutLimitar espera e liberar recursos.Prazo curto interrompe operações válidas; prazo longo amplifica filas.
RetryRecuperar falhas transitórias.Tempestade de tentativas e duplicação de operações.
Circuit breakingConter saturação e falha em cascata.Rejeições prematuras ou estado divergente entre proxies.
Fault injectionValidar 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.
AspectoIstioLinkerd
Data planeEnvoy sidecar ou ambient com ztunnel/waypoint.Microproxy próprio em Rust como sidecar.
Control planeistiod e componentes/gateways associados.destination, identity, injector e extensões.
Escopo funcionalAmplo conjunto de L4/L7 e extensibilidade.Ênfase em simplicidade e funções essenciais.
AdoçãoGrande 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.

Listener, filtros, rota e cluster no modelo interno do Envoy
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 .

Exemplo conceitual de rota de mesh com /

apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: pedidos-canary
spec:
  parentRefs:
  - group: ""
    kind: Service
    name: pedidos
  rules:
  - backendRefs:
    - name: pedidos-v1
      port: 8080
      weight: 90
    - name: pedidos-v2
      port: 8080
      weight: 10

29.18 Multi- e múltiplas redes

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.

Service mesh conectando serviços e gateways em múltiplos clusters
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.
SintomaHipótesesEvidências úteis
Pod sem sidecarLabel, webhook, namespace ou pod antigo.Spec do pod, events e logs do injector.
503 no proxySem endpoint, reset, circuit breaker ou cluster ausente.Config dump, endpoints, flags de resposta e upstream logs.
mTLS falhaTrust, SAN, identity ou relógio.Certificado, trust domain e logs de handshake.
Rota não aplicadaResource inválido, NACK ou proxy desatualizado.Status de sync, ACK/NACK e config efetiva.
Latência elevadaRetry, 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.
TermoDefinição
Ambient modeModelo de data plane do Istio sem sidecar obrigatório em cada pod.
Control planeComponente que calcula e distribui configuração, identidade e política.
Data planeProxies ou componentes que processam diretamente o tráfego.
East-westTráfego entre serviços ou domínios internos.
EnvoyProxy L4/L7 de alto desempenho usado em meshes e gateways.
GAMMAIniciativa para uso do Kubernetes Gateway API em service mesh.
IstiodComponente central do control plane do Istio.
mTLSTLS com autenticação mútua entre os peers.
North-southTráfego que cruza a borda do ambiente.
SidecarProxy executado ao lado da aplicação no mesmo pod.
Service identityIdentidade criptográfica associada ao workload.
Traffic splitDistribuição ponderada de tráfego entre destinos.
Trust domainEspaço administrativo de identidades confiáveis.
Waypoint proxyProxy L7 usado no Istio ambient para serviços ou workloads.
xDSFamília de APIs de configuração dinâmica do Envoy.
ztunnelProxy por nó do data plane ambient do Istio.
  • Istio Documentation. Architecture; or ambient?; Ambient ; Security e Traffic Management.
  • Linkerd Documentation. Architecture; Automatic ; Authorization Policy; Multi- communication.
  • Documentation. Architecture Overview; Listeners; routing; Manager; ; Overload Manager.
  • 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- .