Gerencie o tráfego de microsserviços usando o Istio – Blue</>Dev
Home » Engenharia de Software Tutoriais
Os desenvolvedores estão se afastando de grandes aplicativos monolíticos em favor de pequenos microsserviços focados, que aceleram a implementação e melhoram a resiliência. Para atender aos requisitos desse novo ecossistema, os desenvolvedores precisam criar uma rede de microsserviços implantados com balanceamento de carga, gerenciamento avançado de tráfego, rastreamento de solicitações e recursos de conectividade.
Se você passou algum tempo desenvolvendo aplicativos recentemente, sabe de uma coisa: aplicações monolíticas estão se tornando uma coisa do passado. Hoje, os aplicativos são voltados para descoberta, registro, roteamento e conectividade de serviços. Eles apresentam um novo conjunto de desafios para desenvolvedores e operadores de arquitetura de microsserviço.
Se sua malha de serviço está crescendo em tamanho e complexidade, você já sabe como pode ser difícil de entender e gerenciar. Nós nos deparamos com as mesmas perguntas: como habilitar esse crescente número de microsserviços para conectar, balancear a carga e fornecer roteamento baseado em função? Como podemos habilitar o tráfego de saída nesses microsserviços e testar implantações canárias? Não é mais suficiente criar um aplicativo independente, então, como podemos gerenciar a complexidade de um universo de microsserviço?
O Istio, uma colaboração conjunta entre a IBM, o Google e o Lyft, foi projetado para ajudá-lo a enfrentar esses desafios. O Istio é uma tecnologia aberta que fornece uma maneira de os desenvolvedores conectarem, gerenciarem e protegerem de forma transparente redes de diferentes microsserviços, independentemente de plataforma, origem ou fornecedor.
Nesta jornada do desenvolvedor, você aprenderá como o Istio fornece controles sofisticados de gerenciamento de tráfego, tanto para intercomunicação entre microsserviços quanto para tráfego de entrada e saída, por meio de uma arquitetura sidecar baseada em contêiner. Você também aprenderá como monitorar e coletar rastreamentos de solicitações para obter melhores informações sobre o fluxo de tráfego do seu aplicativo. Esta jornada do desenvolvedor é ideal para qualquer pessoa que trabalhe com a nova geração de aplicativos orientados por microsserviço.
1. O usuário implanta seu aplicativo configurado no Kubernetes. O aplicativo, "BookInfo", é composto por quatro microsserviços. Está escrito em linguagens diferentes para cada microsserviço: Python, Java, Ruby e Node.js. O microservice Reviews, escrito em Java, possui três versões diferentes.
2. Para permitir que o aplicativo use os recursos do Istio, o usuário injeta os envoys do Istio. Envoys são implantados como sidecars em cada microsserviço. Injetar um Envoy no microsserviço significa que o sidecar Envoy gerencia as chamadas de entrada e saída para o serviço. O usuário acessa o aplicativo em execução no Istio.
3. Com o aplicativo agora implantado, o usuário configura os recursos avançados do Istio para o aplicativo de exemplo. Para ativar o gerenciamento de fluxo de tráfego, o usuário modifica as rotas de serviço do aplicativo com base em pesos e cabeçalhos HTTP. Nesse estágio, as versões 1 e 3 do microsserviço da Review recebem 50% do tráfego; A versão 2 é ativada apenas para um usuário específico.
4. O usuário configura o controle de acesso para serviços. Para negar o tráfego da Review v3 a qualquer acesso ao microsserviço de Ratings, o usuário cria uma regra de Mixer.
5. Depois de concluir a implantação e a configuração do aplicativo, o usuário permite a telemetria e a coleta de registros. Para coletar métricas e registros, o usuário configura o Istio Mixer e instala os complementos necessários do Istio, Prometheus e Grafana. Para coletar extensões de rastreio, o usuário instala e configura o complemento Zipkin.
6. O usuário cria uma fonte de dados externa para Bookinfo; por exemplo, o banco de dados Compose for MySQL no IBM Cloud.
7. Três microservices no exemplo original do aplicativo BookInfo – Details, Ratings e Reviews – são modificados para usar o banco de dados MySQL. Para se conectar ao banco de dados MySQL, uma gem do MySQL Ruby é adicionada no microservice Details; Um módulo MySQL é adicionado no microsserviço Node de Ratings. Uma dependência mysql-connector-java é adicionada às versões 1, 2 e 3 do microservice Reviews.
8. O usuário implanta o aplicativo e ativa os proxies Envoy com o tráfego de saída. Os proxies do Envoy são implementados como sidecars ao lado de cada microsserviço. Isso significa que o sidecar Envoy gerenciará chamadas de entrada e saída para o serviço. Neste caso, como o Envoy suporta apenas o protocolo http/https, os proxies são configurados para não interceptar o tráfego para conexões MySQL de saída, fornecendo o intervalo IP para a implementação do MySQL. Quando o aplicativo está ativo e em execução, o usuário pode acessar o aplicativo usando as portas IP e Node.
Encontre as etapas detalhadas para este padrão no README: https://github.com/IBM/microservices-traffic-management-using-istio/blob/master/README.md.