Accedi ai servizi pubblicati tramite i backend

Questa guida descrive come configurare un Application Load Balancer esterno globale con un backend Private Service Connect per accedere a un servizio che è pubblicato utilizzando Private Service Connect.

Figura 1. L'utilizzo di un backend basato su un Application Load Balancer esterno globale consente ai consumer di servizi con accesso a internet di inviare traffico ai servizi nella rete VPC del producer di servizi (fai clic per ingrandire).

Per maggiori informazioni, consulta Informazioni sui backend Private Service Connect.

Ruoli

Il ruolo di amministratore del bilanciatore del carico di Compute (roles/compute.loadBalancerAdmin) contiene l'autorizzazione necessaria per eseguire le attività descritte in questa guida.

Prima di iniziare

  • Se vuoi pubblicare il tuo servizio, consulta la pagina Pubblicare servizi utilizzando Private Service Connect.

  • Se vuoi connettere un servizio pubblicato da una terza parte, chiedi al producer di servizi le seguenti informazioni:

    • L'URI del collegamento al servizio a cui vuoi connetterti. Il collegamento al servizio ha il seguente formato: projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME

    • Eventuali requisiti relativi ai nomi DNS che utilizzi per inviare le richieste. Potrebbe essere necessario utilizzare nomi DNS specifici nella configurazione della mappa URL o nella configurazione DNS.

Crea gruppo di endpoint di rete

Crea un NEG Private Service Connect che punta al collegamento al servizio per il servizio pubblicato a cui vuoi accedere. Se il servizio pubblicato viene eseguito in più regioni diverse, crea un NEG per collegamento al servizio.

Ogni NEG Private Service Connect utilizza un indirizzo IP /32 in modo che il bilanciatore del carico possa comunicare con questo indirizzo.

Console

  1. Nella console Google Cloud, vai alla pagina Gruppi di endpoint di rete.

    Vai a Gruppi di endpoint di rete

  2. Fai clic su Crea gruppo di endpoint di rete.

  3. Inserisci un nome per il gruppo di endpoint di rete.

  4. Per Tipo di gruppo di endpoint di rete, seleziona Gruppo di endpoint di rete (Private Service Connect).

  5. Seleziona il tipo di target Servizio pubblicato.

  6. In Servizio di destinazione, inserisci l'URI del collegamento al servizio.

  7. Seleziona la rete e la Subnet in cui creare il gruppo di endpoint di rete.

    La subnet deve trovarsi nella stessa regione del servizio pubblicato.

  8. Fai clic su Crea.

gcloud

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

Sostituisci quanto segue:

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

  • TARGET_SERVICE: il collegamento al servizio a cui vuoi connetterti.

  • REGION: la regione in cui creare il gruppo di endpoint di rete. La regione deve trovarsi nella stessa regione del servizio di destinazione.

  • NETWORK: la rete in cui creare il gruppo di endpoint di rete. Se omessa, viene utilizzata la rete predefinita.

  • SUBNET: la subnet in cui creare il gruppo di endpoint di rete. La subnet deve trovarsi nella stessa regione del servizio di destinazione. È necessario specificare una subnet se fornisci la rete. Se vengono omesse sia la rete sia la subnet, viene utilizzata la rete predefinita e la subnet predefinita nell'elemento REGION specificato.

Prenota un indirizzo IP esterno per il bilanciatore del carico

Per prenotare un indirizzo IP esterno per il bilanciatore del carico:

Console

  1. Nella console Google Cloud, vai alla pagina Indirizzi IP.

    Vai agli indirizzi IP

  2. Per prenotare un indirizzo IPv4, fai clic su Prenota indirizzo statico.

  3. Assegna un nome per la risorsa indirizzo IP.

  4. Imposta il livello di rete su Premium.

  5. Imposta la versione IP su IPv4.

  6. Imposta il Tipo su Globale.

  7. Fai clic su Prenota.

gcloud

  1. Prenotare un indirizzo IPv4 esterno globale per il bilanciatore del carico.

    gcloud compute addresses create ADDRESS_NAME \
        --ip-version=IPV4 --global
    

    Sostituisci ADDRESS_NAME con un nome per la risorsa indirizzo IP.

  2. Esegui questo comando per visualizzare l'indirizzo IP riservato:

    gcloud compute addresses describe ADDRESS_NAME \
      --format="get(address)" --global
    

Creazione di una risorsa del certificato SSL

