Accedere alle API di Google regionali tramite endpoint

Questo documento spiega come utilizzare gli endpoint Private Service Connect per connettersi agli endpoint regionali delle API di Google supportate.

Per informazioni su altre configurazioni di Private Service Connect, consulta Private Service Connect.

Ruoli

Per ottenere le autorizzazioni necessarie per creare un endpoint Private Service Connect regionale, chiedi all'amministratore di concederti i seguenti ruoli IAM nella tua rete VPC:

Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.

Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Prima di iniziare

  1. After installing the Google Cloud CLI, initialize it by running the following command:

    $ gcloud init

    If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

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

    Enable the APIs

  3. Abilita le API di Google a cui vuoi accedere tramite gli endpoint Private Service Connect utilizzando la pagina API e servizi nella console Google Cloud. Private Service Connect non attiva automaticamente alcuna API.

  4. Assicurati che le regole firewall in uscita consentano il traffico verso l'endpoint. La configurazione predefinita del firewall per una rete VPC consente questo traffico perché contiene una regola di autorizzazione in uscita implicita. Verifica di non aver creato una regola in uscita con priorità più alta che blocca il traffico.

  5. Leggi le limitazioni.

Creare un endpoint Private Service Connect regionale

Puoi creare un endpoint Private Service Connect regionale per inviare richieste a un endpoint regionale per un'API di Google di destinazione.

Per un elenco degli endpoint regionali supportati, consulta Endpoint di servizio a livello di area geografica.

I nomi host degli endpoint regionali hanno due forme:

  • Nomi host pubblici: SERVICE.REGION.rep.DOMAIN
  • Nomi host privati: SERVICE.REGION.p.rep.DOMAIN

    Il nome host privato aggiunge un sottodominio p tra REGION e rep.

Quando configuri l'API Google di destinazione, specifica la forma privata del nome host, ad esempio spanner.me-central2.p.rep.googleapis.com. Dopo aver creato l'endpoint, crea un record DNS privato per l'endpoint utilizzando lo stesso nome host dell'endpoint regionale privato.

Sebbene tu possa configurare l'endpoint Private Service Connect con qualsiasi nome, per facilitare la manutenzione ti consigliamo di utilizzare il nome del servizio dell'API di Google di destinazione, in modo che il nome DNS corrisponda al nome dell'endpoint. Ad esempio, se l'endpoint ha un target di spanner.me-central2.p.rep.googleapis.com, utilizza spanner come nome dell'endpoint.

gcloud

Utilizza il comando gcloud network-connectivity regional-endpoints create.

gcloud network-connectivity regional-endpoints create ENDPOINT_NAME \
    --region=REGION \
    --address=ADDRESS \
    --network=NETWORK_URI \
    --subnetwork=SUBNET_URI \
    --target-google-api=REP_NAME

Se vuoi rendere l'endpoint disponibile per le risorse in altre regioni, aggiungi il flag --enable-global-access.

Sostituisci quanto segue:

  • ENDPOINT_NAME: un nome per l'endpoint.

  • REGION: la regione in cui vuoi creare l'endpoint.

  • ADDRESS: l'indirizzo IPv4 o IPv6 da utilizzare per l'endpoint. Se omesso, viene allocato un indirizzo IPv4 della subnet. Utilizza uno dei seguenti formati:

    • Indirizzo IPv4, ad esempio 10.0.0.2.
    • URI della risorsa indirizzo IPv4 o IPv6, ad esempio projects/PROJECT_ID/regions/REGION/addresses/ADDRESS_NAME.
  • NETWORK_URI: l'URI della rete VPC per l'endpoint:projects/PROJECT_ID/global/networks/NETWORK_NAME.

  • SUBNET_URI: l'URI della subnet a cui vuoi collegare l'endpoint: projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME.

  • REP_NAME: il nome dell'endpoint del servizio regionale a cui vuoi connetterti. Ad esempio, spanner.me-central2.p.rep.googleapis.com.

