Kubernetes Ingress

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

Bruno Lacerda
Bruno Lacerda

Com uma graduação em Sistemas de Informação e mais de 15 anos de experiência em diversas áreas da tecnologia, incluindo desenvolvimento de sistemas, consultoria em middleware e arquitetura de sistemas, eu me dedico a ajudar empresas do setor público e privado a superar desafios complexos em ambientes de missão crítica. Minha experiência no campo me ensinou a importância da partilha de conhecimentos, o que me levou a me tornar um instrutor na Udemy. Minha abordagem ao ensino é prática e acessível, acreditando firmemente que o conhecimento é mais útil quando aplicado. Minha paixão pela tecnologia e pelo ensino se traduz em cursos que são tanto informativos quanto envolventes, projetados para ajudar você a alcançar seus objetivos de aprendizagem e carreira. Juntos, vamos dominar novas habilidades e superar obstáculos. Estou ansioso para embarcar nesta jornada de aprendizado com você.

0 Comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Solicitar exportação de dados

Use este formulário para solicitar uma cópia de seus dados neste site.

Solicitar a remoção de dados

Use este formulário para solicitar a remoção de seus dados neste site.

Solicitar retificação de dados

Use este formulário para solicitar a retificação de seus dados neste site. Aqui você pode corrigir ou atualizar seus dados, por exemplo.

Solicitar cancelamento de inscrição

Use este formulário para solicitar a cancelamento da inscrição do seu e-mail em nossas listas de e-mail.