Sobre as 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 funcionalidades, como gerenciamento de tráfego, resiliência, política, segurança, identidade forte e observabilidade para suas cargas de trabalho. Seu aplicativo será dissociado dessas funcionalidades operacionais enquanto a malha de serviço moverá essas funcionalidades para fora da camada de aplicativo e para a camada de infraestrutura.
Cenários
Ao usar uma malha de serviço, você poderá habilitar cenários como:
Criptografar todo o tráfego no cluster: habilite um TLS mútuo entre os serviços especificados no cluster. Isso pode ser estendido para entrada e saída no perímetro de rede e oferece uma opção segura por padrão sem alterações necessárias no código do aplicativo e na infraestrutura.
Distribuições em fases e do tipo canário: especifique as condições a fim de rotear um subconjunto de tráfego para um conjunto de novos serviços no cluster. No teste bem-sucedido da versão do canário, remova o roteamento condicional e aumente gradualmente a porcentagem de todo o tráfego para um novo serviço. Em algum momento 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 a uma versão de um serviço de uma origem específica ou uma política que aplica uma estratégia de repetição a classes de falhas entre os serviços especificados. Espelhe o tráfego dinâmico para obter novas versões de serviços durante a migração ou para depurar problemas. Injete falhas entre serviços em um ambiente de teste para testar a resiliência.
Observabilidade: obtenha insights sobre de que modo os serviços estão conectados e o tráfego que flui entre eles. Reúna métricas, logs e rastreamentos de todo o tráfego no cluster, incluindo entrada/saída. Adicione habilidades de rastreamento distribuído aos aplicativos.
Critérios de seleção
Antes de selecionar a malha de serviço, certifique-se de que você entendeu os requisitos e os motivos para executar sua instalação. Faça as seguintes perguntas:
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 dar suporte ao cenário necessário. Não adicione complexidade ao seu ambiente sem que haja vantagens.
Minhas cargas de trabalho e ambiente podem tolerar as sobrecargas adicionais?: todos os componentes necessários para dar suporte à malha de serviço exigem recursos como CPU e memória. Todos os proxies e as respectivas verificações de política associadas adicionam latência ao tráfego. Se você tiver cargas de trabalho muito sensíveis à latência ou não puder fornecer recursos extras para proteger os componentes da 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 uma funcionalidade que não seja crítica para as equipes comerciais ou operacionais, analise 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 muitas funcionalidades podem ser adotadas em uma abordagem mais incremental. Instale somente os componentes necessários para garantir seu êxito. Se, mais tarde, você descobrir que mais funcionalidades são necessárias, explore-as posteriormente. Resista ao impulso de instalar tudo desde o início.
Próximas etapas
O Serviço de Kubernetes do Azure (AKS) oferece complementos com suporte oficial para Istio e Open Service Mesh:
Também há malhas de serviço fornecidas por projetos de código aberto e terceiros que são comumente usados com o AKS. Essas malhas de serviço não são protegidas pela política de suporte AKS.
Para saber mais sobre o cenário da malha de serviço, confira Cenário da malha de serviços da camada 5.
Para obter mais detalhes sobre os esforços de padronização da malha de serviço, confira:
Azure Kubernetes Service