API

Utilizza il metodo projects.locations.regionalEndpoints.create.

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_NAME"
}

Sostituisci quanto segue:

  • PROJECT_ID: l'ID progetto dell'endpoint.
  • REGION: la regione in cui vuoi creare l'endpoint.
  • ENDPOINT_NAME: un nome per l'endpoint.
  • ADDRESS: l'indirizzo IPv4 o IPv6 da utilizzare per l'endpoint. Se omesso, viene allocato un indirizzo IPv4 della subnet. Utilizza uno dei seguenti formati:
    • Indirizzo IPv4, ad esempio 10.0.0.2.
    • URI della risorsa indirizzo IPv4 o IPv6, ad esempio projects/PROJECT_ID/regions/REGION/addresses/ADDRESS_NAME.
  • NETWORK_NAME: il nome della rete VPC per l'endpoint.
  • SUBNET_NAME: il nome della subnet a cui vuoi collegare l'endpoint.
  • REP_NAME: il nome dell'endpoint del servizio regionale a cui vuoi connetterti. Ad esempio, spanner.me-central2.p.rep.googleapis.com.

Elenca endpoint

Puoi elencare tutti gli endpoint configurati.

Console

  1. Nella console Google Cloud, vai alla pagina Private Service Connect.

    Vai a Private Service Connect

  2. Fai clic sulla scheda Endpoint collegati.

    Vengono visualizzati tutti gli endpoint, inclusi quelli con target endpoint regionali.

gcloud

Utilizza il comando gcloud network-connectivity regional-endpoints list.

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

Sostituisci REGION con la regione degli endpoint che vuoi elencare.

API

Utilizza il metodo projects.locations.regionalEndpoints.list.

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

Sostituisci quanto segue:

  • PROJECT_ID: l'ID progetto dell'endpoint.
  • REGION: la regione degli endpoint da elencare.

Verificare il funzionamento dell'endpoint

Crea un'istanza di una macchina virtuale (VM) nella rete VPC e nella regione in cui è configurato l'endpoint. Esegui il seguente comando sulla VM per verificare che l'endpoint Private Service Connect funzioni. Gli endpoint non rispondono alle richieste ping (ICMP).

  • Per verificare un endpoint IPv4:

    curl --connect-to \
    SERVICE.REGION.p.rep.DOMAIN:443:ENDPOINT_IPV4_ADDRESS:443 \
    'https://SERVICE.REGION.p.rep.DOMAIN/PATH'
    
  • Per verificare un endpoint IPv6:

    curl -6 --connect-to \
    SERVICE.REGION.p.rep.DOMAIN:443:[ENDPOINT_IPV6_ADDRESS]:443 \
    'https://SERVICE.REGION.p.rep.DOMAIN/PATH'
    

Sostituisci quanto segue:

  • SERVICE: il servizio a cui punta l'endpoint. Ad esempio, spanner o logging.
  • REGION: la regione dell'endpoint.
  • DOMAIN: il dominio del servizio. Ad esempio, googleapis.com.
  • ENDPOINT_IP: l'indirizzo IP dell'endpoint.
  • PATH: il percorso di una risorsa pubblicata da questo servizio. Ad esempio, molti servizi offrono un documento di rilevamento con il percorso$discovery/rest?version=v1.

La seguente richiesta di esempio verifica che un endpoint con indirizzo IP 192.168.1.100 possa richiedere il documento di scoperta dell'API Cloud Spanner dall'endpoint regionale in me-central2.

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

Crea una voce DNS privata per l'endpoint

