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

La función 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

  • 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 la que desees 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 las 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 NEG de Private Service Connect.

gcloud beta 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: es 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 NEG de Private Service Connect.

  1. Por cada NEG que hayas creado, 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 beta 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 tu 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 crees en el siguiente paso, elige uno de los servicios de backend como predeterminado de 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 es 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 tu 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. 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.
    2. 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, spanner.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. Crea la regla de reenvío.

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

    gcloud beta compute forwarding-rules create FWD_RULE \
      --load-balancing-scheme=INTERNAL_MANAGED \
      --network=NETWORK \
      --address=FWD_RULE_IP_ADDRESS \
      --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.

    • FWD_RULE_IP_ADDRESS: la dirección IP que deseas usar para la regla de reenvío.

    • 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 de 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 de DNS para cada host que agregaste al mapa de URL y que 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-spanner.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 spanner.example.com.

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

Las solicitudes enviadas a spanner.example.com se envían al balanceador de cargas, que reenvía la solicitud a asia-east1-spanner.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, mediante 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 Spanner, puedes usar v1/projects/<var>PROJECT_ID</var>/instanceConfigs.

    • FWD_RULE_IP_ADDRESS: la dirección IP asignada a 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 a fin de anunciar el rango de direcciones IP principal de la subred que usa tu 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.