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 sui bilanciatori del carico delle applicazioni interni multiregionali.
Questa configurazione ti consente di scegliere come target una o più API di Google globali individuali applicando la visibilità e il controllo forniti dai backend Private Service Connect.
- Puoi configurare nomi host personalizzati, locali per il tuo Virtual Private Cloud (VPC) e le reti on-premise connesse, che indirizzano il traffico alle API Google globali che hai scelto.
- Puoi accedere ai backend da qualsiasi regione e il backend può bilanciare il carico del traffico verso i gruppi di endpoint di rete (NEG) Private Service Connect che si trovano in qualsiasi regione.
- Puoi inviare traffico ai backend dalle reti VPC con 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 :
-
Compute Admin (
roles/compute.admin
) -
Certificate Manager Owner (
roles/certificatemanager.owner
)
Per saperne di più 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.
-
Compute Admin (
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 carichi il certificato, devi impostare l'ambito su
all-regions
. Per saperne di più, vedi Caricare un certificato autogestito in Certificate Manager. La risorsa 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 VPC e nella regione in cui intendi creare laregola di forwardingla di inoltro del bilanciatore del carico delle applicazioni interno multiregionale. Questa subnet viene utilizzata da tutti i bilanciatori del carico delle applicazioni interni all'interno di quella rete e regione.
Crea un NEG Private Service Connect
Per ogni API di Google globale a cui vuoi accedere, crea un NEG Private Service Connect. I NEG Private Service Connect sono regionali, anche quando vengono utilizzati per connettersi alle API di Google globali.
Un NEG di Private Service Connect non può essere aggiornato dopo la creazione.
Console
Nella console Google Cloud , vai alla pagina Crea un gruppo di endpoint di rete.
Nella pagina Crea gruppo di endpoint di rete, inserisci un Nome per il gruppo di endpoint di rete.
Per Tipo di gruppo di endpoint di rete, seleziona NEG Private Service Connect (regionale).
Per Target, seleziona API di Google globali.
Seleziona la regione per il gruppo di endpoint di rete.
Seleziona il servizio di destinazione per il gruppo di endpoint di rete.
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
: la destinazione dell'API Google globale a cui vuoi connetterti, ad esempiopubsub.googleapis.com
. Consulta l'elenco dei target globali delle API di Google 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
: la destinazione dell'API Google globale a cui vuoi connetterti, ad esempiopubsub.googleapis.com
. Consulta l'elenco dei target globali delle API di Google 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
Nella console Google Cloud , vai alla pagina Bilanciamento del carico.
- Fai clic su Crea bilanciatore del carico.
- In Tipo di bilanciatore del carico, seleziona Bilanciatore del carico delle applicazioni (HTTP/HTTPS) e fai clic su Avanti.
- In Pubblico o interno, seleziona Interno e fai clic su Avanti.
- In Deployment tra regioni o in una regione singola, seleziona Ideale per workload tra regioni e fai clic su Avanti.
- Fai clic su Configura.
Configurazione di base
- Inserisci un nome per il bilanciatore del carico.
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
- Fai clic su Configurazione frontend.
- Inserisci un nome per la regola di forwarding del bilanciatore del carico.
- Nel campo Protocollo, seleziona HTTPS (include HTTP/2 e HTTP/3).
- Seleziona una regione di subnet per la subnet del bilanciatore del carico.
- Seleziona una subnet per il bilanciatore del carico.
- 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, quindi procedi nel seguente modo:
- Inserisci un nome per l'indirizzo IP.
- Fai clic su Indirizzo IP statico, quindi esegui una delle seguenti operazioni:
- Per assegnare automaticamente un indirizzo IP statico, seleziona Assegna automaticamente.
- Per configurare un indirizzo IP specifico, seleziona Fammi scegliere e poi inserisci un Indirizzo IP personalizzato dall'intervallo di indirizzi IP della subnet del bilanciatore del carico.
- Fai clic su Prenota.
- Assicurati che il campo Porta sia impostato su
443
per consentire il traffico HTTPS. - Fai clic sull'elenco Certificato e seleziona il certificato autogestito.
- Fai clic su Fine.
Configurazione backend
- Fai clic su Configurazione backend.
Per ogni API Google globale a cui vuoi accedere, crea un servizio di backend globale. Per creare un servizio di backend globale:
- Nel menu Crea o seleziona servizi di backend, seleziona Crea un servizio di backend.
- Inserisci un Nome per il servizio di backend.
- Imposta Tipo di backend su Gruppo di endpoint di rete Private Service Connect.
- Imposta il Tipo di destinazione Private Service Connect su API di Google globale.
- Seleziona HTTPS per il protocollo.
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.
Fai clic su Fine.
Fai clic su Crea.
Assicurati che ogni servizio di backend che vuoi aggiungere sia selezionato nel menu Crea o seleziona servizi di backend, quindi 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 saperne 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 passare a Rivedi e finalizza.
Se stai configurando più servizi di backend, devi creare un matcher di percorso per ciascun servizio di backend. Ogni regola host può fare riferimento a un solo matcher di percorso, ma due o più regole host possono fare riferimento allo stesso matcher di percorso.
- Se hai più di un servizio di backend, fai clic su Regole di routing.
- Seleziona Regola semplice per host e percorso.
- Per ogni backend, procedi nel seguente modo:
- Fai clic su Aggiungi regola host e percorso.
- In Host, inserisci il nome host che verrà utilizzato per inviare richieste a
questo servizio, ad esempio
pubsub.example.com
. - In Percorsi, inserisci il percorso, ad esempio
/*
. - In Backend, seleziona il servizio di backend.
Esamina e finalizza
- Fai clic su Esamina e finalizza per rivedere la configurazione.
- Fai clic su Crea.
gcloud
Per ogni API Google globale a cui vuoi accedere:
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.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.
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 stai configurando il bilanciatore del carico in modo che utilizzi più servizi di backend, scegli uno dei servizi di backend da impostare come predefinito per la mappa URL.
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 URL.DEFAULT_BACKEND_SERVICE_NAME
: il nome del servizio di backend predefinito del bilanciatore del carico. L'impostazione predefinita viene utilizzata quando nessuna regola host corrisponde al nome host richiesto.
(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 a un solo 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 matcher di percorso e una o più regole dell'host. Devi creare un matcher di percorso 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 di percorso.BACKEND_SERVICE_NAME
: il nome del servizio di backend.HOSTNAMES
: uno o più nomi host a cui inviare le richieste per il servizio di backend, ad esempiopubsub.example.com
. Puoi inserire più nomi host in un elenco separato da virgole.
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 URL.CERTIFICATE_NAME
: il nome della risorsa del certificato.
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, inserisci l'indirizzo IP, ad esempio10.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
Per ogni API Google globale a cui vuoi accedere:
Per creare un servizio di backend globale, invia una richiesta
POST
al metodobackendServices.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 progetto.BACKEND_SERVICE_NAME
: il nome del servizio di backend.
Per aggiungere un NEG al servizio di backend corrispondente, invia una richiesta
PATCH
al metodobackendServices.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.
Per creare una mappa URL globale per il bilanciatore del carico, invia una richiesta
POST
al metodourlMaps.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 stai configurando il bilanciatore del carico in modo che utilizzi più servizi di backend, scegli uno dei servizi di backend da impostare come predefinito per la mappa URL.
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. L'impostazione predefinita viene utilizzata quando nessuna regola host corrisponde al nome host richiesto.URL_MAP_NAME
: un nome per la mappa URL.
Se stai configurando il bilanciatore del carico in modo che utilizzi più servizi di backend, completa questo passaggio. Se la mappa URL fa riferimento a un solo servizio di backend, salta questo passaggio.
Per aggiungere altri servizi di backend alla mappa URL, invia una richiesta
PATCH
al metodourlMaps.patch
.Per ogni servizio di backend, aggiungi un matcher di percorso e una o più regole dell'host. Devi creare un matcher di percorso 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ù criteri di corrispondenza del percorso e regole host effettuando 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 percorso.BACKEND_SERVICE_NAME_1
: il nome del primo servizio di backend.PATH_MATCHER_NAME_2
: un nome per il secondo matcher di 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 esempiopubsub.example.com
.HOSTNAME_2
: il nome host a cui inviare le richieste per il secondo servizio.
Per creare un proxy HTTPS di destinazione, invia una richiesta
POST
al metodotargetHttpsProxies.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 URL.
Per creare una regola di forwarding globale per il bilanciatore del carico, invia una richiesta
POST
al metodoglobalForwardingRules.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 esempio10.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 subnet della regola di forwardingo.SUBNET_NAME
: il nome della subnet della regola di forwarding.
Verificare la configurazione
Per testare la connessione del backend alle API Google globali:
- Se non ne hai una, crea un'istanza di macchina virtuale (VM) nella rete VPC in cui hai configurato il backend.
- Assicurati di non aver creato regole firewall o criteri firewall che ignorano la regola di traffico in uscita IPv4 implicito.
- Connettiti alla VM.
Dalla VM, utilizza
curl
per verificare di poter eseguire query su ogni API. Questo comando imposta l'intestazioneHost
e ignora la risoluzione DNS specificando un indirizzo IP definito dall'utente.Puoi ignorare la convalida del certificato utilizzando il flag
-k
. Potresti dover ignorare 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 che hai configurato nella mappa URL, ad esempiopubsub.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 di aver creato le seguenti configurazioni:
Un NEG Private Service Connect che utilizza il servizio di destinazione
pubsub.googleapis.com
.Un bilanciatore del carico delle applicazioni interno cross-region che utilizza il NEG 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
rimandi pubsub.example.com
all'indirizzo IP dellaregola di forwardingo.
Con questa configurazione, tutte le richieste inviate a pubsub.example.com
vengono inviate
al bilanciatore del carico, che inoltra la richiesta a pubsub.googleapis.com
.
Configura i client per inviare richieste al backend
Per inviare richieste tramite il backend anziché gli endpoint di servizio pubblici, devi configurare i client in modo che inviino le richieste al nome host definito nella mappa URL del bilanciatore del carico, ad esempio pubsub.example.com
. 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
nella gcloud CLI.