Accedere alle API di Google globali tramite i backend

Questa pagina descrive come accedere alle API di Google globali utilizzando i backend di Private Service Connect basati su bilanciatori del carico di applicazioni interni tra regioni.

Questa configurazione ti consente di scegliere come target una o più API Google globali individuali, applicando al contempo la visibilità e il controllo offerti dai backend di Private Service Connect.

  • Puoi configurare hostname personalizzati, locali al tuo Virtual Private Cloud (VPC) e alle reti on-premise collegate, che indirizzano il traffico alle API Google globali scelte.
  • Puoi accedere ai backend da qualsiasi regione e il backend può bilanciare il traffico verso i gruppi di endpoint di rete (NEG) di Private Service Connect che si trovano in qualsiasi regione.
  • Puoi inviare traffico ai backend dalle reti VPC connesse in peering.

Per un elenco delle API Google globali disponibili, consulta Target API Google globali.

Prima di iniziare

  • Per ottenere le autorizzazioni necessarie per configurare un backend per accedere alle API Google globali, chiedi all'amministratore di concederti i seguenti ruoli IAM nel tuo progetto Google Cloud:

    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.

  • Abilita l'API Compute Engine nel tuo progetto.

  • Abilita l'API Certificate Manager nel tuo progetto.

  • Crea una chiave privata e un certificato firmato da un'autorità di certificazione (CA). Segui le istruzioni riportate nel passaggio 1: crea una chiave privata e un certificato. La chiave privata e il certificato sono necessari per creare un certificato SSL autogestito con Certificate Manager.

  • Crea una risorsa certificato per un bilanciatore del carico delle applicazioni interno tra regioni utilizzando la chiave privata e il certificato firmato che hai creato. Quando caricate il certificato, dovete impostare l'ambito su all-regions. Per saperne di più, vedi Caricare un certificato autogestito in Certificate Manager. La risorsa del certificato è necessaria per configurare il proxy HTTPS di destinazione per il bilanciatore del carico.

  • Crea una subnet solo proxy se non ne hai già una. Deve essere presente una singola subnet solo proxy nella rete e nella regione VPC in cui intendi creare la regola di forwarding di inoltro del bilanciatore del carico delle applicazioni interno tra regioni. Questa subnet viene utilizzata da tutti i bilanciatori del carico delle applicazioni interni all'interno della rete e della regione.

Creare un NEG Private Service Connect

Per ogni API Google globale a cui vuoi accedere, crea un NEG Private Service Connect. I NEG di Private Service Connect sono regionali, anche se vengono utilizzati per connettersi alle API di Google globali.

Un NEG di Private Service Connect non può essere aggiornato dopo la sua creazione.

Console

  1. Nella console Google Cloud, vai alla pagina Creare un gruppo di endpoint di rete.

    Vai a Crea un gruppo di endpoint di rete

  2. Nella pagina Crea gruppo di endpoint di rete, inserisci un nome per il gruppo di endpoint di rete.

  3. Per Tipo di gruppo di endpoint di rete, seleziona NEG Private Service Connect (regionale).

  4. Per Target, seleziona API di Google globali.

  5. Seleziona la regione per il gruppo di endpoint di rete.

  6. Seleziona il Servizio target per il gruppo di endpoint di rete.

  7. Fai clic su Crea.

gcloud

Utilizza il comando network-endpoint-groups create.

gcloud compute network-endpoint-groups create NEG_NAME \
    --network-endpoint-type=private-service-connect \
    --psc-target-service=TARGET_SERVICE \
    --region=REGION

Sostituisci quanto segue:

  • NEG_NAME: un nome per il gruppo di endpoint di rete.

  • TARGET_SERVICE: il target dell'API di Google globale a cui vuoi collegarti, ad esempio pubsub.googleapis.com. Consulta l'elenco dei target delle API Google globali supportati.

  • REGION: la regione in cui creare il gruppo di endpoint di rete.

API

