Ingress para balanceadores de cargas de aplicaciones internos


En esta página, se explica cómo funciona Ingress para los balanceadores de cargas de aplicaciones internos en Google Kubernetes Engine (GKE). También puedes obtener información sobre cómo configurar y usar Ingress para balanceadores de cargas de aplicaciones internos.

En GKE, el balanceador de cargas de aplicaciones interno es un balanceador de cargas de capa 7 regional y basado en proxy que te permite ejecutar y escalar tus servicios detrás de una dirección IP de balanceo de cargas interno. Los objetos Ingress de GKE admiten el balanceador de cargas de aplicaciones interno de forma nativa mediante la creación de objetos Ingress en clústeres de GKE.

Si deseas obtener información general acerca del uso de Ingress para el balanceo de cargas en GKE, consulta el balanceo de cargas HTTP(S) con Ingress.

Beneficios de usar Ingress para balanceadores de cargas de aplicaciones internos

El uso de Ingress de GKE para balanceadores de cargas de aplicaciones internos proporciona los siguientes beneficios:

  • Un control de Ingress administrado por GKE con alta disponibilidad
  • Balanceo de cargas para la comunicación interna de servicio a servicio
  • Balanceo de cargas nativo del contenedor con Grupos de extremos de red (NEG).
  • Enrutamiento de aplicaciones compatible con HTTP y HTTPS
  • Verificaciones de estado de Compute Engine de alta fidelidad para servicios resilientes
  • Proxies basados en Envoy que se implementan a pedido para satisfacer las necesidades de capacidad de tráfico.

Compatibilidad con funciones de Google Cloud

El Ingress para balanceadores de cargas de aplicaciones internos admite una variedad de características adicionales.

Entorno de red obligatorio para los balanceadores de cargas de aplicaciones internos

El balanceador de cargas de aplicaciones interno proporciona un grupo de proxies para tu red. Los proxies evalúan dónde debe ir cada solicitud HTTP(S) en función de factores, como el mapa de URL, la afinidad de sesión de BackendService y el modo de balanceo de cada NEG de backend.

El balanceador de cargas de aplicaciones interno de una región usa la subred de solo proxy para esa región en tu red de VPC a fin de asignar direcciones IP internas a cada proxy creado por Google Cloud.

De forma predeterminada, la dirección IP asignada a la regla de reenvío de un balanceador de cargas proviene del rango de subred del nodo asignado por GKE en lugar de la subred de solo proxy. También puedes especificar de forma manual una dirección IP para la regla de reenvío desde cualquier subred cuando crees la regla.

En el siguiente diagrama, se proporciona una descripción general del flujo de tráfico para un balanceador de cargas de aplicaciones interno, como se describe en el párrafo anterior.

imagen

A continuación, te mostramos cómo funciona el balanceador de cargas de aplicaciones interno:

  1. Un cliente establece una conexión a la dirección IP y al puerto de la regla de reenvío del balanceador de cargas.
  2. Un proxy recibe y finaliza la conexión de red del cliente.
  3. El proxy establece una conexión con el extremo (Pod) adecuado en un NEG, según lo determinan los servicios de backend y la asignación de URL del balanceador de cargas.

Cada proxy escucha en la dirección IP y el puerto que especifica la regla de reenvío del balanceador de cargas correspondiente. La dirección IP de origen de cada paquete enviado desde un proxy a un extremo es la dirección IP interna que se asignó a ese proxy desde la subred de solo proxy.

HTTPS (TLS) entre el balanceador de cargas y tu aplicación

Un balanceador de cargas de aplicaciones interno actúa como un proxy entre tus clientes y tu aplicación. Los clientes pueden usar HTTP o HTTPS para comunicarse con el proxy del balanceador de cargas. Para la conexión del proxy del balanceador de cargas a tu aplicación, se usa HTTP de forma predeterminada. Sin embargo, si tu aplicación se ejecuta en un Pod de GKE y puede recibir solicitudes HTTPS, puedes configurar el balanceador de cargas para que use HTTPS cuando reenvíe solicitudes a tu aplicación.

Para configurar el protocolo que se usa entre el balanceador de cargas y tu aplicación, debes usar la anotación cloud.google.com/app-protocols en el manifiesto del Service.

El siguiente manifiesto del Service especifica dos puertos. La anotación especifica que un balanceador de cargas de aplicaciones interno debe usar HTTP cuando se orienta al puerto 80 del Service y usar HTTPS cuando se orienta al puerto 443 del Service.

Debes usar el campo name del puerto en la anotación. No uses un campo diferente, como targetPort.

apiVersion: v1
kind: Service
metadata:
  name: my-service
  annotations:
    cloud.google.com/app-protocols: '{"my-https-port":"HTTPS","my-http-port":"HTTP"}'
spec:
  type: NodePort
  selector:
    app: metrics
    department: sales
  ports:
  - name: my-https-port
    port: 443
    targetPort: 8443
  - name: my-http-port
    port: 80
    targetPort: 50001

¿Qué sigue?