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 ulteriori informazioni sulla concessione dei ruoli, consulta Gestisci 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. Installa Google Cloud CLI. Dopo l'installazione, inizializza Google Cloud CLI eseguendo il seguente comando:

    $ gcloud init

    Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

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

    Enable the APIs

  3. Inoltre, abilita l'API per il servizio di destinazione a cui vuoi accedere tramite l'endpoint Private Service Connect. Ad esempio, se vuoi accedere a spanner.me-central2.rep.googleapis.com, abilita l'API Cloud Spanner. Private Service Connect non abilita automaticamente alcuna API.

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

Crea 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.

Console

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

    Vai a Private Service Connect

  2. Fai clic su Connetti endpoint.

  3. In Target, seleziona API Google.

  4. Nell'elenco Ambito, seleziona A livello di regione.

  5. Nell'elenco Regione, seleziona la regione che vuoi utilizzare.

  6. Nell'elenco Servizio di destinazione, seleziona il servizio a cui vuoi accedere.

  7. In Nome endpoint, inserisci un nome per l'endpoint.

  8. In Rete, seleziona una rete.

  9. In Subnet, seleziona una subnet.

  10. In Indirizzo IP, esegui una delle seguenti operazioni per configurare un indirizzo IP:

    • Seleziona Allocazione automatica per allocare e prenotare automaticamente un nuovo indirizzo IP.
    • Seleziona un indirizzo IP riservato dall'elenco.
    • Fai clic su Crea indirizzo IP per prenotare un nuovo indirizzo IP.
  11. (Facoltativo) Per rendere disponibile l'endpoint da tutte le regioni della rete VPC, seleziona Abilita accesso globale.

  12. Fai clic su Aggiungi endpoint.

gcloud

Utilizza il 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

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 che vuoi utilizzare per l'endpoint. Se omesso, viene allocato un indirizzo IPv4 dalla 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.
  • PROJECT_ID: il progetto in cui stai creando l'endpoint.

  • NETWORK_NAME: il nome della rete VPC per l'endpoint.

  • SUBNET_NAME: la subnet a cui stai connettendo l'endpoint.

  • REP_DNS_NAME: il nome host dell'endpoint del servizio regionale a cui ti stai connettendo. Ad esempio, spanner.me-central2.rep.googleapis.com.

API

Utilizza il metodo projects.locations.regionalEndpoints.create.

Metodo HTTP e 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"
}

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 che vuoi utilizzare per l'endpoint. Se omesso, viene allocato un indirizzo IPv4 dalla 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 connettere l'endpoint.
  • REP_DNS_NAME: il nome host dell'endpoint del servizio regionale a cui vuoi connetterti. Ad esempio, spanner.me-central2.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 connessi.

    Vengono visualizzati tutti gli endpoint, inclusi quelli con target di 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 che vuoi elencare.

Verificare che l'endpoint funzioni

Crea un'istanza di macchina virtuale (VM) nella rete VPC e nella regione in cui è configurato l'endpoint. Esegui questo 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 REP_DNS_NAME:443:ADDRESS:443 \
    'https://REP_DNS_NAME/PATH'
    
  • Per verificare un endpoint IPv6:

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

Sostituisci quanto segue:

  • REP_DNS_NAME: il nome DNS pubblico dell'endpoint regionale di destinazione, ad esempio spanner.me-central2.rep.googleapis.com.
  • ADDRESS: 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 rilevamento dell'API Cloud Spanner dall'endpoint regionale in 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 voce DNS privata per l'endpoint

Devi creare voci DNS private in modo che i client possano indirizzare le richieste al tuo endpoint Private Service Connect.

Ti consigliamo di creare una zona privata che utilizzi lo stesso nome host dell'endpoint regionale di destinazione: SERVICE.REGION.rep.DOMAIN e di creare un record apex in quella zona.

Ad esempio, se l'endpoint Private Service Connect ha una destinazione spanner.me-central2.rep.googleapis.com, crea una zona privata per spanner.me-central2.rep.googleapis.com che contenga un record apex per spanner.me-central2.rep.googleapis.com. La creazione di record nell'apice del dominio significa che puoi accedere al nome host pubblico di altri endpoint regionali, ad esempio logging.me-central2.rep.googleapis.com.

Le seguenti sezioni descrivono come utilizzare Cloud DNS per creare una zona privata e un record DNS apex.

Creare una zona privata

Console

  1. Nella console Google Cloud , vai alla pagina Crea una zona DNS.

    Vai a Crea una zona DNS

  2. Per Tipo di zona, seleziona Privata.

  3. In Nome zona, inserisci un nome. Ad esempio, se l'endpoint Private Service Connect punta a spanner.me-central2.rep.googleapis.com, inserisci spanner-me-central2-rep-googleapis-com.

  4. In Nome DNS, specifica il nome host dell'endpoint regionale di destinazione seguito da un punto finale. Ad esempio, spanner.me-central2.rep.googleapis.com..

  5. (Facoltativo) Aggiungi una descrizione.

  6. Nella sezione Opzioni, seleziona Predefinito (privato).

  7. Seleziona le reti VPC in cui vuoi che sia visibile la zona privata. Solo le reti VPC che selezioni sono autorizzate a eseguire query sui record nella zona.

  8. Fai clic su Crea.

