Ingress

Ingress en Kubernetes es un recurso que te permite gestionar el acceso externo a servicios del clúster a través de HTTP/HTTPS.
-
Define reglas de enrutamiento basadas en rutas (paths) y dominios (hosts).
-
Expone múltiples services de Kubernetes detrás de una misma IP pública.
-
Facilita la gestión de TLS (SSL) para HTTPS.
-
Es compatible con autenticación, reescritura de URL, balanceo de carga y más.
🔵 Componentes principales:
-
Ingress Resource:
-
Es un manifiesto YAML donde defines las reglas de acceso (host, path, backend service).
-
-
Ingress Controller:
-
Es el componente que escucha los recursos de Ingress y configura un proxy (como NGINX, HAProxy, Traefik) para aplicarlas.
-
No es parte nativa de Kubernetes; debes desplegarlo en el clúster.
-
ejemplo manifiesto
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: mi-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: miapp.local
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: miapp-service
port:
number: 80
apiVersion: v1
kind: Pod
metadata:
name: test-pd1
labels:
app: test-nginx
spec:
containers:
- image: nginx
name: test-container1
---
apiVersion: v1
kind: Pod
metadata:
name: test-pd2
labels:
app: test-apache
spec:
containers:
- image: httpd
name: test-container2
---
apiVersion: v1
kind: Service
metadata:
name: nginx1
spec:
type: NodePort
selector:
app: test-nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: apache1
spec:
type: NodePort
selector:
app: test-apache
ports:
- protocol: TCP
port: 80
targetPort: 80
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress1
spec:
rules:
- http:
paths:
- path: /nginx
pathType: Prefix
backend:
service:
name: nginx1
port:
number: 80
- path: /apache
pathType: Prefix
backend:
service:
name: apache1
port:
number: 80