Invia una richiesta POST al metodo regionNetworkEndpointGroups.insert.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/networkEndpointGroups
{
  "name": "NEG_NAME",
  "networkEndpointType": "PRIVATE_SERVICE_CONNECT",
  "pscTargetService": "TARGET_SERVICE"
}

Sostituisci quanto segue:

  • PROJECT_ID: l'ID progetto del gruppo di endpoint di rete.
  • REGION: la regione in cui creare il gruppo di endpoint di rete.
  • NEG_NAME: un nome per il gruppo di endpoint di rete.
  • TARGET_SERVICE: il target dell'API di Google globale a cui vuoi collegarti, ad esempio pubsub.googleapis.com. Consulta l'elenco dei target delle API Google globali supportati.

Configura il bilanciatore del carico

Per accedere alle API Google globali, configura un bilanciatore del carico delle applicazioni interno tra regioni.

Console

Avvia la configurazione

  1. Nella console Google Cloud, vai alla pagina Bilanciamento del carico.

    Vai a Bilanciamento del carico

  2. Fai clic su Crea bilanciatore del carico.
  3. In Tipo di bilanciatore del carico, seleziona Bilanciatore del carico delle applicazioni (HTTP/HTTPS) e fai clic su Avanti.
  4. In Pubblico o interno, seleziona Interno e fai clic su Avanti.
  5. In Deployment tra regioni o in una regione singola, seleziona Ideale per workload tra regioni e fai clic su Avanti.
  6. Fai clic su Configura.

Configurazione di base

  1. Inserisci un nome per il bilanciatore del carico.
  2. Seleziona una rete per il bilanciatore del carico.

    La rete deve contenere una subnet solo proxy nella regione in cui stai creando il bilanciatore del carico.

Configurazione frontend

  1. Fai clic su Configurazione frontend.
  2. Inserisci un nome per la regola di forwarding del bilanciatore del carico.
  3. Nel campo Protocollo, seleziona HTTPS (include HTTP/2 e HTTP/3).
  4. Seleziona una Regione della subnet per la subnet del bilanciatore del carico.
  5. Seleziona una subnet per il bilanciatore del carico.
  6. Fai clic su Indirizzo IP ed esegui una delle seguenti operazioni:
    • Per assegnare automaticamente un indirizzo IP temporaneo, seleziona Temporaneo (automatico).
    • Per scegliere un indirizzo IP temporaneo, seleziona Temporaneo (personalizzato) e poi inserisci un indirizzo IP temporaneo personalizzato dall'intervallo di indirizzi IP della subnet del bilanciatore del carico.
    • Per prenotare e utilizzare un indirizzo IP interno statico, fai clic su Crea indirizzo IP e poi procedi nel seguente modo:
      1. Inserisci un nome per l'indirizzo IP.
      2. Fai clic su Indirizzo IP statico e poi esegui una delle seguenti operazioni:
        • Per assegnare automaticamente un indirizzo IP statico, seleziona Assegna automaticamente.
        • Per configurare un indirizzo IP specifico, seleziona Fammi scegliere, quindi inserisci un indirizzo IP personalizzato dall'intervallo di indirizzi IP della subnet del bilanciatore del carico.
      3. Fai clic su Prenota.
  7. Assicurati che il campo Porta sia impostato su 443 per consentire il traffico HTTPS.
  8. Fai clic sull'elenco Certificato e seleziona il tuo certificato autogestito.
  9. Fai clic su Fine.

Configurazione backend

  1. Fai clic su Configurazione backend.
  2. Per ogni API Google globale a cui vuoi accedere, crea un servizio di backend globale. Per creare un servizio di backend globale:

    1. Dal menu Crea o seleziona servizi di backend, seleziona Crea un servizio di backend.
    2. Inserisci un nome per il servizio di backend.
    3. Imposta Tipo di backend su Gruppo di endpoint di rete Private Service Connect.
    4. Imposta il tipo di destinazione Private Service Connect su API di Google globale.
    5. Seleziona HTTPS per il protocollo.
    6. Nella sezione Backend, fai clic sul menu Nuovo backend e seleziona un gruppo di endpoint di rete Private Service Connect.

      Se devi creare un nuovo gruppo di endpoint di rete Private Service Connect, fai clic su Crea NEG PSC.

    7. Fai clic su Fine.

    8. Fai clic su Crea.

  3. Assicurati che ogni servizio di backend che vuoi aggiungere sia selezionato nel menu Crea o seleziona servizi di backend e poi fai clic su OK.

