Appearance
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: httpport 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: httpLa 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: 80El 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.