Istio — Parte 2 — Regras de roteamento: Dizendo a requisição para onde ir

Recursos oferecido pelo Kubernets, OpenShift e Istio

Pra você que está chegando agora aqui, deixe-me exclarecer que esta série de textos sobre “Service Mesh” é basicamente uma tradução, com adaptações e acrecimo de informações, que escrevo como meio de fixar o conhecimento, treinar meu inglês e de quebra compartilhar conhecimento com todos. Sinta-se a vontade de colaborar comentando e até corrigindo o texto que vem do original produzido pela RedHat :)

OpenShift e o Kubernets fazem um ótimo trabalho ao garantir que as chamadas para os seus microserviços sejam roteadas para os Pods corretos. Afinal, é uma das razões do Kubernets existir: Rotear e realizar balanceamento de carga. E se, você precisar customizar uma rota? Se você quer executar duas versões da mesma aplicação para um time? Como Istio ajuda a criar regras de roteamento para ajudar neste tipo de situação?

Mas oque é rotear? Em uma super simplificação podemos dizer que este termo é utilizado sempre que se deseja receber algo, e encaminhar para outro lugar, sendo que este encaminhameto pode ser feito sem alteração do que estamos recebendo, acrescentando ou removendo informações. Em nosso contexto, este algo, é uma requisição http. Logo, estamos dizendo que o Istio pode receber uma requisição, e encaminhar para um Pod, ou outro de acordo com nossa configuração.

Route rules, são regras que determinam o encaminhamento. Embora a confiruação possa ser complexa, geralmente é simples, utilizando paramtros do cabeçalho http e seus valores.

Kubernetes Default: 50/50 Split

Este exemplo permite você utilizar duas versões de microserviços. Vamos chamar de V1 e V2. Cada um em seu próprio pod gerenciado pelo Kubernets, o padrão é um balanceamento uniforme, round robin routing. Cada pod receberá uma porcentagem de solicitações com base no número de instâncias ou réplicas de microsserviço. Com o Istio podemos mudar esse equilíbrio.

Oque é “round robin routing”? “Round Robin” é um dos algoritmos mais simples de agendamento de processos em um sistema operacional, que atribui frações de tempo para cada processo em partes iguais e de forma circular, manipulando todos os processos sem prioridades. Em nosso contexto, agregamos ao termo a palavra “routing”, dando a ele uma especificidade relevante a algoritimos de rede. Simplificando, significa que este algorítimo irá distribuir as requisições entre os pods, tentando distribuir igualmente a quantidade de requisições. Este algorítimo, geralmente, não leva em consideração o tempo de resposta ou carga do Pod.

Seguindo com um exemplo, nós teremos dois serviços de recomendação executando no OpenShift, nomeados recommendation-v1 e recommendation-v2.

Na figura 1, abaixo, você pode ver o padrão1–2–1–2 de execução dos serviços, este é o roteamento padrão do Kubernets.

Figura 1

Multiplas versões, distribuição ponderada

Na figura dois, podemos ver o padrão 1–2–2–1–2–2… depois de aumentar o número de instâncias da recommendation-v2 para duas instâncias com o comando abaixo:

oc scale --reclicas=2 deployment/recomendation-v2
Figura 2

Ignorando a versão com Istio

Com Istio, nós podemos alterar esta distribuição. Por exemplo, nós podemos direcionar todo o tráfego para recommendation-v1 usando o exemplo yaml abaixo.

Os pods são selecionados pelo seu label, neste exemplo, v1 com a configuração wight: 100 que quer dizer 100% do tráfego direcionado para este pod.

Roteamento desigual (Canary Deployment)

O próximo exemplo, direcionamos 90% do tráfego para para v1, e 10% para V2.

Somente usuários de dispositivos móveis

Abaixo você pode ver que todos os usuários de dispositivos móveis serão dircionados para v2, enquanto que o restante irão ser atendidos pelo v1.

É possível utilizar expressões regulars para selecionar a requisição pelo header HTTP.

Delay em 10% das requisições

Quando o destino for ratings, acrescente um delay (atrazo) de 5 segundos a 10% das requisições.

https://www.eventials.com/Globalcode/tdc-sp-2018-stadium-sexta-3/

Tente você mesmo

O programa “Red Hat Developer” disponibilizou tutoriais, e código fonte para você aprender mais sobre, Istio, Kubernets e OpenShift, veja o repositório.

Quem está por trás do Istio?

Algo que gosto de saber é, Quem são as pessoas, e empresas que estão por de trás da tecnologia da qual tem chamado minha atenção? Oque pode indicar o futuro dela. Abaixo, você pode ver um “print”, de um meeting online, que ocorreu em 19 de Julho de 2018, onde consta o nome de alguns participantes, incluindo empresas que de alguma maneira estão ligados ao Istio.

Veja, pela lista de empresas, que há diversas empresas grandes interessadas na tecnologia, dedicando alguns dos seus melhores engenheiros de software para criar e evoluir todo o ecossistema desta tecnologia. Para mim, já estamos vendo um novo padrão de mercado.

Se me permitir fazer um gancho aqui, na minha opnião foi muito proveitoso assistir ao meeting, também pude observar algumas desisões e mudanças que acontecerão no Istio, antes mesmo de serem implementadas.


codigorefinado

Código refinado

Clayton K. N. Passos

Written by

https://www.linkedin.com/in/claytonpassos

codigorefinado

Código refinado

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade