Você é um desenvolvedor de aplicativos modernos. Você usa uma coleção de ferramentas de código aberto e talvez algumas ferramentas comerciais para escrever, testar, implantar e gerenciar novos aplicativos e contêineres. Você escolheu o Kubernetes para executar esses contêineres e pods em ambientes de desenvolvimento, teste, preparação e produção. Você aderiu às arquiteturas e conceitos de microsserviços, à Cloud Native Computing Foundation e a outros padrões modernos do setor.
Nesta jornada, você descobriu que o Kubernetes é realmente poderoso. Mas você provavelmente também ficou surpreso com o quão difícil, inflexível e frustrante isso pode ser. Implementar e coordenar mudanças e atualizações em roteadores, firewalls, balanceadores de carga e outros dispositivos de rede pode ser uma tarefa árdua, especialmente no seu próprio data center! É o suficiente para levar um desenvolvedor às lágrimas.
A maneira como você lida com esses desafios tem muito a ver com onde e como você executa o Kubernetes (como um serviço gerenciado ou no local). Este artigo aborda o balanceamento de carga TCP, uma área importante onde as escolhas de implantação afetam a facilidade de uso.
Se você usa um serviço gerenciado, como um provedor de nuvem pública para Kubernetes, grande parte dessa tarefa tediosa de rede é feita para você. Com apenas um comando ( kubectl apply -f loadbalancer.yaml
), o tipo de serviço LoadBalancer fornece um IP público, um registro DNS e um balanceador de carga TCP. Por exemplo, você pode configurar o Amazon Elastic Load Balancer para distribuir tráfego para pods que contêm o NGINX Ingress Controller e, usando esse comando, não se preocupar quando os backends forem alterados. É tão fácil que apostamos que você não vai dar valor!
Com clusters locais, o cenário é totalmente diferente. Você ou seus colegas de rede devem fornecer as peças de rede. Você pode se perguntar: “Por que é tão difícil atrair usuários para meus aplicativos Kubernetes?” A resposta é simples, mas um pouco chocante: O tipo de serviço LoadBalancer, a porta de entrada para seu cluster, na verdade não existe.
Para expor seus aplicativos e serviços fora do cluster, sua equipe de rede provavelmente precisa de tíquetes, aprovações, procedimentos e talvez até mesmo revisões de segurança, tudo isso antes de reconfigurar seus equipamentos. Ou talvez você precise fazer tudo sozinho, diminuindo o ritmo de entrega do aplicativo. Pior ainda, você não ousa fazer alterações em nenhum serviço do Kubernetes, pois se o NodePort mudar, o tráfego poderá ser bloqueado! E todos nós sabemos o quanto os usuários gostam de receber erros 500. Seu chefe provavelmente gosta ainda menos.
Você pode transformar a “opção difícil” na “opção fácil” com nosso novo projeto: Balanceador de carga NGINX para Kubernetes . Este projeto gratuito é um controlador Kubernetes que monitora o NGINX Ingress Controller e atualiza automaticamente uma instância externa do NGINX Plus configurada para balanceamento de carga. Com um design muito simples, é fácil de instalar e operar. Com essa solução em vigor, você pode implementar o balanceamento de carga TCP em ambientes locais, garantindo que novos aplicativos e serviços sejam imediatamente detectados e disponibilizados para tráfego, sem necessidade de intervenção manual.
O NGINX Loadbalancer para Kubernetes fica dentro de um cluster do Kubernetes. Ele é registrado no Kubernetes para monitorar o serviço nginx-ingress (NGINX Ingress Controller). Quando há uma alteração nos backends, o NGINX Loadbalancer for Kubernetes coleta os Worker IPs e os números de porta TCP NodePort e, em seguida, envia o IP:ports para o NGINX Plus por meio da API NGINX Plus . Os servidores upstream do NGINX são atualizados sem necessidade de recarga
, e o NGINX Plus balanceia a carga do tráfego para os servidores upstream corretos e NodePorts do Kubernetes. Instâncias adicionais do NGINX Plus podem ser adicionadas para atingir alta disponibilidade .
Na captura de tela abaixo, há duas janelas que demonstram o NGINX Loadbalancer for Kubernetes implantado e fazendo seu trabalho:
nginx-ingress
)Observação : Neste exemplo, os nós de trabalho do Kubernetes são 10.1.1.8 e 10.1.1.10
Se você está frustrado com os desafios de rede na borda do seu cluster Kubernetes, experimente o projeto e diga-nos o que você acha. O código-fonte do NGINX Loadbalancer para Kubernetes é de código aberto (sob a licença Apache 2.0) com todas as instruções de instalação disponíveis no GitHub .
Para fornecer feedback, deixe um comentário no repositório ou envie uma mensagem para nós no Slack da Comunidade NGINX .
"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."