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:
Azure Kubernetes Service