Acceder a las APIs regionales de Google a través de back-ends

En esta guía se describe cómo configurar un balanceador de carga de aplicaciones interno con un backend de Private Service Connect para acceder a una API de Google regional.

Para obtener más información sobre los back-ends, consulta el artículo Acerca de los back-ends.

Se puede acceder a un balanceador de carga de aplicaciones interno que se usa para Private Service Connect desde redes de VPC compartida y desde redes conectadas.

Roles

El rol Administrador de balanceadores de carga de Compute (roles/compute.loadBalancerAdmin) contiene el permiso necesario para llevar a cabo las tareas descritas en esta guía.

Servicios admitidos

Consulta la lista de endpoints de servicios regionales admitidos.

Antes de empezar

  • Habilita la API de Compute Engine en tu proyecto.

  • Si quieres registrar la regla de reenvío del balanceo de carga en Directorio de servicios, habilita la API de Directorio de servicios en tu proyecto. Para configurar Service Directory, debes crear la regla de reenvío con la CLI de Google Cloud o la API.

  • Crea una subred de solo proxy si aún no tienes una. Debe haber una sola subred de solo proxy en la red de VPC y en la región en las que quieras crear el balanceador de carga de aplicaciones interno. Esta subred la usan todos los balanceadores de carga de aplicaciones internos de esa red y región.

  • Si aún no los tienes, crea una clave privada y un certificado autogestionado para tu dominio. Consulta el paso 1 para usar certificados SSL autogestionados. Necesitas una clave privada y un certificado para crear el proxy HTTPS de destino cuando configures el balanceador de carga.

Crear un grupo de endpoints de red

Por cada servicio que quieras poner a disposición mediante el balanceador de carga, crea un grupo de endpoints de red (NEG) de Private Service Connect.

Consola

  1. En la Google Cloud consola, ve a la página Grupos de endpoints de red.

    Ir a grupos de puntos finales de red

  2. Haz clic en Crear grupo de endpoints de red.

  3. Introduce un nombre para el grupo de endpoints de red.

  4. En Tipo de grupo de endpoints de red, selecciona Grupo de endpoints de red (Private Service Connect).

  5. Selecciona la región del grupo de puntos finales de red.

  6. Selecciona el Servicio de destino del grupo de endpoints de red.

  7. Haz clic en Crear.

gcloud

gcloud compute network-endpoint-groups create NEG_NAME \
    --network-endpoint-type=private-service-connect \
    --psc-target-service=TARGET_SERVICE \
    --region=REGION

Haz los cambios siguientes:

  • NEG_NAME: nombre del grupo de endpoints de red.

  • TARGET_SERVICE: el servicio de destino al que quieres conectarte. Consulta la lista de endpoints de servicios regionales admitidos.

  • REGION: la región en la que se va a crear el grupo de puntos finales de red. La región debe ser la misma que la del servicio al que quieras conectarte.

Configurar el balanceador de carga

Todos los componentes del balanceador de carga deben crearse en la misma región que el grupo de endpoints de red de Private Service Connect.

Consola

Selecciona el tipo de balanceador de carga

  1. En la Google Cloud consola, ve a la página Balanceo de carga.

    Ir a Balanceo de carga

  2. Haga clic en Crear balanceador de carga.
  3. En Tipo de balanceador de carga, selecciona Balanceador de carga de aplicación (HTTP/HTTPS) y haz clic en Siguiente.
  4. En Público o interno, selecciona Interno y haz clic en Siguiente.
  5. En Implementación en una sola región o en varias regiones, selecciona La mejor opción para cargas de trabajo regionales y haz clic en Siguiente.
  6. Haz clic en Configurar.

Configuración básica

  1. Introduce un nombre para el balanceador de carga.
  2. Selecciona una región para el balanceador de carga.
  3. Selecciona una red para el balanceador de carga.

    La red debe contener una subred de solo proxy en la región en la que vas a crear el NEG y el balanceador de carga. Si no tienes ninguna, puedes hacer clic en Reservar subred para crear una.

  4. Mantén la ventana abierta para continuar.

