Accedi alle API di Google globali tramite backend
Questa pagina descrive come accedere alle API di Google globali utilizzando i backend Private Service Connect basati su bilanciatori del carico delle applicazioni interni cross-region.
Questa configurazione ti consente di scegliere come target uno o più singole API di Google globali, applicando al contempo visibilità e controllo forniti dai backend 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 Private Service Connect (NEG) che si trovano in qualsiasi regione.
- Puoi inviare il traffico ai backend dal VPC in peering reti.
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 di Google globali, chiedi all'amministratore di concederti i seguenti ruoli IAM sul tuo progetto Google Cloud:
-
Amministratore di Compute (
roles/compute.admin
) -
Proprietario Gestore certificati (
roles/certificatemanager.owner
)
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.
-
Amministratore di Compute (
Abilita l'API Compute Engine nel tuo progetto.
Attiva l'API Certificate Manager in del tuo progetto.
Crea una chiave privata e un certificato firmato da un'autorità di certificazione (Canada). Segui le istruzioni riportate in Passaggio 1: crea una chiave privata e certificato. La chiave privata e il certificato sono necessari per creare un protocollo SSL autogestito certificato con Gestore certificati.
Crea una risorsa di certificato per un bilanciatore del carico delle applicazioni interno tra regioni utilizzando chiave privata e il certificato firmato che hai creato. Quando carica il certificato su cui devi impostare l'ambito
all-regions
. Per ulteriori informazioni, consulta Caricare un certificato autogestito per Gestione certificati. 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à uno. Deve essere presente una singola subnet solo proxy nella rete e nella regione VPC in cui intendi creare la regola di inoltro del bilanciatore del carico delle applicazioni interno tra regioni. Questa subnet è utilizzata di bilanciatori del carico delle applicazioni interni all'interno della rete e della regione.
Creare un NEG Private Service Connect
Per ogni API di Google globale a cui vuoi accedere, crea un'istanza NEG Private Service Connect. I NEG Private Service Connect sono a livello di regione, anche se utilizzata per connettersi alle API di Google globali.
Una volta che è stato inviato, un NEG Private Service Connect non può essere aggiornato è stato creato.
Console
Nella console Google Cloud, vai alla pagina Creare un gruppo di endpoint di rete.
Nella pagina Crea gruppo di endpoint di rete, inserisci un Nome per la gruppo di endpoint di rete.
Per Tipo di gruppo di endpoint di rete, seleziona NEG Private Service Connect (regionale).
In Target, seleziona API di Google globali.
Seleziona la regione per il gruppo di endpoint di rete.
Seleziona il Servizio target per il gruppo di endpoint di rete.
Fai clic su Crea.
gcloud
Usa 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 esempiopubsub.googleapis.com
. Consulta l'elenco dei target delle API Google globali supportati.REGION
: la regione in cui creare il gruppo di endpoint di rete in.
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 in.NEG_NAME
: un nome per il gruppo di endpoint di rete.TARGET_SERVICE
: il target dell'API di Google globale che a cui vuoi connetterti, ad esempiopubsub.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
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.
- Per Pubblico o interno, seleziona Interno e fai clic Avanti.
- In Deployment tra regioni o in una regione singola, seleziona Ideale per carichi di lavoro 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 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 Inserisci un Indirizzo IP temporaneo personalizzato dell'intervallo di indirizzi IP della subnet del bilanciatore del carico.
- Per prenotare e utilizzare un indirizzo IP interno statico, fai clic su
Crea l'indirizzo IP, quindi:
- Inserisci un nome per l'indirizzo IP.
- 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.
- Fai clic su Prenota.
- Assicurati che il campo Porta sia impostato su
443
per consentire il traffico HTTPS. - Fai clic sull'elenco Certificate (Certificato) e seleziona il tuo 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:
- Dal menu Crea o seleziona servizi di backend, seleziona Crea un 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 come 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 il routing delle richieste HTTPS in arrivo specifici servizi di backend è chiamata mappa URL. Per scoprire di più sulle mappe URL, consulta la panoramica delle mappe URL.
Se configuri un solo servizio di backend per il bilanciatore del carico, la regola di routing predefinita è sufficiente e puoi passare direttamente Esamina e finalizza.
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.
- Se disponi di più di un servizio di backend, fai clic su Regole di routing.
- Seleziona Regola host e percorso semplice.
- Per ogni backend:
- Fai clic su Aggiungi regola host e percorso.
- In Host, inserisci il nome host che verrà utilizzato per inviare le 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 esaminare la configurazione.
- Fai clic su Crea.
gcloud
Per ogni API di Google globale a cui vuoi accedere, segui questi passaggi:
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 del servizio di backend.Per aggiungere un NEG al servizio di backend corrispondente, utilizza il metodo 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 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 per utilizzare più servizi di backend, scegli uno dei servizi di backend come mappa URL predefinito.
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 nessun host corrisponde al nome host richiesto.
(Facoltativo) Se stai configurando il bilanciatore del carico per utilizzare più di backend, completa questo passaggio. Se solo la mappa URL fa riferimento a un servizio di backend, salta questo passaggio.
Per aggiungere altri servizi di backend alla mappa URL, utilizza il metodo Comando
gcloud compute url-maps add-path-matcher
.Per ogni servizio di backend, aggiungi un matcher percorso e uno o più host le regole del caso. Devi creare un matcher di percorso per ogni servizio di backend. Ogni regola host può fare riferimento a un solo matcher di percorso, ma a due o più le 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 esempiopubsub.example.com
. Puoi inserire più nomi host in un elenco separato da virgole.
Per creare un proxy HTTPS di destinazione, utilizza il metodo 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 del certificato risorsa.
Per creare una regola di forwarding globale per il bilanciatore del carico, utilizza 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 di una regola di forwarding. Questa rete deve contenere una subnet solo proxy regione in cui stai creando il bilanciatore del carico.IP_ADDRESS
: l'indirizzo IP interno del , che deve rientrare nell'intervallo di indirizzi IP del della regola di forwarding. Per utilizzare un indirizzo IP temporaneo specifico, inseriscilo, 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 del progetto.BACKEND_SERVICE_NAME
: il nome del servizio di backend.
Per aggiungere un NEG al servizio di backend corrispondente, crea un
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, effettua una richiesta
POST
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 per utilizzare più servizi di backend, scegli uno dei servizi di backend come mappa URL predefinito.
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 caricamento predefinita del bilanciatore del carico. L'impostazione predefinita viene utilizzata quando nessuna regola host corrisponde il 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 solo la mappa URL fa riferimento a un servizio di backend, salta questo passaggio.
Per aggiungere altri servizi di backend alla mappa URL, effettua una richiesta
PATCH
al metodourlMaps.patch
.Per ogni servizio di backend, aggiungi un matcher percorso e uno o più host le regole del caso. Devi creare un'associazione di percorsi per ogni servizio di backend. Ogni regola host può fare riferimento a un solo matcher di percorso, ma a due o più le regole host possono fare riferimento allo stesso matcher percorso.
Puoi aggiungere più matcher percorso e regole host creando un'unica 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 percorso matcher.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 il primo servizio, ad esempiopubsub.example.com
.HOSTNAME_2
: il nome host a cui inviare le richieste il secondo servizio.
Per creare un proxy HTTPS di destinazione, effettua 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 di URL.
Per creare una regola di forwarding globale per il bilanciatore del carico, crea una
POST
richiesta alla MetodoglobalForwardingRules.insert
. La rete della regola di forwarding deve contenere una subnet solo proxy nel della 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 del , che deve rientrare nell'intervallo di indirizzi IP del della regola di forwarding. Per utilizzare un indirizzo IP temporaneo specifico, fornisci l'indirizzo IP, ad esempio10.0.0.5
. Per utilizzare un modello indirizzo IP interno, 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 inoltro. Questa rete deve contenere una subnet solo proxy nella regione in cui stai creando il bilanciatore del carico.SUBNET_REGION
: la regione della regola di forwarding una subnet.SUBNET_NAME
: il nome del parametro della regola di forwarding una subnet.
Verificare la configurazione
Per testare la connessione del backend alle API di Google globali, segui questi passaggi:
- Se non ne hai una, crea un'istanza di macchina virtuale (VM) nel sulla rete VPC in cui hai configurato il backend.
- Assicurati di non aver creato regole firewall o criteri firewall che superano la regola di traffico in uscita IPv4 implicita.
- Connettiti alla VM.
Dalla VM, utilizza
curl
per verificare di poter eseguire query su ogni API. Questo comando imposta l'intestazioneHost
e aggira la risoluzione DNS specificando un indirizzo IP definito dall'utente.Puoi saltare la convalida dei certificati 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 esempiopubsub.example.com
.IP_ADDRESS
: l'indirizzo IP del bilanciatore del carico di una regola di forwarding.RESOURCE_URI
: il resto dell'URI della risorsa da 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 inoltro. Se utilizzi Cloud DNS per gestire DNS, consulta Aggiungere, modificare ed eliminare i 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 destinazione
pubsub.googleapis.com
.Un bilanciatore del carico delle applicazioni interno tra regioni 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 pubsub.example.com
rimandi all'indirizzo IP della regola di inoltro.
Con questa configurazione, 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 le richieste tramite il backend anziché gli endpoint di 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 le
documentazione per la libreria client o client per informazioni
e la configurazione per usare endpoint personalizzati. Le pagine seguenti includono i passaggi di configurazione per alcuni client comuni:
Python: puoi configurare
api_endpoint
in Client opzioni.Go: puoi configurare
WithEndpoint
in ClientOptions..NET: puoi configurare
Endpoint
nella classe del generatore del client.gcloud: puoi configurare
api_endpoint_overrides
in con gcloud CLI.