Regole di routing

L'insieme di regole per instradare le richieste HTTPS in entrata a servizi di backend specifici è chiamato mappa URL. Per scoprire di più sulle mappe URL, consulta la panoramica delle mappe URL.

Se stai configurando un solo servizio di backend per il bilanciatore del carico, la regola di routing predefinita è sufficiente e puoi andare a Rivedi e completa.

Se configuri più servizi di backend, devi creare un'associazione di percorsi per ogni servizio di backend. Ogni regola host può fare riferimento a un solo associatore di percorsi, ma due o più regole host possono fare riferimento allo stesso associatore di percorsi.

  1. Se hai più di un servizio di backend, fai clic su Regole di routing.
  2. Seleziona Regola host e percorso semplice.
  3. Per ogni backend:
    1. Fai clic su Aggiungi regola host e percorso.
    2. In Host, inserisci il nome host che verrà utilizzato per inviare richieste a questo servizio, ad esempio pubsub.example.com.
    3. In Percorsi, inserisci il percorso, ad esempio /*.
    4. In Backend, seleziona il servizio di backend.

Esamina e finalizza

  1. Fai clic su Esamina e finalizza per esaminare la configurazione.
  2. Fai clic su Crea.

gcloud

  1. Per ogni API Google globale a cui vuoi accedere:

    1. Per creare un servizio di backend globale, utilizza il comando gcloud compute backend-services create.

      gcloud compute backend-services create BACKEND_SERVICE_NAME \
          --load-balancing-scheme=INTERNAL_MANAGED \
          --protocol=HTTPS \
          --global
      

      Sostituisci BACKEND_SERVICE_NAME con il nome del servizio di backend.

    2. Per aggiungere un NEG al servizio di backend corrispondente, utilizza il comando gcloud compute backend-services add-backend.

      gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
          --network-endpoint-group=NEG_NAME \
          --network-endpoint-group-region=REGION \
          --global
      

      Sostituisci quanto segue:

      • NEG_NAME: il nome del NEG Private Service Connect.
      • REGION: la regione del NEG Private Service Connect.
  2. Per creare una mappa URL globale per il bilanciatore del carico, utilizza il comando gcloud compute url-maps create.

    Una mappa URL deve fare riferimento a un servizio di backend predefinito. Se stai configurando il bilanciatore del carico con un servizio di backend, impostalo come predefinito. Se configuri il bilanciatore del carico in modo che utilizzi più servizi di backend, scegli uno dei servizi di backend come mappa di URL predefinita.

    gcloud compute url-maps create URL_MAP_NAME \
        --default-service=DEFAULT_BACKEND_SERVICE_NAME
    

    Sostituisci quanto segue:

    • URL_MAP_NAME: un nome per la mappa degli URL.
    • DEFAULT_BACKEND_SERVICE_NAME: il nome del servizio di backend predefinito del bilanciatore del carico. Il valore predefinito viene utilizzato quando nessuna regola host corrisponde al nome host richiesto.
  3. (Facoltativo) Se stai configurando il bilanciatore del carico in modo che utilizzi più servizi di backend, completa questo passaggio. Se la mappa URL fa riferimento solo a un servizio di backend, salta questo passaggio.

    Per aggiungere altri servizi di backend alla mappa URL, utilizza il comando gcloud compute url-maps add-path-matcher.

    Per ogni servizio di backend, aggiungi un'associazione di percorsi e una o più regole dell'host. Devi creare un'associazione di percorsi per ogni servizio di backend. Ogni regola host può fare riferimento a un solo matcher percorso, ma due o più regole host possono fare riferimento allo stesso matcher percorso.

    gcloud compute url-maps add-path-matcher URL_MAP_NAME \
        --path-matcher-name=PATH_MATCHER \
        --default-service=BACKEND_SERVICE_NAME \
        --new-hosts=HOSTNAMES
    

    Sostituisci quanto segue:

    • PATH_MATCHER: un nome per il matcher percorso.
    • BACKEND_SERVICE_NAME: il nome del servizio di backend.
    • HOSTNAMES: uno o più nomi host a cui inviare richieste per il servizio di backend, ad esempio pubsub.example.com. Puoi inserire più nomi host in un elenco separato da virgole.
  4. Per creare un proxy HTTPS di destinazione, utilizza il comando gcloud compute target-https-proxies create.

    gcloud compute target-https-proxies create PROXY_NAME \
        --url-map=URL_MAP_NAME \
        --certificate-manager-certificates=CERTIFICATE_NAME
    

    Sostituisci quanto segue:

    • PROXY_NAME: un nome per il proxy HTTPS di destinazione.
    • URL_MAP_NAME: il nome della mappa di URL.
    • CERTIFICATE_NAME: il nome della risorsa del certificato.
  5. Per creare una regola di forwarding globale per il bilanciatore del carico, utilizza il comando gcloud compute forwarding-rules create.

    gcloud compute forwarding-rules create RULE_NAME \
        --load-balancing-scheme=INTERNAL_MANAGED \
        --network=NETWORK \
        --address=IP_ADDRESS \
        --ports=443 \
        --target-https-proxy=PROXY_NAME \
        --subnet=SUBNET \
        --subnet-region=SUBNET_REGION \
        --global
    

    Sostituisci quanto segue:

    • RULE_NAME: il nome della regola di forwarding.
    • NETWORK: la rete VPC della regola di forwarding. Questa rete deve contenere una subnet solo proxy nella regione in cui stai creando il bilanciatore del carico.
    • IP_ADDRESS: l'indirizzo IP interno della regola di forwarding, che deve rientrare nell'intervallo di indirizzi IP della subnet della regola di forwarding. Per utilizzare un indirizzo IP temporaneo specifico, inseriscilo, ad esempio 10.0.0.5. Per utilizzare un indirizzo IP interno statico, inserisci il nome dell'indirizzo IP. Per consentire a Google Cloud di selezionare un indirizzo IP temporaneo, ometti questo flag.
    • SUBNET: la subnet della regola di forwarding.
    • SUBNET_REGION: la regione della subnet della regola di inoltro.

API

  1. Per ogni API Google globale a cui vuoi accedere:

    1. Per creare un servizio di backend globale, invia una richiesta POST al metodo backendServices.insert.

      POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices
      {
        "loadBalancingScheme": "INTERNAL_MANAGED",
        "name": "BACKEND_SERVICE_NAME",
        "protocol": "HTTPS"
      }
      

      Sostituisci quanto segue:

      • PROJECT_ID: l'ID del tuo progetto.
      • BACKEND_SERVICE_NAME: il nome del servizio di backend.
    2. Per aggiungere un NEG al servizio di backend corrispondente, invia una richiesta PATCH al metodo backendServices.patch.

      PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE_NAME
      {
        "backends": [
          {
            "group": "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/networkEndpointGroups/NEG_NAME"
          }
        ]
      }
      

      Sostituisci quanto segue:

      • REGION: la regione del NEG.
      • NEG_NAME: il nome del gruppo di endpoint di rete da aggiungere.
  2. Per creare una mappa URL globale per il bilanciatore del carico, invia una richiesta POST al metodo urlMaps.insert.

    Una mappa URL deve fare riferimento a un servizio di backend predefinito. Se stai configurando il bilanciatore del carico con un servizio di backend, impostalo come predefinito. Se configuri il bilanciatore del carico in modo che utilizzi più servizi di backend, scegli uno dei servizi di backend come mappa di URL predefinita.

     POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/urlMaps
     {
       "defaultService": "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/DEFAULT_BACKEND_SERVICE_NAME",
       "name": "URL_MAP_NAME"
     }
     

    Sostituisci quanto segue:

    • DEFAULT_BACKEND_SERVICE_NAME: il nome del valore predefinito del bilanciatore del carico. Il valore predefinito viene utilizzato quando nessuna regola host corrisponde al nome host richiesto.
    • URL_MAP_NAME: un nome per la mappa degli URL.
  3. Se stai configurando il bilanciatore del carico in modo che utilizzi più servizi di backend, completa questo passaggio. Se la mappa URL fa riferimento solo a un servizio di backend, salta questo passaggio.

    Per aggiungere altri servizi di backend alla mappa URL, invia una richiesta PATCH al metodo urlMaps.patch.

    Per ogni servizio di backend, aggiungi un'associazione di percorsi e una o più regole dell'host. Devi creare un'associazione di percorsi per ogni servizio di backend. Ogni regola host può fare riferimento a un solo matcher percorso, ma due o più regole host possono fare riferimento allo stesso matcher percorso.

    Puoi aggiungere più corrispondenze dei percorsi e regole host inviando una singola richiesta API.

     PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/urlMaps/URL_MAP_NAME
     {
       "pathMatchers": [
         {
           "name": "PATH_MATCHER_NAME_1",
           "defaultService": "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE_NAME_1"
         },
         {
           "name": "PATH_MATCHER_NAME_2",
           "defaultService": "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE_NAME_2"
         }
       ],
       "hostRules": [
         {
           "hosts": ["HOSTNAME_1"],
           "pathMatcher": "PATH_MATCHER_NAME_1"
         },
         {
           "hosts": ["HOSTNAME_2"],
           "pathMatcher": "PATH_MATCHER_NAME_2"
         }
       ]
     }
     

    Sostituisci quanto segue:

    • PATH_MATCHER_NAME_1: un nome per il primo matcher di percorsi.
    • BACKEND_SERVICE_NAME_1: il nome del primo servizio di backend.
    • PATH_MATCHER_NAME_2: un nome per il secondo parametro di corrispondenza del percorso.
    • BACKEND_SERVICE_NAME_2: il nome del secondo servizio di backend.
    • HOSTNAME_1: il nome host a cui inviare le richieste per il primo servizio, ad esempio pubsub.example.com.
    • HOSTNAME_2: il nome host a cui inviare richieste per il secondo servizio.
  4. Per creare un proxy HTTPS di destinazione, invia una richiesta POST al metodo targetHttpsProxies.insert.

     POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/targetHttpsProxies
     {
       "name": "PROXY_NAME",
       "sslCertificates": [
         "https://certificatemanager.googleapis.com/v1/projects/PROJECT_ID/locations/global/certificates/CERTIFICATE_NAME"
       ],
       "urlMap": "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/urlMaps/URL_MAP_NAME"
     }
     

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del progetto.
    • PROXY_NAME: un nome per il proxy HTTPS di destinazione.
    • CERTIFICATE_NAME: il nome della risorsa del certificato.
    • URL_MAP_NAME: il nome della mappa di URL.
  5. Per creare una regola di forwarding globale per il bilanciatore del carico, invia una richiesta POST al metodo globalForwardingRules.insert. La rete della regola di forwarding deve contenere una subnet solo proxy nella subnet della regione della regola di forwarding.

     POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/forwardingRules
     {
       "IPAddress": "IP_ADDRESS",
       "loadBalancingScheme": "INTERNAL_MANAGED",
       "name": "FORWARDING_RULE_NAME",
       "network": "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK_NAME",
       "portRange": "443",
       "subnetwork": "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/SUBNET_REGION/subnetworks/SUBNET_NAME",
       "target": "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/targetHttpsProxies/PROXY_NAME"
     }
     

    Sostituisci quanto segue:

    • IP_ADDRESS: l'indirizzo IP interno della regola di forwarding, che deve rientrare nell'intervallo di indirizzi IP della subnet della regola di forwarding. Per utilizzare un indirizzo IP temporaneo specifico, fornisci l'indirizzo IP, ad esempio 10.0.0.5. Per utilizzare un indirizzo IP interno statico, fornisci il nome dell'indirizzo IP. Per consentire a Google Cloud di selezionare un indirizzo IP temporaneo, ometti questo campo.
    • FORWARDING_RULE_NAME: il nome della regola di inoltro.
    • NETWORK_NAME: il nome della rete VPC della regola di forwarding. Questa rete deve contenere una subnet solo proxy nella regione in cui stai creando il bilanciatore del carico.
    • SUBNET_REGION: la regione della sottorete della regola di forwarding.
    • SUBNET_NAME: il nome della sottorete della regola di forwarding.

Verificare la configurazione

Per testare la connessione del tuo backend alle API Google globali:

  1. Se non ne hai una, crea un'istanza di una macchina virtuale (VM) nella rete VPC in cui hai configurato il backend.
  2. Assicurati di non aver creato regole firewall o criteri firewall che superano la regola di traffico in uscita IPv4 implicita.
  3. Connettiti alla VM.
  4. Dalla VM, utilizza curl per verificare di poter eseguire query su ogni API. Questo comando imposta l'intestazione Host e aggira la risoluzione DNS specificando un indirizzo IP definito dall'utente.

    Puoi saltare la convalida del certificato utilizzando il flag -k. Potresti dover saltare la convalida se hai utilizzato un certificato autofirmato per configurare il proxy HTTPS di destinazione o se la VM non dispone del certificato dell'autorità di certificazione che ha firmato il tuo certificato.

    curl -iv --resolve HOSTNAME:443:IP_ADDRESS \
       'https://HOSTNAME/RESOURCE_URI'
    

    Sostituisci quanto segue:

    • HOSTNAME: il nome host configurato nella mappa URL, ad esempio pubsub.example.com.
    • IP_ADDRESS: l'indirizzo IP della regola di forwarding del bilanciatore del carico.
    • RESOURCE_URI: il resto dell'URI della risorsa che vuoi utilizzare per la verifica. Ad esempio, se il bilanciatore del carico inoltra le richieste a un endpoint regionale per Pub/Sub, puoi utilizzare $discovery/rest?version=v1.

Configura i record DNS

Configura i record DNS per ogni host che hai aggiunto alla mappa URL in modo che puntino all'indirizzo IP della regola di forwarding. Se utilizzi Cloud DNS per gestire il DNS, consulta Aggiungere, modificare ed eliminare record. In caso contrario, configura i record DNS sul tuo server DNS.

Ad esempio, supponiamo che tu abbia creato le seguenti configurazioni:

  • Un NEG Private Service Connect che utilizza il servizio di destinazionepubsub.googleapis.com.

  • Un bilanciatore del carico di applicazioni interno tra regioni che utilizza il NEG di Private Service Connect come backend.

  • Una mappa URL che definisce una regola host per pubsub.example.com.

Affinché questa configurazione funzioni correttamente, devi creare un record DNS che pubsub.example.com rimandi all'indirizzo IP della regola di forwarding.

Con questa configurazione, tutte le richieste inviate a pubsub.example.com vengono inviate al bilanciatore del carico, che le inoltra a pubsub.googleapis.com.

Configura i client per inviare richieste al backend

Per inviare le richieste tramite il backend anziché gli endpoint del servizio pubblico, devi configurare i client in modo che inviino richieste all'hostname definito nella mappa URL del bilanciatore del carico, ad esempio pubsub.example.com. Consulta la documentazione del client o della libreria client per informazioni su come configurarli per l'utilizzo di endpoint personalizzati. Le pagine seguenti includono i passaggi di configurazione per alcuni client comuni: