Sobre malhas de serviço

Uma malha de serviço é uma camada de infraestrutura em seu aplicativo que facilita a comunicação entre serviços. As malhas de serviço fornecem recursos como gerenciamento de tráfego, resiliência, política, segurança, identidade forte e observabilidade para suas cargas de trabalho. Seu aplicativo é dissociado desses recursos operacionais, enquanto a malha de serviço os move para fora da camada de aplicativo e para baixo para a camada de infraestrutura.

Cenários

Ao usar uma malha de serviço, você pode habilitar cenários como:

  • Criptografando todo o tráfego no cluster: habilite o TLS mútuo entre serviços especificados no cluster. Isso pode ser estendido para entrada e saída no perímetro da rede e fornece uma opção segura por padrão sem alterações necessárias para o código e a infraestrutura do aplicativo.

  • Distribuições canárias e em fases: especifique condições para que um subconjunto de tráfego seja roteado para um conjunto de novos serviços no cluster. No teste bem-sucedido de liberação canária, remova o roteamento condicional e aumente gradualmente a % de todo o tráfego para um novo serviço. Eventualmente, todo o tráfego será direcionado para o novo serviço.

  • Gerenciamento e manipulação de tráfego: crie uma política em um serviço que limite todo o tráfego para uma versão de um serviço de uma origem específica ou uma política que aplique uma estratégia de repetição a classes de falhas entre serviços especificados. Espelhe o tráfego em tempo real para novas versões de serviços durante uma migração ou para problemas de depuração. Injete falhas entre serviços em um ambiente de teste para testar a resiliência.

  • Observabilidade: obtenha informações sobre como seus serviços estão conectados e o tráfego que flui entre eles. Reúna métricas, logs e rastreamentos para todo o tráfego no cluster, incluindo entrada/saída. Adicione capacidades de rastreio distribuído às aplicações.

Critérios de seleção

Antes de selecionar uma malha de serviço, certifique-se de entender seus requisitos e raciocínios para instalar uma malha de serviço. Coloque as seguintes questões:

  • Um controlador de entrada é suficiente para minhas necessidades?: Às vezes, ter um recurso como teste A/B ou divisão de tráfego na entrada é suficiente para suportar o cenário necessário. Não adicione complexidade ao seu ambiente sem nenhuma vantagem.

  • Minhas cargas de trabalho e ambiente podem tolerar as despesas gerais adicionais?: Todos os componentes necessários para suportar a malha de serviço exigem recursos como CPU e memória. Todos os proxies e suas verificações de política associadas adicionam latência ao seu tráfego. Se você tiver cargas de trabalho muito sensíveis à latência ou não puder fornecer recursos extras para cobrir componentes de malha de serviço, reconsidere o uso de uma malha de serviço.

  • Isso está adicionando complexidade desnecessária?: Se você quiser instalar uma malha de serviço para usar um recurso que não é crítico para as equipes de negócios ou operacionais, considere se a complexidade adicional de instalação, manutenção e configuração vale a pena.

  • Isso pode ser adotado em uma abordagem incremental?: Algumas das malhas de serviço que fornecem muitos recursos podem ser adotadas em uma abordagem mais incremental. Instale apenas os componentes de que precisa para garantir o seu sucesso. Se, mais tarde, descobrir que são necessárias mais capacidades, explore-as mais tarde. Resista ao impulso de instalar tudo desde o início.

Próximos passos

O Serviço Kubernetes do Azure (AKS) oferece complementos oficialmente suportados para o Istio e o Open Service Mesh:

Há também malhas de serviço fornecidas por projetos de código aberto e terceiros que são comumente usadas com o AKS. Essas malhas de serviço não são cobertas pela política de suporte do AKS.

Para obter mais detalhes sobre o cenário de malha de serviço, consulte Cenário de malha de serviço da Camada 5.

Para obter mais detalhes sobre os esforços de padronização de malha de serviço, consulte: