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
- Ingress Resource: Define as regras de roteamento
- 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
-
NGINX Ingress Controller
- O mais popular
- Alta performance
- Muitas funcionalidades
-
Traefik
- Simples e moderno
- Auto-configuração
- Dashboard integrado
-
HAProxy Ingress
- Muito performático
- Configuração avançada
-
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