O que é o Istio?
Istio é uma camada de serviço de software livre configurável que conecta, monitora e protege os contêineres em um aglomerado Kubernetes.
Plano de fundo azul e preto
O que é o Istio?

Istio é uma camada de serviço de software livre configurável que conecta, monitora e protege os contêineres em um aglomerado Kubernetes. No momento, o Istio funciona nativamente somente com o Kubernetes, mas sua natureza de software livre possibilita que qualquer um escreva extensões, o que permite que o Istio seja executado em qualquer software de cluster. Hoje, focaremos no uso do Istio com o Kubernetes, seu caso de uso mais conhecido.

O Kubernetes é uma ferramenta de orquestração de contêiner e a unidade central do Kubernetes é um nó. Um nó consiste em um ou mais contêineres, com sistemas de arquivos ou outros componentes. Uma arquitetura de microsserviços pode ter diversos nós diferentes, cada um deles representando diferentes microsserviços. Kubernetes gerencia a disponibilidade e o consumo de recursos dos nós, incluindo pods com o dimensionador automático de pods à medida que a demanda aumenta. O Istio injeta contêineres adicionais no pod para incluir segurança, gerenciamento e monitoramento.

Por ser um software livre, o Istio pode ser executado em qualquer provedor de cloud pública que o suporte, e em qualquer cloud privada que tenha administradores interessados.

O vídeo a seguir  explica mais sobre os conceitos básicos do Istio:

A malha de serviços de rede

Quando as empresas migram para microsserviços, elas precisam oferecer suporte a dezenas ou centenas de aplicativos específicos. O gerenciamento desses terminais separadamente significa oferecer suporte a um grande número de máquinas virtuais ou VMs, incluindo a demanda. Um software de cluster como o Kubernetes pode criar pods e aumentar a sua escala, mas o Kubernetes não oferece roteamento, regras de tráfego ou ferramentas sólidas de monitoramento ou depuração.

Adote a malha de serviços.

À medida que o número de serviços aumenta, o número de possíveis formas de comunicação é ampliado exponencialmente. Dois serviços têm somente dois caminhos de comunicação. Três serviços têm seis e 10 serviços têm 90.  Uma malha de serviços fornece uma maneira única de configurar esses caminhos de comunicação por meio da criação de uma política para a comunicação.

Uma malha de serviços prepara os serviços e direciona o tráfego de comunicações de acordo com uma configuração predefinida. Isso significa que, em vez de configurar um contêiner em execução (ou escrever um código para isso), um administrador pode fornecer a configuração à malha de serviços e fazer com que ela conclua esse trabalho. Anteriormente, isso sempre acontecia com comunicações de serviço-a-serviço e servidores da web.

A maneira mais comum de fazer isso em um cluster é usar o padrão de sidecar. Um sidecar é um novo contêiner, dentro do pod, que roteia e observa o tráfego de comunicações entre serviços e contêineres.

Istio e Kubernetes

Como mencionado anteriormente, o Istio se sobrepõe ao Kubernetes, incluindo contêineres essencialmente invisíveis para o programador e o administrador. Chamados de contêineres "sidecar", eles atuam como intermediários, direcionando o tráfego e monitorando as interações entre os componentes. Os dois atuam em conjunto de três formas: configuração, monitoramento e gerenciamento.

Configuração

O principal método para configurar o Kubernetes é o comando kubectl conhecido como "kubectl -f",e o arquivo é um YAML. Os usuários do Istio podem executar tipos novos e diferentes de arquivos YAML com o kubectl ou usar o novo comando ioctl opcional.

Monitoramento

Com o Istio, é possível monitorar facilmente o funcionamento de seus aplicativos em execução com o Kubernetes. A instrumentação do Istio pode gerenciar e visualizar o funcionamento dos aplicativos, fornecendo mais insights do que somente o monitoramento geral de clusters e nós fornecido pelo Kubernetes.

Gerenciamento

Como a interface do Istio é essencialmente a mesma do Kubernetes, o gerenciamento não requer praticamente nenhum trabalho adicional. Na verdade, o Istio permite que o usuário crie políticas que impactem e gerenciem todo o cluster do Kubernetes, reduzindo o tempo de gerenciamento de cada cluster e eliminando a necessidade de códigos de gerenciamento customizados.

Benefícios do Istio

Os principais benefícios de uma malha de serviços incluem recursos para a melhoria da depuração, do monitoramento, do roteamento, da segurança e da utilização. Ou seja, com o Istio, será necessário menos esforço para gerenciar um grupo mais amplo de serviços.

Depuração melhorada

Digamos, por exemplo, que um serviço tenha diversas dependências. O serviço pay_claim em uma companhia de seguros chama o serviço deductible_amt, que chama o serviço is_member_covered e assim por diante. Uma cadeia de dependência complexa pode ter 10 ou 12 chamadas de serviço. Quando uma dessas 12 falha, ocorre um conjunto de falhas em cascata que resultam em algum tipo de erro 500 ou 400 ou, possivelmente, em nenhuma resposta.

Para depurar esse conjunto de chamadas, é possível usar algo como um rastreio de pilha. No front-end, os desenvolvedores do lado do cliente podem ver quais elementos são retirados dos servidores da web, em qual ordem e examiná-los. Os programadores front-end podem obter um diagrama em cascata para auxiliar na depuração.

O que o exemplo não mostra é o que acontece no data center, ou seja, como o callback=parselLotamaAudiences chama outros quatro serviços da web e quais deles respondem mais lentamente. Em seguida, veremos como o Istio oferece ferramentas para rastrear chamadas de função em um diagrama muito parecido com este.

