Capítulo 8.1 - Introducción a Ingress
Objetivos de Aprendizaje
Al final de este capítulo, usted será capaz de:
- Comprender qué es Ingress y por qué utilizarlo
- Distinguir Ingress de otros métodos de exposición
- Comprender la arquitectura de Ingress
- Identificar los casos de uso apropiados
- Comprender las ventajas y limitaciones
Introducción
Exponer aplicaciones en Kubernetes se puede hacer de varias maneras. Ingress es el método recomendado para exponer servicios HTTP/HTTPS desde fuera del clúster.
¿Qué es Ingress?
Ingress expone los Servicios HTTP y HTTPS desde fuera del clúster hacia los servicios dentro del clúster. Proporciona:
- Enrutamiento basado en hostname o path
- Terminación TLS/SSL
- Balanceo de carga
- Un solo punto de entrada para múltiples servicios
Arquitectura de Ingress
Componentes
- Ingress Resource: Define las reglas de enrutamiento
- Ingress Controller: Pod que implementa las reglas (NGINX, Traefik, etc.)
Comparación de Métodos
NodePort
apiVersion: v1
kind: Service
metadata:
name: web-service
spec:
type: NodePort
ports:
- port: 80
nodePort: 30080
Ventajas:
- Sencillo
- Sin dependencia externa
Desventajas:
- Puertos altos (30000-32767)
- Sin enrutamiento por hostname
- Sin TLS integrado
- Un puerto por servicio
LoadBalancer
apiVersion: v1
kind: Service
metadata:
name: web-service
spec:
type: LoadBalancer
ports:
- port: 80
Ventajas:
- IP externa dedicada
- Integración cloud nativa
Desventajas:
- Costo (un LB por servicio)
- Sin enrutamiento por hostname
- Sin 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
Ventajas:
- Enrutamiento por hostname/path
- TLS integrado
- Un solo punto de entrada
- Económico (un LB para varios servicios)
Desventajas:
- Requiere un Ingress Controller
- Solo HTTP/HTTPS
Casos de Uso
1. Multi-Dominios
Exponer varios dominios con un solo LoadBalancer:
2. Enrutamiento Basado en Path
Enrutamiento basado en el path:
example.com/api → Servicio API
example.com/web → Servicio Web
example.com/admin → Servicio Admin
3. Terminación TLS/SSL
Gestión centralizada de certificados SSL/TLS.
4. Balanceo de Carga
Distribución de carga entre varias instancias.
Ejemplo Básico
Paso 1: Service
apiVersion: v1
kind: Service
metadata:
name: web-service
spec:
selector:
app: web
ports:
- port: 80
targetPort: 8080
Paso 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 enruta hacia web-service.
Ingress Controllers
Un Ingress Controller es un Pod que monitorea los recursos Ingress y configura un load balancer.
Controladores Populares
-
NGINX Ingress Controller
- El más popular
- Alto rendimiento
- Muchas funcionalidades
-
Traefik
- Sencillo y moderno
- Auto-configuración
- Dashboard integrado
-
HAProxy Ingress
- Muy alto rendimiento
- Configuración avanzada
-
Istio Gateway
- Para service mesh
- Funcionalidades avanzadas
Ventajas de Ingress
1. Económico
Un solo LoadBalancer para varios servicios:
2. Enrutamiento Avanzado
- Por hostname
- Por path
- Por headers
- Rewrites y redirects
3. TLS Centralizado
Gestión de certificados a nivel de Ingress.
4. Flexibilidad
Configuración declarativa con YAML.
Limitaciones
1. Solo HTTP/HTTPS
Ingress solo soporta HTTP y HTTPS. Para TCP/UDP, utilice NodePort o LoadBalancer.
2. Requiere un Controller
Debe instalarse un Ingress Controller en el clúster.
3. Dependencia Externa
Para el acceso externo, siempre se requiere un LoadBalancer o NodePort.
Resumen
En este capítulo, usted ha aprendido:
Ingress: Exposición HTTP/HTTPS con enrutamiento avanzado
Arquitectura: Ingress Resource + Ingress Controller
Ventajas: Enrutamiento por hostname/path, TLS, económico
Comparación: Mejor que NodePort/LoadBalancer para HTTP
Casos de uso: Multi-dominios, enrutamiento basado en path, TLS
Limitaciones: Solo HTTP/HTTPS, requiere un controller
Ingress Controllers: NGINX, Traefik, HAProxy, Istio
Próximos Pasos
Capítulo 8.2: Ingress Controller (Instalación y Configuración)
Capítulo 8.3: Enrutamiento y TLS
Capítulo creado el: Diciembre 2024