Acceder a las APIs regionales de Google a través de endpoints
En este documento se explica cómo usar los puntos finales de Private Service Connect para conectarse a los puntos finales regionales de las APIs de Google compatibles.
Para obtener información sobre otras configuraciones de Private Service Connect, consulta Private Service Connect.
Roles
Para obtener los permisos que necesitas para crear un punto final de Private Service Connect regional, pide a tu administrador que te asigne los siguientes roles de gestión de identidades y accesos en tu red de VPC:
-
Rol Administrador de red de Compute (
roles/compute.networkAdmin
) -
Rol Administrador de DNS (
roles/dns.admin
)
Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.
También puedes conseguir los permisos necesarios a través de roles personalizados u otros roles predefinidos.
Antes de empezar
Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:
$ gcloud init
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
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 theserviceusage.services.enable
permission. Learn how to grant roles.Además, habilita la API del servicio de destino al que quieras acceder a través del punto final de Private Service Connect. Por ejemplo, si quieres acceder a
spanner.me-central2.rep.googleapis.com
, habilita la API Cloud Spanner. Private Service Connect no habilita ninguna API automáticamente.Asegúrate de que las reglas de cortafuegos de salida permitan el tráfico al endpoint. La configuración predeterminada del cortafuegos de una red de VPC permite este tráfico porque contiene una regla de salida implícita. Comprueba que no hayas creado una regla de salida con mayor prioridad que bloquee el tráfico.
Crear un endpoint de Private Service Connect regional
Puedes crear un endpoint regional de Private Service Connect para enviar solicitudes a un endpoint regional de una API de Google de destino.
Para ver una lista de los endpoints regionales admitidos, consulta Endpoints de servicio regionales.
Consola
En la Google Cloud consola, ve a la página Private Service Connect.
Haz clic en Conectar punto final.
En Destino, selecciona API de Google.
En la lista Ámbito, selecciona Regional.
En la lista Región, selecciona la región que quieras usar.
En la lista Servicio de destino, selecciona el servicio al que quieras acceder.
En Nombre del endpoint, escribe un nombre para el endpoint.
En Red, selecciona una red.
En Subred, seleccione una subred.
En Dirección IP, haga una de las siguientes acciones para configurar una dirección IP:
- Selecciona Asignar automáticamente para asignar y reservar automáticamente una nueva dirección IP.
- Selecciona una dirección IP reservada de la lista.
- Haz clic en Crear dirección IP para reservar una nueva dirección IP.
Opcional: Para que el endpoint esté disponible en todas las regiones de la red de VPC, selecciona Habilitar el acceso global.
Haz clic en Añadir endpoint.
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 quieres que el endpoint esté disponible para los recursos de otras regiones, añade la marca --enable-global-access
.
Haz los cambios siguientes:
ENDPOINT_NAME
: el nombre del endpoint.REGION
: la región en la que quieres crear el endpoint.ADDRESS
: la dirección IPv4 o IPv6 que quieras usar para el endpoint. Si se omite, se asigna una dirección IPv4 de la subred. Se debe utilizar uno de los formatos indicados a continuación.- Dirección IPv4 (por ejemplo,
10.0.0.2
). - URI de recurso de dirección IPv4 o IPv6. Por ejemplo:
projects/PROJECT_ID/regions/REGION/addresses/ADDRESS_NAME
.
- Dirección IPv4 (por ejemplo,
PROJECT_ID
: el proyecto en el que vas a crear el endpoint.NETWORK_NAME
: nombre de la red de VPC del endpoint.SUBNET_NAME
: la subred a la que vas a conectar el endpoint.REP_DNS_NAME
: el nombre de host del endpoint del servicio regional al que te estás conectando. 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"
}
Haz los cambios siguientes:
PROJECT_ID
: el ID de proyecto del endpoint.REGION
: la región en la que quieres crear el endpoint.ENDPOINT_NAME
: el nombre del endpoint.ADDRESS
: la dirección IPv4 o IPv6 que quieras usar para el endpoint. 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
). - URI de recurso de dirección IPv4 o IPv6. Por ejemplo:
projects/PROJECT_ID/regions/REGION/addresses/ADDRESS_NAME
.
- Dirección IPv4 (por ejemplo,
NETWORK_NAME
: nombre de la red de VPC del endpoint.SUBNET_NAME
: el nombre de la subred a la que quieras conectar el endpoint.REP_DNS_NAME
: el nombre de host del endpoint del servicio regional al que quieras conectarte. Por ejemplo,spanner.me-central2.rep.googleapis.com
.
Permiso para mostrar puntos finales.
Puedes enumerar todos los endpoints configurados.
Consola
En la Google Cloud consola, ve a la página Private Service Connect.
Haz clic en la pestaña Puntos finales conectados.
Se muestran todos los endpoints, incluidos los que tienen destinos de endpoint regionales.
gcloud
Usa el comando gcloud network-connectivity regional-endpoints list
.
gcloud network-connectivity regional-endpoints list \ --region=REGION
Sustituye REGION
por la región de los endpoints que quieras consultar.
API
Usa el método projects.locations.regionalEndpoints.list
.
GET https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/regionalEndpoints
Haz los cambios siguientes:
PROJECT_ID
: el ID de proyecto del endpoint.REGION
: la región de los endpoints que quieras listar.
Verificar que el endpoint funciona
Crea una instancia de máquina virtual en la red de VPC y en la región en la que esté configurado el endpoint. Ejecuta el siguiente comando en la VM para verificar que el endpoint de Private Service Connect funciona. Los endpoints no responden a las solicitudes de ping (ICMP).
Para verificar un endpoint IPv4, haz lo siguiente:
curl --connect-to REP_DNS_NAME:443:ADDRESS:443 \ 'https://REP_DNS_NAME/PATH'
Para verificar un endpoint IPv6, haz lo siguiente:
curl -6 --connect-to REP_DNS_NAME:443:[ADDRESS]:443 \ 'https://REP_DNS_NAME/PATH'
Haz los cambios siguientes:
REP_DNS_NAME
: el nombre de DNS público del endpoint regional de destino. Por ejemplo,spanner.me-central2.rep.googleapis.com
.ADDRESS
: la dirección IP del endpoint.PATH
: la ruta a un recurso que ofrece este servicio. Por ejemplo, muchos servicios ofrecen un documento de descubrimiento con la ruta$discovery/rest?version=v1
.
En el siguiente ejemplo de solicitud se comprueba que un endpoint con la dirección IP 192.168.1.100
puede solicitar el documento de descubrimiento de la API Cloud Spanner desde el endpoint regional de 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'
Crear una entrada DNS privada para el endpoint
Debes crear entradas de DNS privadas para que los clientes puedan dirigir las solicitudes a tu endpoint de Private Service Connect.
Te recomendamos que crees una zona privada que use el mismo nombre de host que el endpoint regional de destino:
SERVICE.REGION.rep.DOMAIN
y que crees un registro de nivel superior en esa zona.
Por ejemplo, si tu punto final de Private Service Connect tiene el destino spanner.me-central2.rep.googleapis.com
, crea una zona privada para spanner.me-central2.rep.googleapis.com
que contenga un registro de nivel superior 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 endpoints regionales, como 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 raíz.
Crear una zona privada
Consola
En la consola de Google Cloud, ve a la página Crear una zona DNS. Google Cloud
En Tipo de zona, selecciona Privada.
En Nombre de la zona, escribe un nombre. Por ejemplo, si tu punto final de Private Service Connect apunta a
spanner.me-central2.rep.googleapis.com
, introducespanner-me-central2-rep-googleapis-com
.En Nombre de DNS, especifica el nombre de host del endpoint regional de destino seguido de un punto. Por ejemplo,
spanner.me-central2.rep.googleapis.com.
.Opcional: Añade una descripción.
En Opciones, selecciona Predeterminado (privado).
Selecciona las redes de VPC en las que quieras que se vea la zona privada. Solo las redes VPC que selecciones estarán autorizadas para consultar registros en la zona.
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"
Haz los cambios siguientes:
ZONE_NAME
: un nombre para tu zona (por ejemplo,spanner-me-central2-rep-googleapis.com
).DESCRIPTION
: una descripción de la zonaREP_DNS_NAME
: el sufijo DNS de tu zona. Usa el nombre de host del endpoint regional de destino. Por ejemplo,spanner.me-central2.rep.googleapis.com
.VPC_NETWORK_LIST
: lista delimitada por comas de redes de VPC autorizadas para 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"
}
]
}
}
Haz los cambios siguientes:
PROJECT_ID
: el ID de proyecto de la zona DNS.ZONE_NAME
: el nombre de la zona privada que has creado para este endpoint regional.REP_DNS_NAME
: el nombre de dominio completo del registro que vas a crear. Usa el nombre de host del endpoint regional de destino (por ejemplo,spanner.me-central2.rep.googleapis.com
).DESCRIPTION
: descripción de la zona DNS.NETWORK_1_URL
yNETWORK_2_URL
: las URLs completas de las redes de VPC autorizadas para consultar la zona. Por ejemplo,https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK_NAME
.
Añadir un registro DNS a la zona
Consola
En la Google Cloud consola, ve a la página Zonas de Cloud DNS.
Haz clic en el nombre de la zona gestionada a la que quieras añadir el registro.
En la página Detalles de la zona, haga clic en Añadir estándar.
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 el vértice del dominio.
En Tipo de registro del recurso, selecciona
A
.En el campo Dirección IPv4, introduce o selecciona la dirección IP del endpoint de Private Service Connect.
Haz clic en Crear.
gcloud
Para añadir un conjunto de registros de recursos, usa el gcloud dns record-sets create
comando:
gcloud dns record-sets create REP_DNS_NAME \ --rrdatas=ADDRESS \ --type=RECORD_TYPE \ --ttl=TTL \ --zone=ZONE_NAME
Haz los cambios siguientes:
REP_DNS_NAME
: el nombre de dominio completo del registro que vas a crear. Usa el nombre de host del endpoint regional de destino (por ejemplo,spanner.me-central2.rep.googleapis.com
).ADDRESS
: la dirección IP del endpoint de Private Service Connect.RECORD_TYPE
: el tipo de registro DNS, comoA
para los registros IPv4 oAAAA
para los registros IPv6.TTL
: el TTL en segundos que la resolución almacena en caché este conjunto de registros de recursos. Por ejemplo,300
.ZONE_NAME
: el nombre de la zona privada que has creado para este endpoint regional.
API
Para añadir 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" ]
}
Haz los cambios siguientes:
PROJECT_ID
: el ID de proyecto de la zona DNS.ZONE_NAME
: el nombre de la zona privada que has creado para este endpoint regional.REP_DNS_NAME
: el nombre de dominio completo del registro que vas a crear. Usa el nombre de host del endpoint regional de destino (por ejemplo,spanner.me-central2.rep.googleapis.com
).RECORD_TYPE
: el tipo de registro DNS, comoA
para los registros IPv4 oAAAA
para los registros IPv6.TTL
: el TTL en segundos que la resolución almacena en caché este conjunto de registros de recursos. Por ejemplo,300
.ADDRESS
: la dirección IP del endpoint de Private Service Connect.
Configurar los clientes para que usen el nombre del endpoint privado
Debes configurar los clientes para que usen los nombres de DNS privados en lugar de los públicos. 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 páginas siguientes 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.
Obtener información detallada sobre un endpoint
Puede ver los detalles de configuración de un endpoint.
gcloud
Usa el comando gcloud network-connectivity regional-endpoints describe
.
gcloud network-connectivity regional-endpoints describe \ ENDPOINT_NAME --region=REGION
Haz los cambios siguientes:
ENDPOINT_NAME
: el nombre del endpoint.REGION
: la región del endpoint.
API
Usa el comando projects.locations.regionalEndpoints.get
.
GET https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/regionalEndpoints/ENDPOINT_NAME
Haz los cambios siguientes:
PROJECT_ID
: el ID de proyecto del endpoint.REGION
: la región de los endpoints que quieras listar.ENDPOINT_NAME
: el nombre del endpoint.
Actualizar la configuración de acceso global
No puedes actualizar un endpoint de Private Service Connect que tenga un destino de endpoint regional. Si necesitas cambiar el ajuste de acceso global del endpoint, elimina el endpoint y crea otro con el ajuste de acceso global que necesites.
Eliminar un punto final
Puede eliminar un endpoint.
gcloud
Usa el comando gcloud network-connectivity regional-endpoints delete
.
gcloud network-connectivity regional-endpoints delete \ ENDPOINT_NAME --region=REGION
Haz los cambios siguientes:
ENDPOINT_NAME
: el nombre del endpoint.REGION
: la región del endpoint.
API
Usa el comando projects.location.regionalEndpoints.delete
.
DELETE https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/regionalEndpoints/ENDPOINT_NAME
Haz los cambios siguientes:
PROJECT_ID
: el ID de proyecto del endpoint.REGION
: la región del endpoint.ENDPOINT_NAME
: el nombre del endpoint.
Acceder a endpoints desde redes híbridas
Los clientes de redes conectadas a Google Cloud mediante vinculaciones de VLAN para Cloud Interconnect o túneles de Cloud VPN pueden acceder a los puntos finales de Private Service Connect.La vinculación de VLAN o el túnel de Cloud VPN deben terminar en la misma red de VPC (o red de VPC compartida) que el endpoint. Los clientes de las redes de VPC emparejadas no pueden acceder a los endpoints.
El tráfico de clientes de las vinculaciones de VLAN o los túneles de Cloud VPN puede llegar a los endpoints de otra región si se configura el acceso global.
Se admiten tanto Dataplane v1 como Dataplane v2 para las vinculaciones de VLAN. Para obtener más información sobre las versiones de Dataplane, consulta Dataplane v2.
Debes configurar los sistemas de la otra red para que puedan hacer consultas a tus zonas DNS privadas.
Si has implementado las zonas DNS privadas con Cloud DNS, sigue estos pasos:
Crea una política de servidor entrante en la red VPC a la que se conecta tu otra red.
Identifica los puntos de entrada del reenviador entrante en la región en la que se encuentra tu vinculación de VLAN o tu túnel de Cloud VPN, en la red de VPC a la que se conecta tu otra red.
Configura los sistemas y los servidores de nombres DNS de la otra red para que reenvíen los nombres de DNS del endpoint a un punto de entrada de reenviador entrante de la misma región que la conexión VLAN o el túnel de Cloud VPN que se conecta a la red de VPC.