Saltar al contenido principal

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​

  1. Ingress Resource: Define las reglas de enrutamiento
  2. 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​

  1. NGINX Ingress Controller

    • El más popular
    • Alto rendimiento
    • Muchas funcionalidades
  2. Traefik

    • Sencillo y moderno
    • Auto-configuración
    • Dashboard integrado
  3. HAProxy Ingress

    • Muy alto rendimiento
    • Configuración avanzada
  4. 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