Skip to main content

Ingress

image.png

El servicio de Ingress en Kubernetes básicamente es un enrutadorrecurso que noste permite encaminargestionar 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:

  1. Ingress Resource:

    • Es un manifiesto YAML donde defines las peticionesreglas haciade distintosacceso servicios.(host, Aquípath, tenéisbackend service).

  2. Ingress Controller:

    • Es el ejemplo: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