Pular para o conteúdo principal

Capítulo 8.1 - Introdução ao Ingress

Objetivos de Aprendizagem​

Ao final deste capítulo, você será capaz de:

  • Compreender o que é Ingress e por que utilizá-lo
  • Distinguir Ingress de outros métodos de exposição
  • Entender a arquitetura do Ingress
  • Identificar os casos de uso apropriados
  • Compreender as vantagens e limitações

Introdução​

Expor aplicações no Kubernetes pode ser feito de várias maneiras. Ingress é o método recomendado para expor serviços HTTP/HTTPS a partir do exterior do cluster.


O que é Ingress?​

Ingress expõe os Serviços HTTP e HTTPS do exterior do cluster para os serviços dentro do cluster. Ele fornece:

  • Roteamento baseado em hostname ou path
  • Terminação TLS/SSL
  • Load balancing
  • Um único ponto de entrada para múltiplos serviços

Arquitetura do Ingress​

Componentes​

  1. Ingress Resource: Define as regras de roteamento
  2. Ingress Controller: Pod que implementa as regras (NGINX, Traefik, etc.)

Comparação dos Métodos​

NodePort​

apiVersion: v1
kind: Service
metadata:
name: web-service
spec:
type: NodePort
ports:
- port: 80
nodePort: 30080

Vantagens:

  • Simples
  • Sem dependência externa

Desvantagens:

  • Portas altas (30000-32767)
  • Sem roteamento por hostname
  • Sem TLS integrado
  • Uma porta por serviço

LoadBalancer​

apiVersion: v1
kind: Service
metadata:
name: web-service
spec:
type: LoadBalancer
ports:
- port: 80

Vantagens:

  • IP externo dedicado
  • Integração cloud native

Desvantagens:

  • Custo (um LB por serviço)
  • Sem roteamento por hostname
  • Sem TLS integrado

Ingress​

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: web-ingress
spec:
rules:
- host: example.com
http:
paths:
- path: /
backend:
service:
name: web-service
port:
number: 80

Vantagens:

  • Roteamento por hostname/path
  • TLS integrado
  • Um único ponto de entrada
  • Econômico (um LB para vários serviços)

Desvantagens:

  • Requer um Ingress Controller
  • Apenas HTTP/HTTPS

Casos de Uso​

1. Multi-Domínios​

Expor vários domínios com um único LoadBalancer:

2. Roteamento Baseado em Path​

Roteamento baseado em path:

example.com/api     → Serviço API
example.com/web → Serviço Web
example.com/admin → Serviço Admin

3. Terminação TLS/SSL​

Gestão centralizada de certificados SSL/TLS.

4. Load Balancing​

Distribuição de carga entre múltiplas instâncias.


Exemplo Básico​

Etapa 1: Service​

apiVersion: v1
kind: Service
metadata:
name: web-service
spec:
selector:
app: web
ports:
- port: 80
targetPort: 8080

Etapa 2: Ingress​

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: web-ingress
spec:
ingressClassName: nginx
rules:
- host: example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: web-service
port:
number: 80

Resultado: example.com roteia para web-service.


Ingress Controllers​

Um Ingress Controller é um Pod que monitora os recursos Ingress e configura um load balancer.

Controladores Populares​

  1. NGINX Ingress Controller

    • O mais popular
    • Alta performance
    • Muitas funcionalidades
  2. Traefik

    • Simples e moderno
    • Auto-configuração
    • Dashboard integrado
  3. HAProxy Ingress

    • Muito performático
    • Configuração avançada
  4. Istio Gateway

    • Para service mesh
    • Funcionalidades avançadas

Vantagens do Ingress​

1. Econômico​

Um único LoadBalancer para vários serviços:

2. Roteamento Avançado​

  • Por hostname
  • Por path
  • Por headers
  • Rewrites e redirects

3. TLS Centralizado​

Gestão de certificados no nível do Ingress.

4. Flexibilidade​

Configuração declarativa com YAML.


Limitações​

1. Apenas HTTP/HTTPS​

Ingress suporta apenas HTTP e HTTPS. Para TCP/UDP, utilize NodePort ou LoadBalancer.

2. Requer um Controller​

Um Ingress Controller deve ser instalado no cluster.

3. Dependência Externa​

Para acesso externo, um LoadBalancer ou NodePort ainda é necessário.


Resumo​

Neste capítulo, você aprendeu:

Ingress: Exposição HTTP/HTTPS com roteamento avançado
Arquitetura: Ingress Resource + Ingress Controller
Vantagens: Roteamento por hostname/path, TLS, econômico
Comparação: Melhor que NodePort/LoadBalancer para HTTP
Casos de uso: Multi-domínios, roteamento por path, TLS
Limitações: Apenas HTTP/HTTPS, requer um controller
Ingress Controllers: NGINX, Traefik, HAProxy, Istio


Próximos Passos​

Capítulo 8.2: Ingress Controller (Instalação e Configuração)
Capítulo 8.3: Roteamento e TLS


Capítulo criado em: Dezembro 2024