Skip to content

Redes y balanceo ​

Los Pods pueden crearse y eliminarse durante el ciclo de vida de una aplicación, por lo que sus direcciones IP no deben usarse como endpoints permanentes. Un Service proporciona una dirección estable y distribuye conexiones entre los Pods que coinciden con su selector.

Service interno ​

El siguiente manifiesto expone los Pods mi-app dentro del clúster:

yaml
apiVersion: v1
kind: Service
metadata:
  name: mi-app
spec:
  type: ClusterIP
  selector:
    app: mi-app
  ports:
    - name: http
      port: 80
      targetPort: http

port es el puerto del Service; targetPort es el puerto del contenedor (en este ejemplo, el puerto nombrado http del Pod). Los otros Pods pueden acceder al servicio mediante mi-app dentro del mismo namespace o mi-app.<namespace> desde otro namespace.

Exponer un servicio al exterior ​

En un clúster con un proveedor que implementa balanceadores externos, type: LoadBalancer solicita un balanceador para el Service:

yaml
apiVersion: v1
kind: Service
metadata:
  name: mi-app-publica
spec:
  type: LoadBalancer
  selector:
    app: mi-app
  ports:
    - port: 80
      targetPort: http

La dirección externa depende del proveedor cloud o de la implementación instalada en el clúster. En un clúster local puede no asignarse automáticamente. Este tipo de Service suele crear un balanceador de capa 4; el proveedor determina sus capacidades, coste y configuración.

Ingress para HTTP y HTTPS ​

Un recurso Ingress define reglas HTTP(S) de entrada, por ejemplo, enrutamiento por host o ruta. Para que funcione, el clúster debe tener un controlador Ingress instalado y configurado; crear solo el recurso no instala el controlador ni crea por sí mismo el punto de entrada.

yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: mi-app
spec:
  ingressClassName: nginx
  rules:
    - host: app.ejemplo.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: mi-app
                port:
                  number: 80

El valor de ingressClassName debe corresponder con un controlador disponible en el clúster. TLS se configura mediante una sección tls y un Secret de certificado, o mediante la integración que ofrezca el controlador o proveedor.

Gateway API ​

Gateway API es una alternativa más expresiva para gestionar tráfico de entrada y separar responsabilidades entre infraestructura y equipos de aplicación. Necesita una implementación compatible instalada. Sus recursos comunes incluyen GatewayClass, Gateway y HTTPRoute; su disponibilidad y características dependen de la implementación.

Para elegir: usa un Service ClusterIP para tráfico interno; LoadBalancer para publicar directamente un servicio cuando la infraestructura lo permita; e Ingress o Gateway API para enrutar tráfico HTTP(S) de varios servicios a través de una entrada compartida.