Executar e gerenciar aplicativos de microsserviços em contêineres em escala em um cluster de máquinas é uma tarefa desafiadora. O Kubernetes ajuda você a enfrentar o desafio oferecendo uma solução poderosa para orquestração de contêineres. Ele inclui vários recursos importantes, como tolerância a falhas, dimensionamento automático, atualizações contínuas, armazenamento, descoberta de serviços e balanceamento de carga.
Nesta postagem do blog, explicamos como usar o NGINX Open Source ou o NGINX Plus com o Ingress , a estrutura de balanceamento de carga integrada do Kubernetes para tráfego HTTP. O Ingress permite que você configure regras que controlam o roteamento de tráfego externo para os serviços no seu cluster Kubernetes. Você pode escolher qualquer balanceador de carga que forneça um controlador Ingress , que é um software que você implanta no seu cluster para integrar o Kubernetes e o balanceador de carga. Aqui mostramos como configurar o balanceamento de carga para um aplicativo de microsserviços com o Ingress e os controladores Ingress que fornecemos para NGINX Plus e NGINX.
[Editor – Os controladores anteriormente separados para NGINX e NGINX Plus foram mesclados em um único controlador Ingress para ambos.]
Nesta postagem do blog, examinamos apenas o balanceamento de carga HTTP para Kubernetes com Ingress. Para saber mais sobre outras opções de balanceamento de carga, consulte Balanceamento de carga de serviços do Kubernetes com o NGINX Plus em nosso blog.
Observação: Instruções completas para os procedimentos discutidos nesta postagem do blog estão disponíveis em nosso repositório GitHub . Esta postagem não aborda todas as etapas necessárias, mas fornece links para essas instruções.
Antes de implantar o aplicativo de exemplo e configurar o balanceamento de carga para ele, precisamos escolher um balanceador de carga e implantar o controlador Ingress correspondente.
Um controlador Ingress é um software que integra um balanceador de carga específico com o Kubernetes. Desenvolvemos um controlador Ingress para NGINX Open Source e NGINX Plus, agora disponível em nosso repositório GitHub . Há também outras implementações criadas por terceiros; para saber mais, visite a página Ingress Controllers no repositório GitHub para Kubernetes.
Para obter instruções completas sobre como implantar o controlador NGINX ou NGINX Plus Ingress em seu cluster, consulte nosso repositório GitHub .
Nosso aplicativo de exemplo é um aplicativo web de microsserviços típico que consiste em vários serviços, cada um implantado separadamente. O aplicativo, chamado café , permite que você peça chá pelo serviço de chá ou café pelo serviço de café . Você indica sua preferência de bebida com o URI da sua solicitação HTTP: URIs terminando com /tea lhe dão chá e URIs terminando com /coffee lhe dão café. As conexões com o aplicativo devem ser protegidas com SSL/TLS.
O diagrama abaixo descreve conceitualmente o aplicativo, com o balanceador de carga NGINX Plus desempenhando o importante papel de rotear solicitações do cliente para o serviço apropriado, bem como proteger as conexões do cliente com SSL/TLS.
Para implantar o aplicativo em seu cluster, siga as instruções em nosso repositório GitHub .
Nosso aplicativo de café requer que o balanceador de carga forneça duas funções:
Para configurar o balanceamento de carga com o Ingress, defina regras em um recurso do Ingress . As regras especificam como rotear o tráfego externo para os serviços no seu cluster.
No recurso, você pode definir vários servidores virtuais, cada um para um nome de domínio diferente. Um servidor virtual geralmente corresponde a um único aplicativo de microsserviços implantado no cluster. Para cada servidor, você pode:
Você pode encontrar uma explicação mais detalhada do Ingress, com exemplos, na página de documentação do Ingress .
Aqui está o recurso Ingress ( cafe‑ingress.yaml ) para o aplicativo do café :
Examinando linha por linha, vemos:
Nas linhas 6–9 configuramos a terminação SSL/TLS:
Nas linhas 13–21 definimos duas regras baseadas em caminhos:
Para obter instruções completas sobre como implantar os recursos Ingress e Secret no cluster, consulte nosso repositório GitHub .
Depois de implantar o controlador NGINX Plus Ingress, nosso aplicativo, o recurso Ingress e o recurso Secret, podemos testar o aplicativo.
Quando fazemos uma solicitação de chá com o URI /tea , no navegador vemos uma página gerada pelo serviço de chá .
Esperamos que você não fique muito desapontado porque os serviços de chá e café não oferecem bebidas, mas sim informações sobre os recipientes em que são servidos e os detalhes da sua solicitação. Eles incluem o nome do host e o endereço IP do contêiner, o URI da solicitação e o endereço IP do cliente. Cada vez que atualizamos a página, obtemos uma resposta de um contêiner diferente.
Também podemos nos conectar ao painel de monitoramento de atividades ao vivo do NGINX Plus e ver métricas de balanceamento de carga em tempo real do NGINX Plus e de cada contêiner do nosso aplicativo.
O Ingress fornece funcionalidade básica de balanceamento de carga HTTP. No entanto, muitas vezes os requisitos de balanceamento de carga para seus aplicativos são mais complexos e, portanto, não são suportados pelo Ingress. Para atender a alguns desses requisitos, adicionamos uma série de extensões ao controlador Ingress. Dessa forma, você ainda pode aproveitar a vantagem de usar os recursos do Kubernetes para configurar o balanceamento de carga (em vez de ter que configurar o balanceador de carga diretamente), mas aproveitando a capacidade de utilizar recursos avançados de balanceamento de carga.
Para uma lista completa das extensões disponíveis, consulte nosso repositório GitHub .
Além disso, fornecemos um mecanismo para personalizar a configuração do NGINX por meio de recursos do Kubernetes, via recursos do Config Maps ou Anotações. Por exemplo, você pode personalizar valores das diretivas proxy_connect_timeout
ou proxy_read_timeout
.
Quando seus requisitos de balanceamento de carga vão além daqueles suportados pelo Ingress e nossas extensões, sugerimos uma abordagem diferente para implantar e configurar o NGINX Plus que não usa o controlador Ingress. Leia Balanceamento de carga de serviços do Kubernetes com o NGINX Plus em nosso blog para saber mais.
Com o NGINX Plus, o controlador Ingress oferece os seguintes benefícios, além daqueles que você obtém com o NGINX:
O Kubernetes fornece balanceamento de carga HTTP integrado para rotear tráfego externo para os serviços no cluster com o Ingress. O NGINX e o NGINX Plus integram-se ao balanceamento de carga do Kubernetes, oferecendo suporte total aos recursos do Ingress e também fornecendo extensões para dar suporte a requisitos estendidos de balanceamento de carga.
Para experimentar o NGINX Plus e o controlador Ingress, comece hoje mesmo seu teste gratuito de 30 dias ou entre em contato conosco para discutir seus casos de uso .
"Esta postagem do blog pode fazer referência a produtos que não estão mais disponíveis e/ou não têm mais suporte. Para obter as informações mais atualizadas sobre os produtos e soluções F5 NGINX disponíveis, explore nossa família de produtos NGINX . O NGINX agora faz parte do F5. Todos os links anteriores do NGINX.com redirecionarão para conteúdo semelhante do NGINX no F5.com."