gcloud

Esegui il 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"

Sostituisci quanto segue:

  • ZONE_NAME: un nome per la zona, ad esempio spanner-me-central2-rep-googleapis.com.
  • DESCRIPTION: una descrizione della zona
  • REP_DNS_NAME: il suffisso DNS per la zona; utilizza il nome host dell'endpoint regionale di destinazione, ad esempio spanner.me-central2.rep.googleapis.com
  • VPC_NETWORK_LIST: un elenco delimitato da virgole di reti VPC autorizzate a eseguire query sulla zona

API

Invia una richiesta POST utilizzando il metodo managedZones.create:

Metodo HTTP e URL:

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

Corpo JSON della richiesta:

{
  "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"
      }
    ]
  }
}

Sostituisci quanto segue:

  • PROJECT_ID: l'ID progetto della zona DNS.
  • ZONE_NAME: il nome della zona privata che hai creato per questo endpoint regionale.
  • REP_DNS_NAME: il nome di dominio completo del record che stai creando; utilizza il nome host dell'endpoint regionale di destinazione, ad esempio spanner.me-central2.rep.googleapis.com.
  • DESCRIPTION: una descrizione della zona DNS.
  • NETWORK_1_URL e NETWORK_2_URL: gli URL completi delle reti VPC autorizzate a eseguire query sulla zona, ad esempio https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK_NAME.

Aggiungere un record DNS alla zona

Console

  1. Nella console Google Cloud , vai alla pagina Zone Cloud DNS.

    Vai alle zone Cloud DNS

  2. Fai clic sul nome della zona gestita a cui vuoi aggiungere il record.

  3. Nella pagina Dettagli zona, fai clic su Aggiungi standard.

  4. Nella pagina Crea set di record, lascia vuoto il campo Nome DNS. Se lasci vuoto il campo, viene creato un record delle risorse all'apice del dominio.

  5. In Tipo di record di risorse, seleziona A.

  6. Nel campo Indirizzo IPv4, inserisci o seleziona l'indirizzo IP dell'endpoint Private Service Connect.

  7. Fai clic su Crea.

gcloud

Per aggiungere un set di record di risorse, utilizza il comando gcloud dns record-sets create:

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

Sostituisci quanto segue:

  • REP_DNS_NAME: il nome di dominio completo del record che stai creando; utilizza il nome host dell'endpoint regionale di destinazione, ad esempio spanner.me-central2.rep.googleapis.com.
  • ADDRESS: l'indirizzo IP dell'endpoint Private Service Connect.
  • RECORD_TYPE: il tipo di record DNS, ad esempio A per i record IPv4 o AAAA per i record IPv6.
  • TTL: il TTL in secondi in cui il resolver memorizza nella cache questo set di record di risorse, ad esempio 300.
  • ZONE_NAME: il nome della zona privata che hai creato per questo endpoint regionale.

API

Per aggiungere un set di record di risorse, utilizza il metodo resourceRecordSets.create:

Metodo HTTP e URL:

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

Corpo JSON della richiesta:

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

Sostituisci quanto segue:

  • PROJECT_ID: l'ID progetto della zona DNS.
  • ZONE_NAME: il nome della zona privata che hai creato per questo endpoint regionale.
  • REP_DNS_NAME: il nome di dominio completo del record che stai creando; utilizza il nome host dell'endpoint regionale di destinazione, ad esempio spanner.me-central2.rep.googleapis.com.
  • RECORD_TYPE: il tipo di record DNS, ad esempio A per i record IPv4 o AAAA per i record IPv6.
  • TTL: il TTL in secondi in cui il resolver memorizza nella cache questo set di record di risorse, ad esempio 300.
  • ADDRESS: l'indirizzo IP dell'endpoint Private Service Connect.

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 sulla configurazione per l'utilizzo di endpoint personalizzati. Le pagine seguenti includono i passaggi di configurazione per alcuni client comuni:

  • Python: puoi configurare api_endpoint in Opzioni client.

  • Vai: puoi configurare WithEndpoint in ClientOptions.

  • .NET: puoi configurare Endpoint nella classe builder del client.

  • gcloud: puoi configurare api_endpoint_overrides in gcloud CLI.

Visualizzare 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 che vuoi elencare.
  • ENDPOINT_NAME: il nome dell'endpoint.

Aggiorna la configurazione di accesso globale

Non puoi aggiornare un endpoint Private Service Connect con una destinazione endpoint regionale. Se devi modificare l'impostazione di accesso globale per l'endpoint, elimina l'endpoint e creane uno nuovo con l'impostazione di accesso globale richiesta.

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 Cloud Interconnect o tunnel Cloud VPN possono raggiungere gli endpoint Private Service Connect.

  • Il collegamento VLAN o il tunnel Cloud VPN deve terminare nella stessa rete VPC (o rete VPC condiviso) 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.

  • Per i collegamenti VLAN sono supportati sia Dataplane v1 che Dataplane v2. Per maggiori informazioni sulle versioni di Dataplane, consulta Dataplane V2.

Devi configurare i sistemi nell'altra rete in modo che possano eseguire query nelle 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 ingresso 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 l'altra rete.

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