Configuración de backend

El grupo de endpoints de red de Private Service Connect es un tipo de backend de balanceador de carga. Crea un servicio de backend para cada backend que quieras configurar.

  1. Haz clic en Configuración de backend.
  2. Crea un servicio de backend para cada grupo de endpoints de red de Private Service Connect que quieras configurar.

    1. En el menú Crear o seleccionar servicios de backend, selecciona Crear un servicio de backend.
    2. Introduce un Nombre para el servicio backend.
    3. En Tipo de backend, selecciona Grupo de endpoints de red de Private Service Connect.
    4. En Tipo de destino de Private Service Connect, selecciona API de Google regional.
    5. Selecciona HTTPS como protocolo.

    6. En la sección Backends (Backends), haz clic en el menú New backend (Nuevo backend) y selecciona el grupo de endpoints de red de Private Service Connect.

      Si necesitas crear un grupo de endpoints de red de Private Service Connect, haz clic en Crear grupo de endpoints de red de Private Service Connect.

Reglas de enrutamiento

El conjunto de reglas para enrutar las solicitudes HTTPS entrantes a servicios de backend o segmentos de backend específicos se denomina mapa de URLs. Para obtener más información sobre los mapas de URLs, consulte la descripción general de los mapas de URLs.

Si solo vas a configurar un servicio de backend para el balanceador de carga, la regla de enrutamiento predeterminada será suficiente y podrás ir directamente a la sección Configuración del frontend.

  1. Si tienes más de un servicio backend, haz clic en Reglas de enrutamiento.
  2. Selecciona Regla sencilla de host y ruta.
  3. Sigue estos pasos para cada backend:
    1. Añadir regla de host y ruta
    2. En Host, introduce el nombre de host que se usará para enviar solicitudes a este servicio. Por ejemplo, pubsub.example.com.
    3. En Rutas, introduce la ruta (por ejemplo, /*).
    4. En Backends (Backends), selecciona el servicio de backend.

Configuración de frontend

  1. Haz clic en Configuración de frontend.
  2. Haz clic en Añadir IP y puerto de frontend.
  3. Introduce un nombre para el balanceador de carga.
  4. En el campo Protocol (Protocolo), selecciona HTTPS (includes HTTP/2) (HTTPS [incluye HTTP/2]).
  5. Selecciona una subred para el balanceador de carga.
  6. Asegúrate de que el Puerto esté configurado como 443 para permitir el tráfico HTTPS.
  7. En Dirección IP, seleccione una dirección IP en el menú.

    Si quieres reservar una dirección IP, haz clic en Crear dirección IP.

  8. Haz clic en la lista desplegable Certificado.

    1. Si ya tienes un recurso de certificado SSL autogestionado que quieras usar, selecciónalo en el menú.
    2. De lo contrario, selecciona Crear un certificado.
    3. Introduce un nombre para el recurso de certificado.
    4. En los campos correspondientes, sube los archivos con formato PEM:
      • Certificado
      • Clave privada
    5. Haz clic en Crear.
  9. Haz clic en Listo.

Revisar y finalizar

  1. Haz clic en Revisar y finalizar para revisar la configuración.
  2. Haz clic en Crear.

gcloud

  1. Crea un servicio de backend por cada grupo de endpoints de red que hayas creado.

    gcloud compute backend-services create BACKEND_SERVICE_NAME \
        --load-balancing-scheme=INTERNAL_MANAGED \
        --protocol=HTTPS \
        --region=REGION
    

    Haz los cambios siguientes:

    • BACKEND_SERVICE_NAME: el nombre del servicio de backend.
    • REGION: la región en la que se creará el servicio backend.
  2. Por cada servicio de backend que haya creado, añada el NEG correspondiente al servicio de backend.

    gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
        --network-endpoint-group=NEG_NAME \
        --region=REGION
    

    Haz los cambios siguientes:

    • BACKEND_SERVICE_NAME: el nombre del servicio de backend.
    • NEG_NAME: el nombre del grupo de endpoints de red.
    • REGION: la región del backend.
  3. Crea un mapa de URLs para el balanceador de carga.

    Un mapa de URLs debe hacer referencia a un servicio de backend predeterminado. Si vas a configurar tu balanceador de carga con un servicio de backend, define ese servicio de backend como predeterminado. Si vas a configurar el balanceador de carga para que use varios servicios de backend, a los que se hará referencia mediante reglas de host y matchers de ruta que crearás en el siguiente paso, elige uno de los servicios de backend para que sea el predeterminado del mapa de URLs.

    gcloud compute url-maps create URL_MAP_NAME \
        --default-service=DEFAULT_BACKEND_SERVICE_NAME \
        --region=REGION
    

    Haz los cambios siguientes:

    • URL_MAP_NAME: nombre del mapa de URLs.

    • DEFAULT_BACKEND_SERVICE_NAME: el nombre del valor predeterminado del balanceador de carga. El valor predeterminado se usa cuando ninguna regla de host coincide con el nombre de host solicitado.

    • REGION: región en la que se creará el mapa de URLs.

  4. Añade servicios backend adicionales al mapa de URLs.

    Si tu mapa de URLs necesita hacer referencia a dos o más servicios de backend, sigue estos pasos. Si su mapa de URLs solo hace referencia a un servicio de backend, omita este paso.

    1. Añade un comparador de rutas para cada servicio backend. Debe crear un elemento pathMatcher para cada servicio de backend.

      gcloud compute url-maps add-path-matcher URL_MAP_NAME \
          --path-matcher-name=PATH_MATCHER \
          --default-service=BACKEND_SERVICE_NAME \
          --region=REGION
      

      Haz los cambios siguientes:

      • URL_MAP_NAME: nombre del mapa de URLs.
      • PATH_MATCHER: nombre del comparador de rutas.
      • BACKEND_SERVICE_NAME: el nombre del servicio de backend.
      • REGION: región del mapa de URLs.
    2. Añade una regla de host para cada nombre de host.

      Cada regla de host solo puede hacer referencia a un matcher de ruta, pero dos o más reglas de host pueden hacer referencia al mismo matcher de ruta.

      gcloud compute url-maps add-host-rule URL_MAP_NAME \
          --hosts=HOST \
          --path-matcher-name=PATH_MATCHER \
          --region=REGION
      

      Haz los cambios siguientes:

      • URL_MAP_NAME: nombre del mapa de URLs.
      • HOST: el nombre de host al que se enviarán las solicitudes de este servicio. Por ejemplo, pubsub.example.com.
      • PATH_MATCHER: el nombre del comparador de rutas.
      • REGION: región del mapa de URLs.
  5. Crea el proxy HTTPS de destino.

    1. Crea un recurso de certificado SSL regional con el comando gcloud compute ssl-certificates create. Los certificados gestionados por Google no se admiten con los balanceadores de carga de aplicaciones internos.

      gcloud compute ssl-certificates create CERTIFICATE \
          --certificate=LB_CERT \
          --private-key=LB_PRIVATE_KEY \
          --region=REGION
      

      Haz los cambios siguientes:

      • CERTIFICATE: un nombre para el certificado.

      • LB_CERT: la ruta al archivo de certificado con formato PEM de tu certificado autogestionado.

      • LB_PRIVATE_KEY: la ruta al archivo de clave privada con formato PEM de tu certificado autogestionado.

      • REGION: la región del certificado.

    2. Usa el recurso de certificado SSL regional para crear un proxy HTTPS de destino con el comando gcloud compute target-https-proxies create.

      gcloud compute target-https-proxies create PROXY_NAME \
          --url-map=URL_MAP_NAME \
          --region=REGION \
          --ssl-certificates=CERTIFICATE
      

      Haz los cambios siguientes:

      • PROXY_NAME: nombre del proxy HTTPS de destino.
      • URL_MAP_NAME: nombre del mapa de URLs.
      • REGION: la región del recurso de certificado.
      • CERTIFICATE: el nombre del recurso de certificado.
  6. Reserva una dirección IPv4 interna regional para la regla de reenvío.

    gcloud compute addresses create ADDRESS_NAME \
        --ip-version=IPV4 \
        --region=REGION \
        --subnet=SUBNETWORK
    

    Haz los cambios siguientes:

    • ADDRESS_NAME: nombre del recurso de dirección IP.
    • REGION: la región en la que se creará la dirección IP.
    • SUBNET: la subred en la que se va a crear la dirección IP.

    Ejecuta este comando para ver la dirección IP reservada. Una vez que hayas creado el balanceador de carga, podrás usar la dirección IP para verificar la configuración.

    gcloud compute addresses describe ADDRESS_NAME \
        --format="get(address)" --region=REGION
    
  7. Crea la regla de reenvío.

    Crea la regla de reenvío con el comando gcloud compute forwarding-rules create.

    gcloud compute forwarding-rules create FWD_RULE \
        --load-balancing-scheme=INTERNAL_MANAGED \
        --network=NETWORK \
        --address=ADDRESS_NAME \
        --ports=443 \
        --region=REGION \
        --target-https-proxy=PROXY_NAME \
        --target-https-proxy-region=PROXY_REGION \
       [--service-directory-registration=SD_SERVICE_NAME]
    

    Haz los cambios siguientes:

    • FWD_RULE: el nombre de la regla de reenvío.

    • NETWORK: la red en la que se creará la regla de reenvío.

    • ADDRESS_NAME: la dirección IP reservada.

    • REGION: la región de la regla de reenvío.

    • PROXY_NAME: nombre del proxy HTTPS de destino.

    • PROXY_REGION: la región del proxy HTTPS de destino.

    • SD_SERVICE_NAME: el URI del servicio de directorio de servicios con el que quieres registrar el balanceador de carga, en este formato: projects/PROJECT/locations/REGION/namespaces/NAMESPACE_NAME/services/SERVICE_NAME. Especificar --service-directory-registration es opcional.

Verificar la configuración

  1. Crea la instancia de VM.

    gcloud compute instances create VM_NAME \
        --network=NETWORK \
        --image-project=debian-cloud --image-family=debian-12 \
        --zone=ZONE
    

    Haz los cambios siguientes:

    • VM_NAME: nombre de la máquina virtual.

    • NETWORK: la red de la VM.

    • ZONE: la zona de la VM.

  2. Conéctate a la VM.

    gcloud compute ssh VM_NAME --zone=ZONE
    
  3. Usa curl para verificar la configuración. Este comando define el encabezado Host y omite la resolución de DNS especificando una dirección IP definida por el usuario. Puedes omitir el puerto si usas el predeterminado para el protocolo. Por ejemplo, puedes usar el puerto 443 para HTTPS.

    Si es necesario, puedes saltarte la validación del certificado con la marca -k. Es posible que tengas que omitir la validación si has usado un certificado autofirmado para configurar el proxy HTTPS de destino o si la VM no tiene el certificado de la autoridad de certificación que firmó tu certificado.

    curl -iv --resolve HOSTNAME:443:IP_ADDRESS \
       'https://HOSTNAME/RESOURCE_URI'
    

    Haz los cambios siguientes:

    • HOSTNAME: el nombre de host que has configurado en tu mapa de URLs. Por ejemplo, pubsub.example.com.
    • IP_ADDRESS: la dirección IP de la regla de reenvío de tu balanceador de carga.
    • RESOURCE_URI: el resto del URI del recurso que quieras usar para la verificación. Por ejemplo, si el balanceador de carga reenvía solicitudes a un punto final regional de Pub/Sub, puedes usar rest?version=v1.

Configurar registros DNS

Configura los registros DNS de cada host que hayas añadido al mapa de URLs para que apunten a la dirección IP de la regla de reenvío. Si usas Cloud DNS para gestionar el DNS, consulta Añadir, modificar y eliminar registros. De lo contrario, configura los registros DNS en tu servidor DNS.

Por ejemplo, supongamos que ha creado las siguientes configuraciones:

  • Un NEG de Private Service Connect que usa el servicio de destino pubsub.europe-west3.rep.googleapis.com.

  • Un balanceador de carga de aplicaciones interno que usa ese NEG de Private Service Connect como backend.

  • Un mapa de URLs que define una regla de host para pubsub.example.com.

Para que esta configuración funcione correctamente, debe crear un registro DNS que apunte pubsub.example.com a la dirección IP de la regla de reenvío.

Con esta configuración, las solicitudes que se envíen a pubsub.example.com se enviarán al balanceador de carga, que las reenviará a pubsub.europe-west3.rep.googleapis.com.

Configurar clientes para que envíen solicitudes al backend

Para enviar solicitudes a través del backend en lugar de los endpoints de servicio público, debes configurar los clientes para que envíen solicitudes al nombre de host que hayas definido en el mapa de URLs del balanceador de carga (por ejemplo, pubsub.example.com). Consulta la documentación de tu cliente o biblioteca de cliente para obtener información sobre cómo configurarlo para que use endpoints personalizados. En las siguientes páginas se incluyen los pasos de configuración de algunos clientes habituales:

  • Python: puedes configurar api_endpoint en Client options.

  • Ir: puedes configurar WithEndpoint en ClientOptions.

  • .NET: puedes configurar Endpoint en la clase de compilación del cliente.

  • gcloud puedes configurar api_endpoint_overrides en la CLI de gcloud.

Acceder al backend desde hosts on-premise

Si tu red on-premise está conectada a una red de VPC, puedes enviar tráfico al backend de Private Service Connect.

  • Tu red local debe estar conectada a la red de VPC que contiene tu balanceador de carga de aplicaciones interno mediante túneles de Cloud VPN o asignaciones de VLAN en la misma región que el balanceador de carga de aplicaciones interno.

  • La red local debe tener las rutas adecuadas a tu balanceador de carga de aplicaciones interno. Asegúrate de que cada Cloud Router que gestione la sesión de BGP del túnel de Cloud VPN o de la vinculación de VLAN se haya configurado para anunciar el intervalo de direcciones IP principal de la subred que usa tu regla de reenvío del balanceador de carga de aplicaciones interno. Los routers de Cloud Router anuncian rutas de subred de forma predeterminada.

  • Debe configurar los sistemas locales para que los nombres de host del mapa de URLs de su balanceador de carga de aplicaciones interno se resuelvan en la dirección IP de la regla de reenvío del balanceador de carga de aplicaciones interno. Puedes crear los registros DNS en servidores de nombres locales o usar Cloud DNS.

    Si has creado los registros DNS con zonas privadas gestionadas de Cloud DNS, sigue estos pasos:

    • Crea una política de servidor entrante en la red VPC a la que se conecta tu red on-premise.

    • Identifica los puntos de entrada del reenviador entrante en las regiones en las que se encuentran tus túneles de Cloud VPN y tus vinculaciones de VLAN, en la red de VPC a la que se conecta tu red on-premise.

    • Configura los servidores de nombres DNS locales para que reenvíen las solicitudes de DNS de los nombres de host del mapa de URLs a un punto de entrada de reenviador de entrada de Cloud DNS.

Figura 1. Si configuras Private Service Connect, Cloud Router y los hosts on-premise, puedes conectarte a las APIs y los servicios de Google mediante back-ends regionales (haz clic para ampliar la imagen).