O Kubernetes Ingress é uma poderosa ferramenta de gerenciamento de tráfego e roteamento em um cluster Kubernetes. Quando aplicações são implementadas em um ambiente Kubernetes, é comum que os desenvolvedores se deparem com diversas instâncias de serviços que precisam ser acessadas de forma confiável e segura por meio da rede.
Mas como realizar tal processo com segurança? É aí que o Kubernetes Ingress entra em cena, atuando como um controlador que simplifica a exposição de serviços para o mundo exterior.
Preparamos esse artigo para abordar as melhores práticas para o uso do Kubernetes Ingress, trazendo os principais pontos de partida para quem deseja explorar um pouco mais as funcionalidades do containzerizador. Boa leitura!
Como funciona o Kubernetes Ingress?
O Ingress funciona como uma camada intermediária entre os serviços em execução no cluster Kubernetes e as solicitações externas, como requisições HTTP, permitindo que os desenvolvedores configurem regras e políticas para rotear o tráfego de entrada para os serviços corretos baseados em diversos critérios, como o nome do host, caminhos da URL, métodos HTTP, entre outros.
Isso facilita a implementação de cenários complexos, como balanceamento de carga, autenticação, autorização e roteamento de tráfego para diferentes versões de aplicações, tudo isso de forma centralizada e altamente configurável.
Dessa forma, o Kubernetes Ingress se torna uma peça fundamental para tornar a implementação e o gerenciamento de aplicações em clusters Kubernetes mais eficientes, escaláveis e flexíveis.
Melhores práticas para uso do Kubernetes Ingress
Veja a seguir as boas práticas para tirar o melhor proveito do Ingress e explorar o máximo das funcionalidades para a sua equipe.
Utilize controladores de Ingress
Para usar o recurso Ingress, é necessário ter um controlador de Ingress em execução no cluster. Os controladores de Ingress abstraem a complexidade do roteamento de tráfego de aplicações Kubernetes e fornecem uma ponte entre serviços internos e externos.
Além disso, um controlador Ingress de produção deve ter recursos como reconfiguração dinâmica, firewall de aplicações web (WAF) leve e moderno e autorização e autenticação.
Faça anotações
As anotações são uma maneira de fornecer informações adicionais sobre um objeto Kubernetes. No caso do Ingress, as anotações podem ser usadas para configurar o controlador de Ingress e definir regras de roteamento.
Por exemplo, a anotação “nginx.ingress.kubernetes.io/rewrite-target” pode ser usada para reescrever o caminho da solicitação antes de encaminhá-la para o serviço.
Utilize TLS
O uso de TLS (Transport Layer Security) é altamente recomendado para proteger o tráfego entre o cliente e o servidor.
O Ingress pode ser configurado para suportar TLS usando certificados SSL/TLS. Além disso, o Kubernetes fornece suporte nativo para a geração e gerenciamento de certificados TLS usando o recurso “cert-manager”.
Dívida clusters com namespaces
Os namespaces são uma maneira de dividir um cluster Kubernetes em vários ambientes lógicos. O uso de namespaces pode ajudar a organizar e gerenciar melhor os recursos do Kubernetes, incluindo o Ingress.
Por exemplo, é possível criar um namespace para cada ambiente, como desenvolvimento, teste e produção, e implantar o Ingress em cada um deles.
Faça testes
Testar o Ingress é importante para garantir que ele esteja funcionando corretamente e que as regras de roteamento estejam configuradas de maneira adequada.
O Kubernetes fornece várias ferramentas para testar o Ingress, incluindo o “kubectl port-forward” para encaminhar o tráfego para um serviço e o “curl” para enviar solicitações HTTP.
Utilize logs
Os logs são uma ferramenta importante para solucionar problemas e entender o comportamento do Ingress. O Kubernetes fornece várias maneiras de visualizar os logs do Ingress, incluindo o “kubectl logs” para exibir os logs de um pod e o “kubectl describe ingress” para exibir informações detalhadas sobre o Ingress.
Você pode saber mais detalhes sobre como utilizar o Ingress com Terraform em outra série de artigos que preparamos.
Controladores Kubernetes Ingress: veja os mais populares
Existem diversos controladores de Ingress que são populares, cada um com suas próprias características e recursos. Confira algumas das diversas opções e escolha a que mais se adequar a sua realidade.
NGINX Ingress Controller
O controlador de Ingress NGINX é um dos mais populares e é mantido pelo projeto Kubernetes. Ele é confiável e fácil de usar, fornecendo recursos como balanceamento de carga, terminação SSL e roteamento virtual baseado em nome.
No entanto, ele não suporta configurações dinâmicas, o que significa que um reload do NGINX é necessário sempre que um novo endpoint do Kubernetes é definido.
Traefik
O Traefik é outro controlador de Ingress popular de fácil utilização e integração com diversos ambientes Kubernetes. Ele suporta vários protocolos, como TCP, HTTP e HTTPS, e fornece recursos de balanceamento de carga e roteamento.
Ele também suporta configurações dinâmicas, o que significa que não é necessário um reload do Traefik sempre que um novo endpoint do Kubernetes é definido.
HAProxy
O HAProxy é um controlador de Ingress de alto desempenho que é amplamente utilizado em ambientes de produção. Ele suporta vários protocolos, como TCP, HTTP e HTTPS, e fornece recursos de balanceamento de carga e roteamento. Ele também suporta configurações dinâmicas.
Ambassador
Outro controlador Ingress que é bastante utilizado é o Ambassador, que é baseado no Envoy Proxy e fornece recursos avançados de roteamento e balanceamento de carga. Ele é fácil de usar e integrar com qualquer ambiente Kubernetes.
Contour
O Contour é um controlador de Ingress baseado no Envoy Proxy que fornece recursos avançados de roteamento e balanceamento de carga. Ele é fácil de usar e integrar com qualquer ambiente Kubernetes. Ele também suporta configurações dinâmicas.
Gloo
Em nossa lista, também temos o Gloo, que trata-se de um controlador Ingress baseado no Envoy Proxy que fornece recursos avançados de roteamento e balanceamento de carga.
Ele é fácil de usar e integrar com qualquer ambiente Kubernetes, sendo suportado também em configurações dinâmicas.
Caddy
Já o Caddy é um controlador de Ingress que é fácil de usar e configurar. Ele suporta vários protocolos, como TCP, HTTP e HTTPS, e fornece recursos de balanceamento de carga e roteamento. Ele também suporta configurações dinâmicas.
Em geral, cada controlador de Ingress tem suas próprias vantagens e desvantagens, e a escolha do controlador de Ingress depende das necessidades específicas do ambiente Kubernetes e dos recursos necessários para a implantação.
Como utilizar o Ingress na sua empresa?
Utilizar o Kubernetes em grandes projetos pode ser um facilitador, mas em algumas situações parceiros experientes como a Vertigo Tecnologia tornam-se a melhor opção para que os processos sejam feitos de maneira segura.
A Vertigo atua há mais de 20 anos no mercado de tecnologias, levando a transformação digital para empresas do setor público e privado.
Entre em contato com o nosso time de especialistas e utilize o Kubernetes Ingress para ser um catalisador de oportunidades para os seus projetos.