Accede a las APIs regionales de Google a través de extremos

En este documento, se explica cómo usar los extremos de Private Service Connect para conectarse a extremos regionales de las APIs de Google compatibles.

Para obtener información sobre otras opciones de configuración de Private Service Connect, consulta Private Service Connect.

Funciones

Para obtener los permisos que necesitas a fin de crear un extremo regional de Private Service Connect, pídele a tu administrador que te otorgue los siguientes roles de IAM en tu red de VPC:

Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.

Antes de comenzar

  1. Instala Google Cloud CLI. Después de la instalación, inicializa Google Cloud CLI ejecutando el siguiente comando:

    $ gcloud init

    Si usas un proveedor de identidad externo (IdP), primero debes acceder a gcloud CLI con tu identidad federada.

  2. Enable the Compute Engine, Network Connectivity Center, and Cloud DNS APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  3. Además, habilita la API para el servicio de destino al que deseas acceder a través del extremo de Private Service Connect. Por ejemplo, si deseas acceder a spanner.me-central2.rep.googleapis.com, habilita la API de Cloud Spanner. Private Service Connect no habilita automáticamente ninguna API.

  4. Asegúrate de que las reglas de firewall de salida permitan el tráfico al extremo. La configuración predeterminada del firewall para una red de VPC permite este tráfico, porque contiene una regla de permiso de salida implícita. Verifica que no hayas creado una regla de salida de prioridad más alta que bloquee el tráfico.

Crea un extremo regional de Private Service Connect

Puedes crear un extremo de Private Service Connect regional a fin de enviar solicitudes a un extremo regional para una API de Google de destino.

Para obtener una lista de las extremos regionales, consulta Extremos de servicios regionales.

Console

  1. En la Google Cloud consola, ve a la página Private Service Connect.

    Ir a Private Service Connect

  2. Haz clic en Conectar extremo.

  3. En Target, selecciona Google API.

  4. En la lista Alcance, selecciona Regional.

  5. En la lista Región, selecciona la región que deseas usar.

  6. En la lista Servicio de destino, selecciona el servicio al que deseas acceder.

  7. En Nombre del extremo, ingresa un nombre para el extremo.

  8. En Red, selecciona una red.

  9. En Subred, selecciona una subred.

  10. En Dirección IP, realiza una de las siguientes acciones para configurar una dirección IP:

    • Selecciona Asignación automática para asignar y reservar automáticamente una dirección IP nueva.
    • Selecciona una dirección IP reservada de la lista.
    • Haz clic en Crear dirección IP para reservar una dirección IP nueva.
  11. Opcional: Para que el extremo esté disponible desde todas las regiones de la red de VPC, selecciona Habilitar el acceso global.

  12. Haz clic en Agregar extremo.

gcloud

Usa el comando gcloud network-connectivity regional-endpoints create.

gcloud network-connectivity regional-endpoints create ENDPOINT_NAME \
    --region=REGION \
    --address=ADDRESS \
    --network=projects/PROJECT_ID/global/networks/NETWORK_NAME \
    --subnetwork=projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME \
    --target-google-api=REP_DNS_NAME

Si deseas que el extremo esté disponible para los recursos en otras regiones, agrega la marca --enable-global-access.

Reemplaza lo siguiente:

  • ENDPOINT_NAME: un nombre para el extremo.

  • REGION: región en la que deseas crear el extremo.

  • ADDRESS: Es la dirección IPv4 o IPv6 que deseas usar para el extremo. Si se omite, se asigna una dirección IPv4 de la subred. Usa uno de los siguientes formatos:

    • Dirección IPv4, por ejemplo, 10.0.0.2.
    • Es el URI del recurso de dirección IPv4 o IPv6, por ejemplo, projects/PROJECT_ID/regions/REGION/addresses/ADDRESS_NAME.
  • PROJECT_ID: Es el proyecto en el que crearás el extremo.

  • NETWORK_NAME: nombre de la red de VPC para el extremo.

  • SUBNET_NAME: Es la subred a la que conectas el extremo.

  • REP_DNS_NAME: Es el nombre de host del extremo del servicio regional al que te conectas. Por ejemplo, spanner.me-central2.rep.googleapis.com

API

Usa el método projects.locations.regionalEndpoints.create.

Método HTTP y URL:

POST https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/regionalEndpoints?regionalEndpointId=ENDPOINT_NAME
{
  "accessType": "REGIONAL",
  "address": "ADDRESS",
  "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME",
  "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME",
  "targetGoogleApi": "REP_DNS_NAME"
}