Per creare un bilanciatore del carico HTTPS, devi aggiungere una risorsa di certificato SSL al front-end del bilanciatore del carico. Crea una risorsa del certificato SSL utilizzando un certificato SSL gestito da Google o un certificato SSL autogestito.

  • Certificati gestiti da Google. Ti consigliamo di utilizzare i certificati gestiti da Google perché Google Cloud li ottiene, gestisce e rinnova automaticamente. Per creare un certificato gestito da Google, devi disporre di un dominio e dei record DNS per tale dominio per eseguire il provisioning del certificato. Se non hai ancora un dominio, puoi ottenerne uno da Google Domains. Per ulteriori informazioni, consulta la Guida introduttiva all'utilizzo di Google Domains. Inoltre, devi aggiornare il record A DNS del dominio in modo che punti all'indirizzo IP del bilanciatore del carico creato nel passaggio precedente; per istruzioni dettagliate, consulta Utilizzare i certificati gestiti da Google.

  • Certificati autogestiti. I certificati SSL autogestiti sono certificati che ottieni, esegui il provisioning e rinnovi in modo autonomo. I certificati autogestiti possono essere firmati da un'autorità di certificazione o autofirmati. Se sono firmati da un'autorità di certificazione, devi avere un dominio. Se non hai ancora un dominio, puoi ottenerne uno da Google Domains. Per ulteriori informazioni, consulta la Guida introduttiva all'utilizzo di Google Domains. Inoltre, devi aggiornare il record A DNS del dominio in modo che punti all'indirizzo IP del bilanciatore del carico creato nel passaggio precedente; per istruzioni dettagliate, consulta Utilizzare i certificati SSL autogestiti.

    Se al momento non vuoi configurare un dominio, puoi utilizzare un certificato SSL autofirmato per i test.

Queste istruzioni presuppongono che tu abbia già creato una risorsa del certificato SSL.

configura il bilanciatore del carico

Configura un bilanciatore del carico delle applicazioni esterno globale con funzionalità avanzate di gestione del traffico (schema di bilanciamento del carico impostato su EXTERNAL_MANAGED) per la connessione a un servizio gestito.

Se ti stai connettendo a un servizio pubblicato di cui è stato eseguito il deployment in più regioni e hai creato più NEG Private Service Connect per connetterti a ciascun collegamento al servizio, puoi aggiungere tutti i NEG al servizio di backend.

Sebbene il NEG Private Service Connect sia a livello di regione, tutti gli altri componenti di bilanciamento del carico in questa configurazione sono globali.

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 Per il pubblico (esterno) e fai clic su Avanti.
  5. In Deployment a regione singola o globale, seleziona Ideale per carichi di lavoro globali e fai clic su Avanti.
  6. In Generazione del bilanciatore del carico, seleziona Application Load Balancer esterno globale e fai clic su Avanti.
  7. Fai clic su Configura.

Configurazione di base

  1. Inserisci un Nome del bilanciatore del carico.
  2. Tieni la finestra aperta per continuare.

Configurazione frontend

  1. Fai clic su Configurazione frontend.
  2. Fai clic su Aggiungi IP e porta frontend.
  3. Inserisci un nome per il bilanciatore del carico.
  4. Nel campo Protocollo, seleziona HTTPS (include HTTP/2).
  5. Assicurati che la Porta sia impostata su 443 per consentire il traffico HTTPS.
  6. Per Indirizzo IP, seleziona l'indirizzo IP che hai prenotato.

  7. Fai clic sull'elenco Certificato e seleziona il certificato che hai creato.

  8. Fai clic su Ok.

  9. Fai clic su Fine.

Configurazione backend

Il gruppo di endpoint di rete Private Service Connect è un tipo di backend del bilanciatore del carico. Aggiungi al servizio di backend tutti i NEG Private Service Connect per lo stesso servizio gestito.

  1. Fai clic su Configurazione backend.
  2. Fai clic sull'elenco Servizi e bucket di backend, quindi fai clic su Crea un servizio di backend.
  3. Inserisci un nome per il servizio di backend.
  4. Imposta Tipo di backend su Gruppo di endpoint di rete Private Service Connect.
  5. Nella sezione Backend, fai clic sull'elenco Gruppo di endpoint di rete Private Service Connect e seleziona il NEG Private Service Connect che hai creato. Fai clic su Fine.
  6. Se hai creato più di un NEG Private Service Connect, fai clic su Aggiungi backend per selezionare un altro NEG.

    Ripeti questo passaggio fino a quando tutti i NEG per questo servizio gestito non vengono aggiunti al servizio di backend.

  7. Fai clic su Crea.

Regole di routing

Poiché questa configurazione contiene un solo servizio di backend, la regola di routing predefinita è sufficiente e non è necessario apportare modifiche in questa sezione.

Esamina e finalizza

  1. Per esaminare la configurazione, fai clic su Esamina e finalizza.
  2. Fai clic su Crea.

