BLOG | NGINX

Leve-me ao cluster…com BGP?

NGINX-Parte-de-F5-horiz-preto-tipo-RGB
Miniatura de Chris Akker
Chris Akker
Publicado em 28 de fevereiro de 2023

Criar e gerenciar um ambiente Kubernetes robusto exige uma colaboração tranquila entre suas equipes de rede e aplicativos. Mas suas prioridades e estilos de trabalho geralmente são bem diferentes, levando a conflitos com consequências potencialmente sérias: desenvolvimento lento de aplicativos, implantação atrasada e até mesmo tempo de inatividade da rede.

Somente o sucesso de ambas as equipes, trabalhando em direção a um objetivo comum, pode garantir que os aplicativos modernos de hoje sejam entregues no prazo, com segurança e escalabilidade adequadas. Então, como você aproveita as habilidades e a experiência de cada equipe e, ao mesmo tempo, ajuda-as a trabalhar em conjunto?

Em nosso whitepaper Get Me to the Cluster , detalhamos uma solução para habilitar o acesso externo aos serviços do Kubernetes, permitindo que as equipes de rede e aplicativos combinem seus pontos fortes sem conflitos.

Como expor aplicativos em clusters do Kubernetes

A solução funciona especificamente para clusters Kubernetes hospedados no local , com nós sendo executados em máquinas virtuais Linux tradicionais ou bare metal e switches de Camada 2 e roteadores de Camada 3 padrão fornecendo a rede para comunicação no data center. Ele não se estende aos clusters Kubernetes hospedados na nuvem, porque os provedores de nuvem não nos permitem controlar a rede principal em seus data centers nem a rede em seu ambiente Kubernetes gerenciado.

Diagrama de clusters Kubernetes hospedados no local, com nós e switches padrão de Camada 2 e roteadores de Camada 3 fornecendo a rede para comunicação no data center.

Antes de analisarmos os detalhes da nossa solução, vamos analisar por que outras formas padrão de expor aplicativos em um cluster Kubernetes não funcionam para implantações locais:

  • Serviço – Agrupa pods que executam os mesmos aplicativos. Isso é ótimo para comunicação interna entre pods , mas só é visível dentro do cluster, então não ajuda a expor aplicativos externamente.
  • NodePort – Abre uma porta específica em cada nó no cluster e encaminha o tráfego para o aplicativo correspondente. Embora isso permita que usuários externos acessem o serviço, não é o ideal porque a configuração é estática e você tem que usar portas TCP de numeração alta (em vez de números de porta mais baixos bem conhecidos) e coordenar números de porta com outros aplicativos. Você também não pode compartilhar portas TCP comuns entre aplicativos diferentes.
  • LoadBalancer – Usa as definições do NodePort em cada nó para criar um caminho de rede do mundo externo para seus nós do Kubernetes. É ótimo para Kubernetes hospedado na nuvem, porque AWS, Google Cloud Platform, Microsoft Azure e a maioria dos outros provedores de nuvem o oferecem suporte como um recurso de fácil configuração que funciona bem e fornece o endereço IP público necessário e o registro DNS A correspondente para um serviço. Infelizmente, não há equivalente para clusters locais.

Habilitando acesso de usuários externos a clusters Kubernetes locais

Isso nos deixa com o objeto Ingress do Kubernetes, que é projetado especificamente para o tráfego que flui de usuários fora do cluster para pods dentro do cluster (tráfego norte-sul). O Ingress cria um ponto de entrada HTTP/HTTPS externo para o cluster – um único endereço IP ou nome DNS no qual usuários externos podem acessar vários serviços. Isso é exatamente o que precisamos! O objeto Ingress é implementado por um controlador Ingress – em nossa solução, o F5 NGINX Ingress Controller de nível empresarial baseado no NGINX Plus .

Você pode se surpreender ao saber que outro componente essencial da solução é o Border Gateway Protocol (BGP), um protocolo de roteamento de Camada 3. Mas uma ótima solução não precisa ser complexa!

A solução descrita em Get Me to the Cluster na verdade tem quatro componentes:

  1. Rede iBGP – O BGP interno (iBGP) é usado para trocar informações de roteamento dentro de um sistema autônomo (AS) no data center e ajuda a garantir que a rede seja confiável e escalável. O iBGP já está em vigor e é suportado pela equipe de rede na maioria dos data centers.
  2. Rede CNI do Projeto CalicoO Projeto Calico é uma solução de rede de código aberto que conecta de forma flexível ambientes em data centers locais, ao mesmo tempo em que oferece controle refinado sobre o fluxo de tráfego. Usamos o plug-in CNI do Projeto Calico para rede no cluster Kubernetes, com BGP habilitado. Isso permite que você controle os pools de endereços IP alocados para pods, o que ajuda a identificar rapidamente quaisquer problemas de rede.
  3. NGINX Ingress Controller baseado no NGINX Plus – Com o NGINX Ingress Controller, você pode monitorar os endereços IP dos pontos de extremidade de serviço dos pods e reconfigurar automaticamente a lista de serviços upstream sem interrupção do processamento de tráfego. As equipes de aplicativos também podem aproveitar muitos outros recursos HTTP de camada 7 de nível empresarial no NGINX Plus, incluindo verificações de integridade ativas, mTLS e autenticação baseada em JWT.
  4. NGINX Plus como um proxy reverso na borda – O NGINX Plus funciona como um proxy reverso na borda do cluster Kubernetes, fornecendo um caminho entre switches e roteadores no data center e a rede interna no cluster Kubernetes. Isso funciona como substituto para o objeto LoadBalancer do Kubernetes e usa Quagga para BGP.

O diagrama ilustra a arquitetura da solução, indicando quais protocolos os componentes da solução usam para se comunicar, não a ordem em que os dados são trocados durante o processamento da solicitação.

Diagrama ilustrando a arquitetura da solução, indicando quais protocolos os componentes da solução usam para se comunicar

Baixe o Whitepaper gratuitamente

Ao trabalhar em conjunto para implementar uma solução com componentes bem definidos, as equipes de Rede e Aplicativos podem facilmente oferecer desempenho e confiabilidade ideais.

Nossa solução usa ferramentas de rede modernas, protocolos e arquiteturas existentes. Por ser projetado para ser barato e fácil de implementar, gerenciar e oferecer suporte, ele acrescenta facilidade e cria pontes entre suas equipes.

Para ver o código em ação e aprender passo a passo como implantar nossa solução, baixe o Get Me to the Cluster gratuitamente .


"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."