Se você está ingressando no universo do Kubernetes, compreender e dominar o Kubernetes Ingress é essencial para gerenciar o tráfego de maneira eficiente. Neste guia, exploraremos desde os fundamentos teóricos até exemplos práticos usando o Nginx Ingress Controller, além disso, vamos discutir brevemente outros controladores populares, como Traefik e HAProxy.
O que é o Kubernetes Ingress?
O Kubernetes Ingress é um recurso poderoso que simplifica o roteamento de tráfego externo para serviços dentro do cluster Kubernetes. Em vez de lidar diretamente com endereços IP e portas, o Ingress fornece uma camada de abstração, facilitando a configuração assim como otimizando a gestão.
Funcionamento Prático do Ingress
Para ilustrar o funcionamento prático, consideremos um exemplo simples de manifesto Kubernetes:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: meu-ingress
spec:
rules:
- host: meudominio.com
http:
paths:
- path: /servico1
pathType: Prefix
backend:
service:
name: servico1
port:
number: 80
- path: /servico2
pathType: Prefix
backend:
service:
name: servico2
port:
number: 8080
Neste exemplo, o Ingress direciona o tráfego com base no caminho da URL, facilitando a entrega adequada aos serviços correspondentes.
Ingress Controllers: Nginx, Traefik e HAProxy
O recurso Ingress do Kubernetes não funciona sozinho, ele depende de um software que o Implemente.
Ingress Controller, ou seja, Controlador de Ingress é a denominação do software que implementa o Ingress do Kubernetes. Assim, vamos destacar brevemente quatro opções populares:
1. Ingress-NGINX Controller
O Ingress-NGINX Controller, popularmente conhecido como Nginx Ingress Controller, é o controlador “oficial” do Kubernetes, mantido pela comunidade. É uma escolha robusta, baseada no servidor web Nginx. Ele oferece recursos poderosos de roteamento e balanceamento de carga, tornando-o ideal para ambientes Kubernetes exigentes. Sua versatilidade e eficácia o tornam um dos controladores mais utilizados na comunidade.
1. NGINX Ingress Controller
Este é o produto oficial dos desenvolvedores NGINX que também possui uma versão comercial baseada no NGINX Plus. O NGINX Ingress Controller apresenta alto nível de estabilidade, assim como compatibilidade retroativa constante, ausência de módulos de terceiros, alta velocidade prometida (em comparação com o controlador oficial) alcançada graças à eliminação do código Lua.
A versão freeware apresenta limitações significativas, especialmente quando comparada com o controlador oficial, devido à ausência dos mencionados módulos Lua.
Ao mesmo tempo, a versão paga possui funcionalidades adicionais bastante amplas: métricas em tempo real, validação de JWT, verificações de integridade ativas e assim por diante. A vantagem importante sobre o Ingress-NGINX é o suporte total ao tráfego TCP/UDP (e também na versão comunitária!).
2. Traefik Kubernetes Ingress
O Traefik Kubernetes Ingress é um controlador Ingress moderno, projetado para ambientes dinâmicos e baseado em contêineres, como o Docker. Sua abordagem dinâmica e suporte nativo para Docker o tornam uma escolha popular. Além disso, a configuração fácil e recursos como Let’s Encrypt para gerenciamento de certificados SSL destacam suas vantagens.
3. HAProxy Kubernetes Ingress Controller
Para ambientes que demandam alta disponibilidade e escalabilidade, o HAProxy Kubernetes Ingress Controller é uma escolha sólida. Focado em balanceamento de carga, oferece estabilidade extrema. Embora a configuração possa ser mais detalhada, os benefícios em termos de desempenho são notáveis.
Configurações Avançadas com Anotações
Além dos princípios básicos, anotações podem ser utilizadas para configurações avançadas. Vejamos um exemplo que usa a anotação nginx.ingress.kubernetes.io/ssl-redirect
para redirecionamento automático para HTTPS:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: meu-ingress-ssl
annotations:
nginx.ingress.kubernetes.io/ssl-redirect: "true"
spec:
rules:
- host: meudominio.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: meu-servico-https
port:
number: 443
Esta anotação simplifica a configuração, garantindo que todas as solicitações sejam redirecionadas automaticamente para HTTPS. Para maiores informações, você pode acessar a documentação referente às anotações clicando aqui.
Praticando com TLS
Para comunicações seguras, o Ingress suporta TLS. Vamos ver um exemplo:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: meu-ingress-tls
spec:
rules:
- host: meudominio.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: meu-servico-https
port:
number: 443
tls:
- hosts:
- meudominio.com
secretName: meu-certificado-tls
Neste exemplo, a seção TLS especifica o host e o segredo TLS a serem usados para comunicação segura.
Conclusão
Em conclusão, ao compreender os fundamentos teóricos, explorar exemplos práticos e considerar controladores como Ingress-NGINX Controller, NGINX Ingress Controller, Traefik e HAProxy, você está preparado para dominar o Kubernetes Ingress. Os exemplos apresentados utilizam o Ingress-NGINX Controller, uma escolha popular devido à sua versatilidade e eficácia.
Por fim, se você quiser saber mais sobre Ingress, não deixe de conferir o Curso de Kubernetes que eu criei especialmente para quem está começando a aprender a tecnologia Kubernetes. É um curso repleto de informações valiosas e exemplos práticos que você poderá aplicar e ir para o próximo nível em Kubernetes
Sobre o Autor
0 Comentários