Reemplaza lo siguiente:

  • PROJECT_ID: Es el ID del proyecto del extremo.
  • REGION: región en la que deseas crear el extremo.
  • ENDPOINT_NAME: un nombre para el extremo.
  • ADDRESS: Es la dirección IPv4 o IPv6 que deseas usar para el extremo. Si se omite, se asigna una dirección IPv4 de la subred. Usa uno de los siguientes formatos:
    • Dirección IPv4, por ejemplo, 10.0.0.2.
    • Es el URI del recurso de dirección IPv4 o IPv6, por ejemplo, projects/PROJECT_ID/regions/REGION/addresses/ADDRESS_NAME.
  • NETWORK_NAME: nombre de la red de VPC para el extremo.
  • SUBNET_NAME: Es el nombre de la subred a la que deseas conectar el extremo.
  • REP_DNS_NAME: Es el nombre de host del extremo del servicio regional al que deseas conectarte. Por ejemplo, spanner.me-central2.rep.googleapis.com

Enumerar extremos

Puedes enumerar todos los extremos configurados.

Console

  1. En la Google Cloud consola, ve a la página Private Service Connect.

    Ir a Private Service Connect

  2. Haz clic en la pestaña Extremos conectados.

    Se muestran todos los extremos, incluidos los que tienen objetivos de extremos regionales.

gcloud

Usa el comando gcloud network-connectivity regional-endpoints list.

gcloud network-connectivity regional-endpoints list \
    --region=REGION

Reemplaza REGION por la región de los extremos que deseas enumerar.

API

Usa el método projects.locations.regionalEndpoints.list.

GET https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/regionalEndpoints

Reemplaza lo siguiente:

  • PROJECT_ID: Es el ID del proyecto del extremo.
  • REGION: Es la región de los extremos que deseas enumerar.

Verifica que el extremo funcione

Crea una instancia de máquina virtual (VM) en la red de VPC y la región en las que se configura el extremo. Ejecuta el siguiente comando en la VM para verificar que el extremo de Private Service Connect funcione. Los extremos no responden a las solicitudes de ping (ICMP).

  • Para verificar un extremo IPv4, haz lo siguiente:

    curl --connect-to REP_DNS_NAME:443:ADDRESS:443 \
    'https://REP_DNS_NAME/PATH'
    
  • Para verificar un extremo IPv6, haz lo siguiente:

    curl -6 --connect-to REP_DNS_NAME:443:[ADDRESS]:443 \
    'https://REP_DNS_NAME/PATH'
    

Reemplaza lo siguiente:

  • REP_DNS_NAME: Es el nombre DNS público del extremo regional de destino, por ejemplo, spanner.me-central2.rep.googleapis.com.
  • ADDRESS: la dirección IP del extremo.
  • PATH: la ruta a un recurso que entrega este servicio. Por ejemplo, muchos servicios ofrecen un documento de descubrimiento con la ruta $discovery/rest?version=v1.

En la siguiente solicitud de ejemplo, se prueba que un extremo con la dirección IP 192.168.1.100 puede solicitar el documento de descubrimiento de la API de Cloud Spanner del extremo regional en me-central2.

curl --connect-to spanner.me-central2.rep.googleapis.com:443:192.168.1.100:443 \
'https://spanner.me-central2.rep.googleapis.com/$discovery/rest?version=v1'

Crea una entrada de DNS privada para el extremo

Debes crear entradas de DNS privadas para que los clientes puedan dirigir solicitudes a tu extremo de Private Service Connect.

Te recomendamos que crees una zona privada que use el mismo nombre de host que el extremo regional de destino: SERVICE.REGION.rep.DOMAIN y que crees un registro de zona en esa zona.

Por ejemplo, si tu extremo de Private Service Connect tiene un destino de spanner.me-central2.rep.googleapis.com, crea una zona privada para spanner.me-central2.rep.googleapis.com que contenga un registro de vértice para spanner.me-central2.rep.googleapis.com. Crear registros en el vértice del dominio significa que puedes acceder al nombre de host público de otros extremos regionales, por ejemplo, logging.me-central2.rep.googleapis.com.

En las siguientes secciones, se describe cómo usar Cloud DNS para crear una zona privada y un registro DNS de vértice.

Crea una zona privada