Monitoramento e observabilidade

Equipes do DevOps e administração de TI poderão observar o tráfego para avaliar a latência, o tempo de serviço, os erros como uma porcentagem de tráfego e assim por diante. Muitas vezes, elas querem ver um dashboard. Um dashboard oferece uma visualização da soma, da média ou dessas métricas ao longo do tempo, potencialmente com a capacidade de efetuar "drill down" para um nó, serviço ou pod específico. O Kubernetes não oferece essa funcionalidade nativamente.

Política

Por padrão, o Kubernetes permite que todos os pods enviem tráfegos para os outros pods. Istio permite que os administradores criem uma política para restringir quais serviços podem funcionar em conjunto. Portanto, por exemplo, os serviços poderão chamar somente outros serviços que sejam dependências verdadeiras. Outra política para manter os serviços ativos é um limite de taxa, que impede que o tráfego excessivo obstrua um serviço e evita ataques de recusa de serviço.

Roteamento e balanceamento de carga

Por padrão, o Kubernetes oferece round-robin e balanceamento de carga. Se houver seis pods fornecendo um microsserviço, o Kubernetes fornecerá um balanceador de carga, ou um "serviço", que enviará solicitações para cada pod em ordem crescente e, em seguida, será reiniciado. No entanto, uma empresa pode implementar versões diferentes do mesmo serviço na produção.

O exemplo mais simples disso pode ser uma implementação azul/verde. Nesse caso, o software pode criar uma versão totalmente nova do aplicativo para produção sem enviar os usuários de produção para ele. Após promover a nova versão, a empresa pode manter os servidores antigos para retornar novamente de forma rápida em caso de falhas.

Com o Istio, isso é tão simples quanto usar tags em um arquivo de configuração. Os administradores também podem usar rótulos para indicar o tipo de serviço ao qual desejam se conectar e criar regras com base em cabeçalhos. Assim, por exemplo, os usuários beta podem realizar o roteamento para um pod "canary" com a versão mais recente e melhor, enquanto os usuários regulares acessam a compilação estável da produção.

Efeito disjuntor

Se um serviço estiver sobrecarregado ou inativo, novas solicitações falharão e continuarão sobrecarregando o sistema. Como o Istio está rastreando erros e atrasos, ele pode forçar uma pausa, o que permite a recuperação de um serviço, após um número específico de solicitações definido pela política. É possível aplicar essa política em todo o cluster criando um pequeno arquivo de texto e instruindo o Istio a usá-lo como uma nova política.

Segurança

O Istio fornece identidade, política e criptografia por padrão, além de autenticação, autorização e auditoria (AAA). Quaisquer pods sob o gerenciamento que se comuniquem com outros usarão o tráfego criptografado, que impedirá quaisquer observações. O serviço de identidade, combinado à criptografia, garante que nenhum usuário não autorizado falsifique uma chamada de serviço. A abordagem AAA oferece aos profissionais de segurança e às operações as ferramentas necessárias para o monitoramento com menos sobrecarga.

Administração simplificada

Os aplicativos tradicionais ainda precisam dos recursos de identificação, política e segurança oferecidos pelo Istio. Isso faz com que programadores e administradores trabalhem no nível errado de abstração, reimplementando as mesmas regras de segurança repetidamente para cada serviço. Istio permite que eles trabalhem no nível certo, configurando a política para o cluster através de um único painel de controle. 

Soluções relacionadas
Red Hat OpenShift on IBM Cloud

Com o Red Hat OpenShift on IBM Cloud, os desenvolvedores do OpenShift têm uma maneira rápida e segura de conteinerizar e implementar cargas de trabalho corporativas em clusters Kubernetes.

Conheça o Red Hat OpenShift
IBM Cloud Satellite

Implemente e execute os aplicativos de maneira consistente em ambientes locais, de computação de borda e de cloud pública a partir de qualquer fornecedor de cloud, usando um conjunto comum de serviços de cloud, incluindo cadeias de ferramentas, bancos de dados e IA.

Conheça o IBM Cloud Satellite
IBM Cloud Satellite

Implemente e execute os aplicativos de maneira consistente em ambientes locais, de computação de borda e de cloud pública a partir de qualquer fornecedor de cloud, usando um conjunto comum de serviços de cloud, incluindo cadeias de ferramentas, bancos de dados e IA.

Conheça o IBM Cloud Satellite
Recursos Contêineres na empresa

Uma nova pesquisa da IBM documenta a expansão atual da adoção de contêineres e do Kubernetes.

O que é sem servidor?

O modelo de execução e o desenvolvimento de aplicativos de cloud sem servidor permite que os desenvolvedores criem e executem códigos sem gerenciar servidores ou pagar por infraestrutura de cloud ociosa.

TI flexível, resiliente e segura para a sua cloud híbrida

Os contêineres fazem parte de uma estratégia de cloud híbrida que permite criar e gerenciar cargas de trabalho de qualquer lugar.

Dê o próximo passo

Implemente clusters Kubernetes altamente disponíveis e totalmente gerenciados com o Red Hat OpenShift on IBM Cloud, um serviço OpenShift gerenciado que utiliza a segurança e a escala corporativas da IBM Cloud para automatizar atualizações, ajustes de escala e provisionamentos. O Red Hat OpenShift on IBM Cloud inclui um recurso OpenShift Service Mesh que usa o serviços plano de controle do Istio para controlar as conexões entre serviços conteinerizados, cumprir políticas, observar comportamentos e muito mais.

Conheça o Red Hat OpenShift on IBM Cloud