Accede a las API de Google mediante Private Service Connect con controles de servicio HTTP(S) de consumidor

Private Service Connect te permite conectarte a servicios fuera de tu red de nube privada virtual (VPC) mediante las direcciones IP internas que definas.

Puedes crear un extremo de Private Service Connect con controles del servicio HTTP(S) de consumidor mediante un balanceador de cargas HTTP(S) interno, lo que te permite mantener políticas coherentes en varios productores de servicios.

Consulta Usa Private Service Connect para acceder a las API de Google con controles de servicio HTTP(S) de consumidor a fin de obtener más información.

Se puede acceder a un balanceador de cargas HTTP(S) interno que se usa para Private Service Connect desde las redes de VPC compartidas y desde las redes conectadas.

Funciones

El rol de administrador de balanceadores de cargas de Compute (roles/compute.loadBalancerAdmin) contiene el permiso necesario para realizar las tareas descritas en esta guía.

Servicios compatibles

Consulta la lista de extremos de servicio regional admitidos.

Antes de comenzar

  • Habilita la API de Compute Engine en tu proyecto.

  • Si deseas registrar la regla de reenvío del balanceo de cargas con el Directorio de servicios, habilita la API de Service Directory en tu proyecto. Para configurar el directorio de servicio, 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 única subred de solo proxy en la región y la red de VPC en las que deseas crear el balanceador de cargas HTTP(S) interno. Todos los balanceadores de cargas HTTP(S) internos dentro de esa red y región usan esta subred.

  • Si aún no los tienes, crea una clave privada y un certificado para tu dominio. Consulta el paso 1 sobre el uso de certificados SSL autoadministrados. Necesitas una clave privada y un certificado para crear el proxy HTTPS de destino cuando configuras el balanceador de cargas.

Crea un grupo de extremos de red

Para cada servicio que desees que esté disponible mediante el balanceador de cargas, crea un grupo de extremos de red (NEG) de Private Service Connect.

Console

  1. Ve a la página Grupos de extremos de red en Google Cloud Console.
    Ir a Grupos de extremos de red
  2. Haz clic en Crear un grupo de extremos de red.
  3. Ingresa un nombre para el grupo de extremos de red.
  4. En Tipo de grupo de extremos de red, selecciona Grupo de extremos de red (Private Service Connect).
  5. Selecciona una región para el grupo de extremos de red.
  6. Selecciona el Servicio de destino para el grupo de extremos de red.
  7. Haga 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

Reemplaza lo siguiente:

  • NEG_NAME: un nombre para el grupo de extremos de red.

  • TARGET_SERVICE: el servicio de destino al que deseas conectarte Consulta la lista de extremos de servicio regional admitidos.

  • REGION: la región en la que se creará el grupo de extremos de red. La región debe ser la misma que la del servicio al que deseas conectarte.

Configura el balanceador de cargas

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

Console

Selecciona un tipo de balanceador de cargas

  1. Ve a la página Balanceo de cargas en Google Cloud Console.
    Ir a balanceo de cargas
  2. En Balanceo de cargas de HTTP(S), haga clic en Iniciar configuración.
  3. Selecciona Solo entre mis VM. Esta configuración indica que el balanceador de cargas es interno.
  4. Haga clic en Continuar.

Configuración básica

  1. Ingresa un Nombre para el balanceador de cargas.
  2. Selecciona una región para el balanceador de cargas.
  3. Selecciona una red para el balanceador de cargas.

    La red debe contener una subred de solo proxy en la región en la que crearás el NEG y el balanceador de cargas. Si no tienes una, puedes hacer clic en Reservar subred para crearla.

  4. Mantén la ventana abierta para continuar.

Configuración de backend

El grupo de extremos de red de Private Service Connect es un tipo de backend del balanceador de cargas. Debes crear un servicio de backend para cada backend que desees configurar.

  1. Haga clic en Configuración de backend.
  2. Crea un servicio de backend para cada grupo de extremos de red de Private Service Connect que desees configurar.

    1. En el menú Crear o seleccionar servicios de backend, selecciona Crear un servicio de backend.
    2. Ingresa un Nombre para el servicio de backend.
    3. Configura el Tipo de backend como Grupo de extremos de red de Private Service Connect.
    4. Selecciona HTTPS para el protocolo.

      El parámetro de configuración de Puerto con nombre no se usa para esta configuración de balanceador de cargas. Mantén el parámetro de configuración de puerto con nombre predeterminado.

    5. En la sección Backends, haz clic en el menú Nuevo backend y selecciona el grupo de extremos de red de Private Service Connect.

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