Devi creare voci DNS per gli endpoint in questo formato: SERVICE.REGION.p.rep.DOMAIN. Puoi utilizzare Cloud DNS per creare le voci DNS.

  1. Crea una zona DNS privata con questo formato: REGION.p.rep.DOMAIN.

    Ad esempio, se vuoi utilizzare un endpoint regionale nel dominio googleapis.com, nella regione me-central2, crea una zona DNS privata con questo nome:me-central2.p.rep.googleapis.com.

  2. Crea un record DNS che rimandi all'indirizzo IP assegnato all'endpoint. Il nome host deve corrispondere al nome del servizio, SERVICE. Ad esempio, spanner o logging sono nomi di servizi.

Ad esempio, se l'endpoint è configurato con il target spanner.me-central2.p.rep.googleapis.com, crea una zona DNS privata denominata me-central2.p.rep.googleapis.com e un record A denominato spanner che punti all'indirizzo IP dell'endpoint. Il nome di dominio completo dell'endpoint è spanner.me-central2.p.rep.googleapis.com.

Configura i client in modo che utilizzino il nome dell'endpoint privato

Devi configurare i client in modo che utilizzino i nomi DNS privati anziché quelli pubblici. Consulta la documentazione del client o della libreria client per informazioni su come configurarli per l'utilizzo di endpoint personalizzati. Ad esempio:

Ottenere informazioni dettagliate su un endpoint

Puoi visualizzare i dettagli di configurazione di un endpoint.

gcloud

Utilizza il comando gcloud network-connectivity regional-endpoints describe.

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

Sostituisci quanto segue:

  • ENDPOINT_NAME: il nome dell'endpoint.
  • REGION: la regione dell'endpoint.

API

Utilizza il comando projects.locations.regionalEndpoints.get.

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

Sostituisci quanto segue:

  • PROJECT_ID: l'ID progetto dell'endpoint.
  • REGION: la regione degli endpoint da elencare.
  • ENDPOINT_NAME: il nome dell'endpoint.

Eliminazione di un endpoint

Puoi eliminare un endpoint.

gcloud

Utilizza il comando gcloud network-connectivity regional-endpoints delete.

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

Sostituisci quanto segue:

  • ENDPOINT_NAME: il nome dell'endpoint.
  • REGION: la regione dell'endpoint.

API

Utilizza il comando projects.location.regionalEndpoints.delete.

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

Sostituisci quanto segue:

  • PROJECT_ID: l'ID progetto dell'endpoint.
  • REGION: la regione dell'endpoint.
  • ENDPOINT_NAME: il nome dell'endpoint.

Accedere agli endpoint dalle reti ibride

I client nelle reti connesse a Google Cloud con collegamenti VLAN per i tunnel Cloud Interconnect o Cloud VPN possono raggiungere gli endpoint di Private Service Connect.

  • Il collegamento VLAN o il tunnel VPN cloud deve terminare nella stessa rete VPC (o rete VPC condivisa) dell'endpoint. I client nelle reti VPC in peering non possono raggiungere gli endpoint.

  • Il traffico client dai collegamenti VLAN o dai tunnel Cloud VPN può raggiungere gli endpoint in un'altra regione se è configurato l'accesso globale.

  • Sia Dataplane 1 che Dataplane 2 sono supportati per i collegamenti VLAN. Per ulteriori informazioni sulle versioni di Dataplane, consulta Dataplane V2.

Devi configurare i sistemi nell'altra rete in modo che possano eseguire query sulle tue zone DNS private.

Se hai implementato le zone DNS private utilizzando Cloud DNS, completa i seguenti passaggi:

  • Crea un criterio del server in entrata nella rete VPC a cui si connette l'altra rete.

  • Identifica i punti di contatto del forwarder in entrata nella regione in cui si trova il collegamento VLAN o il tunnel Cloud VPN, nella rete VPC a cui si connette la tua altra rete.

  • Configura i sistemi e i server dei nomi DNS nell'altra rete in modo da inoltrare i nomi DNS per l'endpoint a un punto di contatto del forwarder in entrata nella stessa regione del collegamento VLAN o del tunnel Cloud VPN che si connette alla rete VPC.