Console

  1. En la consola de Google Cloud , ve a la página Crear una zona de DNS.

    Ir a Crear una zona de DNS

  2. En Tipo de zona, selecciona Privada.

  3. En Nombre de zona, ingresa un nombre. Por ejemplo, si tu extremo de Private Service Connect apunta a spanner.me-central2.rep.googleapis.com, ingresa spanner-me-central2-rep-googleapis-com.

  4. En Nombre de DNS, especifica el nombre de host del extremo regional de destino seguido de un punto final. Por ejemplo, spanner.me-central2.rep.googleapis.com.

  5. Opcional: Agrega una descripción.

  6. En Opciones, selecciona Predeterminada (privada).

  7. Selecciona las redes de VPC en las que quieres que la zona privada sea visible. Solo las redes de VPC que selecciones tienen autorización para consultar registros en la zona.

  8. Haz clic en Crear.

gcloud

Ejecuta el comando dns managed-zones create:

gcloud dns managed-zones create ZONE_NAME \
    --dns-name=REP_DNS_NAME. \
    --networks=VPC_NETWORK_LIST \
    --visibility=private \
    --description="Private zone for REP_DNS_NAME"

Reemplaza lo siguiente:

  • ZONE_NAME: Un nombre para tu zona, por ejemplo, spanner-me-central2-rep-googleapis.com.
  • DESCRIPTION: Es una descripción para tu zona
  • REP_DNS_NAME: Es el sufijo de DNS para tu zona. Usa el nombre de host del extremo regional de destino, por ejemplo, spanner.me-central2.rep.googleapis.com.
  • VPC_NETWORK_LIST: Es una lista delimitada por comas de redes de VPC que están autorizadas a consultar la zona.

API

Envía una solicitud POST mediante el método managedZones.create:

Método HTTP y URL:

POST https://dns.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones

Cuerpo JSON de la solicitud:

{
  "name": "ZONE_NAME",
  "dnsName": "REP_DNS_NAME.",
  "description": "DESCRIPTION",
  "visibility": "private",
  "privateVisibilityConfig": {
    "kind": "dns#managedZonePrivateVisibilityConfig",
    "networks": [
      {
        "kind": "dns#managedZonePrivateVisibilityConfigNetwork",
        "networkUrl": "NETWORK_1_URL"
      },
      {
        "kind": "dns#managedZonePrivateVisibilityConfigNetwork",
        "networkUrl": "NETWORK_2_URL"
      }
    ]
  }
}

Reemplaza lo siguiente:

  • PROJECT_ID: Es el ID del proyecto de la zona del DNS.
  • ZONE_NAME: Es el nombre de la zona privada que creaste para este extremo regional.
  • REP_DNS_NAME: Es el FQDN del registro que creas. Usa el nombre de host del extremo regional de destino, por ejemplo, spanner.me-central2.rep.googleapis.com.
  • DESCRIPTION: Es una descripción de la zona de DNS.
  • NETWORK_1_URL y NETWORK_2_URL: Son las URLs completas de las redes de VPC que están autorizadas para consultar la zona, por ejemplo, https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK_NAME.

Agrega un registro DNS a la zona

Console

  1. En la consola de Google Cloud , ve a la página Zonas de Cloud DNS.

    Ir a Zonas de Cloud DNS

  2. Haz clic en el nombre de la zona administrada a la que deseas agregar el registro.

  3. En la página Detalles de la zona, haz clic en Agregar estándar.

  4. En la página Crear conjunto de registros, deja en blanco el campo Nombre de DNS. Si dejas el campo en blanco, se creará un registro de recursos en la parte superior del dominio.

  5. En Tipo de registro del recurso, selecciona A.

  6. En el campo Dirección IPv4, ingresa o selecciona la dirección IP del extremo de Private Service Connect.

  7. Haz clic en Crear.

gcloud

Para agregar un conjunto de registros de recursos, usa el comando gcloud dns record-sets create:

gcloud dns record-sets create REP_DNS_NAME \
    --rrdatas=ADDRESS \
    --type=RECORD_TYPE \
    --ttl=TTL \
    --zone=ZONE_NAME

Reemplaza lo siguiente:

  • REP_DNS_NAME: Es el FQDN del registro que creas. Usa el nombre de host del extremo regional de destino, por ejemplo, spanner.me-central2.rep.googleapis.com.
  • ADDRESS: dirección IP del extremo de Private Service Connect.
  • RECORD_TYPE: Es el tipo de registro DNS, como A para registros IPv4 o AAAA para registros IPv6.
  • TTL: Es el TTL en segundos que el agente de resolución almacena en caché este conjunto de registros de recursos, por ejemplo, 300.
  • ZONE_NAME: Es el nombre de la zona privada que creaste para este extremo regional.

API

Para agregar un conjunto de registros de recursos, usa el método resourceRecordSets.create:

Método HTTP y URL:

POST https://www.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones/ZONE_NAME/rrsets

Cuerpo JSON de la solicitud:

{
  "name": "REP_DNS_NAME.",
  "type": "RECORD_TYPE",
  "ttl": TTL,
  "rrdatas": [ "ADDRESS" ]
}

Reemplaza lo siguiente:

  • PROJECT_ID: Es el ID del proyecto de la zona del DNS.
  • ZONE_NAME: Es el nombre de la zona privada que creaste para este extremo regional.
  • REP_DNS_NAME: Es el FQDN del registro que creas. Usa el nombre de host del extremo regional de destino, por ejemplo, spanner.me-central2.rep.googleapis.com.
  • RECORD_TYPE: Es el tipo de registro DNS, como A para registros IPv4 o AAAA para registros IPv6.
  • TTL: Es el TTL en segundos que el agente de resolución almacena en caché este conjunto de registros de recursos, por ejemplo, 300.
  • ADDRESS: dirección IP del extremo de Private Service Connect.

Configura los clientes para usar el nombre del extremo privado

Debes configurar los clientes para que usen los nombres de DNS privados en lugar de los públicos de DNS. Consulta la documentación de tu cliente o biblioteca cliente para obtener información sobre cómo configurarla con el fin de usar extremos personalizados. En las siguientes páginas, se incluyen los pasos de configuración para algunos clientes comunes:

Obtén información detallada sobre un extremo

Puedes ver todos los detalles de configuración de un extremo.

gcloud

Usa el comando gcloud network-connectivity regional-endpoints describe.

gcloud network-connectivity regional-endpoints describe \
    ENDPOINT_NAME --region=REGION

Reemplaza lo siguiente:

  • ENDPOINT_NAME: El nombre del extremo.
  • REGION: la región del extremo.

API

Usa el comando projects.locations.regionalEndpoints.get.

GET https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/regionalEndpoints/ENDPOINT_NAME

Reemplaza lo siguiente:

  • PROJECT_ID: Es el ID del proyecto del extremo.
  • REGION: Es la región de los extremos que deseas enumerar.
  • ENDPOINT_NAME: El nombre del extremo.

Actualiza la configuración de acceso global

No puedes actualizar un extremo de Private Service Connect que tenga un destino de extremo regional. Si necesitas cambiar el parámetro de configuración de acceso global del extremo, borra el extremo y crea uno nuevo con el parámetro de configuración de acceso global requerido.

Borra un extremo †

Puedes borrar un extremo.

gcloud

Usa el comando gcloud network-connectivity regional-endpoints delete.

gcloud network-connectivity regional-endpoints delete \
    ENDPOINT_NAME --region=REGION

Reemplaza lo siguiente:

  • ENDPOINT_NAME: El nombre del extremo.
  • REGION: la región del extremo.

API

Usa el comando projects.location.regionalEndpoints.delete.

DELETE https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/regionalEndpoints/ENDPOINT_NAME

Reemplaza lo siguiente:

  • PROJECT_ID: Es el ID del proyecto del extremo.
  • REGION: la región del extremo.
  • ENDPOINT_NAME: El nombre del extremo.

Accede a los extremos desde redes híbridas

Los clientes en las redes conectadas a Google Cloud con adjuntos de VLAN para los túneles de Cloud Interconnect o Cloud VPN pueden llegar a los extremos de Private Service Connect.

  • El adjunto de VLAN o el túnel de Cloud VPN deben finalizar en la misma red de VPC (o red de VPC compartida) que el extremo. Los clientes en redes de VPC de intercambio de tráfico no pueden alcanzar extremos.

  • El tráfico del cliente desde los adjuntos de VLAN o los túneles de Cloud VPN puede llegar a los extremos en otra región si se configura el acceso global.

  • Dataplane v1 y Dataplane v2 son compatibles con los adjuntos de VLAN. Para obtener más información sobre las versiones de Dataplane, consulta Dataplane v2.

Debes configurar los sistemas en la otra red para que puedan realizar consultas a tus zonas de DNS privadas.

Si implementaste las zonas del DNS privado con Cloud DNS, completa los siguientes pasos:

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

  • Identifica los puntos de entrada de reenvío entrantes en la región en la que se encuentra el adjunto de VLAN o el túnel de Cloud VPN, en la red de VPC a la que tu otra red se conecta.

  • Configura sistemas y servidores de nombres de DNS en la otra red para reenviar los Nombres de DNS para los extremos a un punto de entrada de reenvío entrante en la misma región que el adjunto de VLAN o el túnel de Cloud VPN que se conecta a la red de VPC.