gcloud

  1. Creando un servizio di backend per il servizio gestito a cui vuoi connetterti.

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

    Sostituisci BACKEND_SERVICE_NAME con il nome del servizio di backend.

  2. Aggiungi il NEG Private Service Connect che punta al servizio di destinazione.

    Se hai creato più NEG in diverse regioni per lo stesso servizio, ripeti questo passaggio per aggiungere tutti i NEG al servizio di backend.

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

    Sostituisci quanto segue:

    • BACKEND_SERVICE_NAME: il nome del servizio di backend.
    • NEG_NAME: il nome del gruppo di endpoint di rete.
    • REGION: la regione del gruppo di endpoint di rete.
  3. Creare una mappa URL per il bilanciatore del carico.

    Una mappa URL deve fare riferimento a un servizio di backend predefinito. Configura il servizio di backend che hai creato come servizio di backend predefinito.

    gcloud compute url-maps create URL_MAP_NAME \
      --default-service=BACKEND_SERVICE_NAME \
      --global
    

    Sostituisci quanto segue:

    • URL_MAP_NAME: un nome per la mappa URL.

    • BACKEND_SERVICE_NAME: il nome del servizio di backend predefinito del bilanciatore del carico. Il valore predefinito viene utilizzato quando nessuna regola dell'host corrisponde al nome host richiesto.

  4. Crea il proxy HTTPS di destinazione.

    Utilizza la risorsa del certificato SSL che hai creato per creare un proxy HTTPS di destinazione.

    gcloud compute target-https-proxies create PROXY_NAME \
      --url-map=URL_MAP_NAME \
      --ssl-certificates=CERTIFICATE
    

    Sostituisci quanto segue:

    • PROXY_NAME: un nome per il proxy HTTPS di destinazione.
    • URL_MAP_NAME: il nome della mappa URL.
    • CERTIFICATE: il nome della risorsa di certificato.
  5. Crea la regola di forwarding.

    gcloud compute forwarding-rules create FWD_RULE \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --network-tier=PREMIUM \
        --address=ADDRESS_NAME \
        --target-https-proxy=PROXY_NAME \
        --ports=443 \
        --global
    

    Sostituisci quanto segue:

    • FWD_RULE: un nome per la regola di forwarding.

    • ADDRESS_NAME: la risorsa dell'indirizzo IP che hai prenotato per essere utilizzata per la regola di forwarding.

    • PROXY_NAME: il nome del proxy HTTPS di destinazione.

Configura i record DNS

Se vuoi accedere al backend Private Service Connect utilizzando un nome DNS, crea nomi DNS per ogni regola di forwarding esterno. Il record DNS deve corrispondere a un nome nella mappa URL. A meno che la mappa URL non riscrive i nomi, il record DNS deve corrispondere anche ai nomi che il servizio producer deve corrispondere.

Se utilizzi Cloud DNS per gestire il DNS, consulta la sezione sull'aggiunta di un record DNS.

Verificare la configurazione

  1. Creare l'istanza VM.

    gcloud compute instances create VM_NAME \
        --network=NETWORK \
        --image-project=debian-cloud --image-family=debian-11 \
        --zone=ZONE
    

    Sostituisci quanto segue:

    • VM_NAME: un nome per la macchina virtuale.

    • NETWORK: la rete per la VM.

    • ZONE: la zona per la VM.

  2. Connettiti alla VM.

    gcloud compute ssh VM_NAME --zone=ZONE
    
  3. Usa curl per verificare la configurazione. Questo comando imposta l'intestazione Host e ignora la risoluzione DNS specificando un indirizzo IP definito dall'utente. Puoi omettere la porta se utilizzi la porta predefinita per il protocollo, ad esempio se utilizzi la porta 443 per HTTPS.

    Puoi saltare la convalida del certificato utilizzando il flag -k. Potrebbe essere necessario 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 certificato.

    curl [-k] -s 'https://HOST:443/RESOURCE_URI' \
        -H 'Host: HOST' \
        --connect-to HOST:443:FWD_RULE_IP_ADDRESS:443
    

    Sostituisci quanto segue:

    • HOST: il nome host configurato nella mappa URL.

    • RESOURCE_URI: il resto dell'URI della risorsa che vuoi utilizzare per la verifica.

    • FWD_RULE_IP_ADDRESS: l'indirizzo IP assegnato alla regola di forwarding.

Risoluzione dei problemi

La creazione del backend è riuscita, ma la connettività non è stabilita

Se crei correttamente un backend per i servizi pubblicati, ma la connettività non è stabilita, controlla lo stato della connessione del backend. Lo stato della connessione potrebbe indicare i passaggi che puoi seguire per risolvere il problema.