Reglas de enrutamiento

Si configuras solo un servicio de backend para el balanceador de cargas, la regla de enrutamiento predeterminada es suficiente y puedes pasar a la Configuración de frontend.

  1. Si tienes más de un servicio de backend, haz clic en Reglas de enrutamiento.
  2. Selecciona Regla sencilla de host y ruta de acceso.
  3. Para cada backend, haz lo siguiente:
    1. Agrega la regla de host y ruta de acceso.
    2. En Host, ingresa el nombre de host que se usará para enviar solicitudes a este servicio, por ejemplo, cloudkms.example.com.
    3. En Rutas de acceso, ingresa la ruta de acceso, por ejemplo, /*.
    4. En Backends, selecciona el servicio de backend.

Configuración de frontend

  1. Haga clic en Configuración de frontend.
  2. Haz clic en Agregar IP y puerto de frontend.
  3. Ingresa un Nombre para el balanceador de cargas.
  4. En el campo Protocolo, selecciona HTTPS (incluye HTTP/2).
  5. Selecciona una Subred para el balanceador de cargas.
  6. Asegúrate de que el Puerto esté establecido en 443 para permitir el tráfico HTTPS.
  7. En Dirección IP, selecciona una dirección IP del menú.

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

  8. Haz clic en la lista desplegable Certificado.

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

Revisa y finaliza

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

gcloud

  1. Para cada grupo de extremos de red que creaste, crea un servicio de backend.

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

    Reemplaza lo siguiente:

    • BACKEND_SERVICE_NAME: el nombre del servicio de backend.
    • REGION: es la región en la que se creará el servicio de backend.
  2. Para cada servicio de backend que hayas creado, agrega el NEG correspondiente al servicio de backend.

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

    Reemplaza lo siguiente:

    • BACKEND_SERVICE_NAME: el nombre del servicio de backend.
    • NEG_NAME: es el nombre del grupo de extremos de red.
    • REGION: es la región del backend.
  3. Crea un mapa de URL para el balanceador de cargas.

    Un mapa de URL debe hacer referencia a un servicio de backend predeterminado. Si configuras tu balanceador de cargas con un servicio de backend, establece ese servicio de backend como el predeterminado. Si configuras el balanceador de cargas para usar varios servicios de backend, a los que se hace referencia mediante reglas de host y comparadores de rutas de acceso que crearás en el siguiente paso, elige uno de los servicios de backend como predeterminado para el mapa de URL.

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

    Reemplaza lo siguiente:

    • URL_MAP_NAME: un nombre para el mapa de URL

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

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

  4. Agrega servicios de backend adicionales al mapa de URL.

    Si tu mapa de URL necesita hacer referencia a dos o más servicios de backend, completa los siguientes pasos. Si el mapa de URL solo hace referencia a un servicio de backend, omite este paso.

    1. Para cada servicio de backend, agrega un comparador de rutas de acceso. Debes crear un comparador de rutas de acceso 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
    

    Reemplaza lo siguiente:

    • URL_MAP_NAME: el nombre del mapa de URL.
    • PATH_MATCHER: un nombre para el comparador de rutas de acceso.
    • BACKEND_SERVICE_NAME: el nombre del servicio de backend.
    • REGION: la región del mapa de URL.
    1. Para cada nombre de host, agrega una regla de host.

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

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

      Reemplaza lo siguiente:

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

    Crea un recurso de certificado SSL regional mediante el comando gcloud compute ssl-certificates create. Por el momento, los certificados administrados por Google no son compatibles con los balanceadores de cargas de HTTP(S) internos.

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

    Reemplaza lo siguiente:

    • CERTIFICATE: un nombre para el certificado

    • LB_CERT: la ruta al archivo del certificado con formato PEM para tu certificado autoadministrado.

    • LB_PRIVATE_KEY: la ruta al archivo de claves privadas con formato PEM para tu certificado autoadministrado.

    • REGION: la región del certificado.

    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
    

    Reemplaza lo siguiente:

    • PROXY_NAME: un nombre para el proxy HTTPS de destino.
    • URL_MAP_NAME: el nombre del mapa de URL.
    • REGION: la región para el recurso del 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
    

    Reemplaza lo siguiente:

    • ADDRESS_NAME: un nombre para el 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 creará la dirección IP

    Ejecuta este comando para ver la dirección IP reservada. Después de crear el balanceador de cargas, puedes 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]
    

    Reemplaza lo siguiente:

    • FWD_RULE: un nombre para 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 para la regla de reenvío.

    • PROXY_NAME: el nombre del proxy HTTPS de destino.

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

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

Configura registros DNS

Configura los registros DNS para cada host que agregaste al mapa de URL y apunta a la dirección IP de la regla de reenvío.

Por ejemplo, supongamos que configuraste Private Service Connect con controles de servicio de consumidor HTTP(S) con las siguientes configuraciones:

  • Un NEG de Private Service Connect que usa el servicio de destino asia-east1-cloudkms.googleapis.com.

  • Un balanceador de cargas HTTP(S) interno que usa ese NEG de Private Service Connect como backend.

  • Un mapa de URL que define una regla de host para cloudkms.example.com.

Para que esta configuración funcione de forma correcta, debes crear un registro DNS que apunte cloudkms.example.com a la dirección IP de la regla de reenvío.

Las solicitudes enviadas a cloudkms.example.com se envían al balanceador de cargas, que reenvía la solicitud a asia-east1-cloudkms.googleapis.com.

Si usas Cloud DNS para administrar DNS, consulta Agrega un registro DNS.

Verifica la configuración

  1. Crea la instancia de VM.

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

    Reemplaza lo siguiente:

    • VM_NAME: un nombre para la máquina virtual.

    • NETWORK: la red de la VM.

    • ZONE: La zona para la VM.

  2. Conéctate a la VM.

    gcloud compute ssh VM_NAME --zone=ZONE
    
  3. Usa curl para verificar la configuración. Con este comando, se establece el encabezado Host y se omite la resolución de DNS mediante la especificación de una dirección IP definida por el usuario. Puedes omitir el puerto si usas el puerto predeterminado para el protocolo, por ejemplo, si usas el puerto 443 en HTTPS.

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

    curl [-k] -s 'https://HOST:443/RESOURCE_URI' \
       -H 'Host: HOST' \
       --connect-to HOST:443:FWD_RULE_IP_ADDRESS:443
    

    Reemplaza lo siguiente:

    • HOST: el nombre de host que se configura en el mapa de URL.

    • RESOURCE_URI: el resto del URI del recurso que deseas usar para la verificación. Por ejemplo, si el balanceador de cargas reenvía las solicitudes a un extremo regional de Cloud Key Management Service, puedes usar v1/projects/<var>PROJECT_ID</var>/locations.

    • FWD_RULE_IP_ADDRESS: la dirección IP asignada al recurso de dirección IP reservada, ADDRESS_NAME, que se usa en la configuración de la regla de reenvío.

Usa Private Service Connect desde hosts locales

Si tu red local está conectada a una red de VPC, puedes conectarte al balanceador de cargas HTTP(S) interno que proporciona Private Service Connect mediante los controles de servicio de consumidor de HTTP(S).

  • Tu red local debe estar conectada a la red de VPC que contiene tu balanceador de cargas de HTTP(S) interno mediante túneles de Cloud VPN o adjuntos de Cloud Interconnect (VLAN) en la misma región que el HTTP (S) interno.

  • La red local debe tener rutas adecuadas para tu balanceador de cargas HTTP(S) interno. Asegúrate de que cada Cloud Router que administra la sesión de BGP para el túnel de Cloud VPN o el adjunto de Cloud Interconnect (VLAN) se haya configurado para anunciar el rango de direcciones IP principal de la subred que usa la regla de reenvío del balanceador de cargas HTTP(S) interno. Los Cloud Routers anuncian rutas de subred de forma predeterminada.

  • Debes configurar los sistemas locales para que los nombres de host en el mapa de URL de tu balanceador de cargas HTTP(S) interno se resuelvan en la dirección IP de la regla de reenvío del balanceador de cargas HTTP(S) interno. Puedes crear los registros DNS en los servidores de nombres locales o usar Cloud DNS.

    Si creaste los registros DNS con las zonas privadas administradas de Cloud DNS, completa los siguientes pasos:

    • Crea una política del servidor de entrada en la red de VPC a la que se conecta tu red local.

    • Identifica los puntos de entrada de reenvío entrantes, en las regiones en las que se encuentran los túneles de Cloud VPN y los adjuntos de Cloud Interconnect (VLAN), en la red de VPC a la que tu red local se conecta.

    • Configura los servidores de nombres DNS locales para reenviar las solicitudes DNS para los nombres de host en el mapa de URL a un punto de entrada de reenvío entrante de Cloud DNS.

Figura 1. Si configuras Private Service Connect, Cloud Router y los hosts locales, puedes conectarte a los servicios y las API de Google mediante extremos de servicio regionales.