Home  >  Plataformas

Istio: tudo sobre o projeto open source do Google para Kubernetes

Plataforma permite gerenciar o service mesh do cluster

Serdar Yegulalp | InfoWorld (EUA)

24/01/2019 às 10h31

Foto: Shutterstock

As arquiteturas de microsserviços resolvem alguns problemas, mas introduzem outros. Dividir aplicativos em serviços independentes simplifica o desenvolvimento, as atualizações e o dimensionamento. Ao mesmo tempo, ele oferece muito mais peças móveis para conectar e proteger. Gerenciar todos os serviços de rede - balanceamento de carga, gerenciamento de tráfego, autenticação e autorização etc. - pode se tornar estupendamente complexo.

Existe um termo coletivo para esse espaço em rede entre os serviços em seu cluster do Kubernetes: service mesh (malha de serviço). Um projeto do Google, o Istio, traz a possibilidade de gerenciar o service mesh do seu cluster antes que ele se transforme em um grunhido.

O que é um service mesh?

Com qualquer grupo de aplicativos em rede, há uma série de comportamentos comuns que tendem a surgir em torno deles. Balanceamento de carga, por exemplo: há alguns casos em que um grupo de serviços em rede não precisa disso. Da mesma forma, poder testar A/B diferentes combinações de serviços ou configurar autenticação de ponta a ponta em cadeias de serviços. Esses comportamentos são coletivamente referidos como uma malha de serviço.

O gerenciamento do service mesh não deve ser deixado para os serviços em si. Nenhum deles está em uma boa posição para fazer algo de cima para baixo, e realmente não deveria ser o trabalho deles de qualquer maneira. É melhor ter um sistema separado que fica entre os serviços e a rede com a qual eles conversam. Este sistema forneceria duas funções principais:

1. Evite que os próprios serviços tenham que lidar com os detalhes básicos do gerenciamento do tráfego de rede - balanceamento de carga, roteamento, novas tentativas etc.

2. Forneça uma camada de abstração para os administradores, facilitando a tomada de decisões de alto nível sobre o tráfego de rede no cluster - controles de políticas, métricas e registros, descoberta de serviços, comunicações entre serviços seguras via TLS e assim por diante.

Componentes de malha de serviço do Istio

O Istio funciona como uma malha de serviço, fornecendo duas partes básicas de arquitetura para seu cluster, um plano de dados e um plano de controle.

O plano de dados manipula o tráfego de rede entre os serviços na malha. Todo esse tráfego é interceptado e redirecionado por um sistema proxy de rede. No caso do Istio, o proxy é fornecido por um projeto de código aberto chamado Envoy. Um segundo componente no plano de dados, o Mixer, reúne a telemetria e as estatísticas do Envoy e o fluxo do tráfego de serviço a serviço.

O plano de controle, o núcleo do Istio, gerencia e protege o plano de dados. Ele configura os proxies Envoy e os Mixers que impõem as políticas de rede para os serviços, como quem consegue falar com quem e quando. O plano de controle também fornece uma camada de abstração programática para o plano de dados e todos os seus comportamentos.

Três outros serviços do Istio completam o mix:

Istio Pilot

O Istio Pilot pega as regras de comportamento de tráfego fornecidas pelo plano de controle e as converte em configurações aplicadas pelo Envoy, com base em como essas coisas são gerenciadas localmente. O piloto permitirá que o Istio trabalhe com sistemas de orquestração diferentes, além do Kubernetes, mas se comportem consistentemente entre eles.

Cidadela Istio

Citadel controla autenticação e gerenciamento de identidade entre serviços.

Istio Galley

O Gallery pega configurações especificadas pelo usuário para o Istio e as converte em configurações válidas para os outros componentes do plano de controle. Esse é outro elemento que permite ao Istio usar sistemas de orquestração diferentes de maneira transparente.

Capacidades do Istio

O primeiro e mais valioso benefício que o Istio oferece é a abstração - uma maneira de lidar com as complexidades de uma malha de serviços à distância. Você pode fazer alterações na malha programaticamente, comandando o Istio. Os serviços conectados à malha não precisam ser reprogramados internamente para seguir novas políticas ou cotas de rede, e os espaços de rede entre eles também não precisam ser tocados diretamente.

Além disso, o Istio permite que você execute alterações não destrutivas ou provisórias na configuração de rede do cluster. Se você quiser distribuir um novo layout de rede, no todo ou em parte, ou A/B testar a configuração atual em relação a uma nova, o Istio permite fazer isso de uma maneira descendente. Você também pode reverter essas alterações se elas se tornarem insalubres.

Uma terceira vantagem é a observabilidade. O Istio fornece estatísticas detalhadas e relatórios sobre o que está acontecendo entre os contêineres e os nós do cluster. Se houver um problema imprevisto, se algo não estiver em conformidade com a política ou se as alterações feitas forem contraproducentes, você poderá saber mais sobre isso em breve.

O Istio também fornece maneiras de cumprir padrões comuns que você vê em uma malha de serviço. Um exemplo é o padrão do circuit-braker, uma forma de evitar que um serviço seja bombardeado com solicitações se o back-end relatar problemas e não puder atender às solicitações de maneira oportuna. O Istio fornece um padrão de disjuntor como parte de sua biblioteca padrão de imposição de políticas.

Finalmente, enquanto o Istio trabalha mais direta e profundamente com o Kubernetes, ele é projetado para ser independente de plataforma. O Istio se conecta aos mesmos padrões abertos que o próprio Kubernetes confia. Ele também pode trabalhar de maneira independente em sistemas individuais ou em outros sistemas de orquestração, como Mesos e Nomad.

Como começar com o Istio

Se você já tem experiência com o Kubernetes, uma boa maneira de aprender Istio é pegar um cluster Kubernetes - não um já em produção! - e instalar o Istio nele por meio de um gráfico de Helm. Em seguida, você pode implantar um aplicativo de amostra que demonstra recursos comuns do Istio, como gerenciamento inteligente de tráfego e telemetria. Isso deve fornecer a você alguma experiência no nível do solo com o Istio antes de implantá-lo para serviço de malha em seu cluster de aplicativos.

A Red Hat, que investiu no Istio como parte do projeto OpenShift, da Kubernetes, oferece tutoriais que o guiarão pelos cenários comuns de implantação e gerenciamento do Istio.