Configura un bilanciatore del carico delle applicazioni esterno regionale con bucket Cloud Storage in un ambiente VPC condiviso

Questo documento mostra due configurazioni di esempio per la configurazione di un bilanciatore del carico delle applicazioni esterno regionale in un ambiente VPC condiviso con bucket Cloud Storage:

  • Il primo esempio crea tutti i componenti del bilanciatore del carico e i backend in un unico progetto di servizio.
  • Il secondo esempio crea i componenti frontend e la mappa URL del bilanciatore del carico in un progetto di servizio, mentre il bucket di backend e i bucket Cloud Storage del bilanciatore del carico vengono creati in un progetto di servizio diverso.

Entrambi gli esempi richiedono la stessa configurazione iniziale per concedere i ruoli richiesti e configurare un VPC condiviso prima di poter iniziare a creare i bilanciatori del carico.

Oltre alle configurazioni di esempio menzionate in questo documento, puoi anche configurare un deployment VPC condiviso in cui il frontend e la mappa URL del bilanciatore del carico vengono creati nel progetto host e i bucket di backend, insieme ai bucket Cloud Storage, vengono creati in un progetto di servizio. Per ulteriori informazioni su altre architetture VPC condiviso valide, consulta Architetture VPC condiviso.

Se non vuoi utilizzare una rete VPC condiviso, consulta Configura un bilanciatore del carico delle applicazioni esterno regionale con bucket Cloud Storage.

Prima di iniziare

Assicurati che la tua configurazione soddisfi i seguenti prerequisiti.

Crea Google Cloud progetti

Crea Google Cloud progetti per un host e due progetti di servizio.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per configurare un bilanciatore del carico delle applicazioni esterno regionale in un ambiente VPC condiviso con bucket Cloud Storage, chiedi all'amministratore di concederti i seguenti ruoli IAM:

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.

Configura un ambiente VPC condiviso

Completa i seguenti passaggi nel progetto host per configurare un ambiente VPC condiviso:

  1. Configura una rete VPC in modalità personalizzata.
  2. Configura una subnet solo proxy.
  3. Configura un VPC condiviso nel progetto host.

I passaggi descritti in questa sezione non devono essere eseguiti ogni volta che vuoi creare un nuovo bilanciatore del carico. Tuttavia, prima di procedere con la creazione del bilanciatore del carico, devi assicurarti di avere accesso alle risorse descritte qui.

Questo esempio utilizza la seguente rete VPC, regione e subnet solo proxy:

  • Rete. La rete è una rete VPC in modalità personalizzata denominata lb-network.

  • Subnet per i proxy Envoy. Una subnet denominata proxy-only-subnet-us nella regione us-east1 utilizza 10.129.0.0/23 per il suo intervallo IP primario.

Configura una rete VPC in modalità personalizzata

Console

  1. Nella console Google Cloud , vai alla pagina Reti VPC.

    Vai a Reti VPC

  2. Fai clic su Crea rete VPC.

  3. In Nome, inserisci lb-network.

  4. Fai clic su Crea.

gcloud

  1. Crea una rete VPC personalizzata, denominata lb-network, con il comando gcloud compute networks create.

      gcloud compute networks create lb-network \
          --subnet-mode=custom \
          --project=HOST_PROJECT_ID
    

    Sostituisci HOST_PROJECT_ID con l'ID progettoGoogle Cloud assegnato al progetto abilitato come progetto host in un ambiente VPC condiviso.

Configurare una subnet solo proxy

Una subnet solo proxy fornisce un insieme di indirizzi IP che Google Cloud utilizza per eseguire proxy Envoy per tuo conto. I proxy terminano le connessioni dal client e creano nuove connessioni ai backend.

Questa subnet solo proxy viene utilizzata da tutti i bilanciatori del carico regionali basati su Envoy nella stessa regione della rete VPC. Può essere presente una sola subnet solo proxy attiva per uno scopo specifico, per regione e per rete.

Console

  1. Nella console Google Cloud , vai alla pagina Reti VPC.

    Vai a Reti VPC

  2. Fai clic sul nome della rete VPC che hai creato.

  3. Nella scheda Subnet, fai clic su Aggiungi subnet.

  4. Inserisci le seguenti informazioni:

    • Nome: proxy-only-subnet-us
    • Regione: us-east1
    • Scopo: proxy gestito a livello di regione
    • Intervallo di indirizzi IP: 10.129.0.0/23
  5. Fai clic su Aggiungi.

gcloud

  1. Crea una subnet solo proxy nella regione us-east1 con il comando gcloud compute networks subnets create.

    gcloud compute networks subnets create proxy-only-subnet-us \
        --purpose=REGIONAL_MANAGED_PROXY \
        --role=ACTIVE \
        --region=us-east1 \
        --network=lb-network \
        --range=10.129.0.0/23 \
        --project=HOST_PROJECT_ID
    

    Sostituisci HOST_PROJECT_ID con l'ID progettoGoogle Cloud assegnato al progetto host.

Configura una rete VPC condiviso nel progetto host

Puoi abilitare un progetto host VPC condiviso e collegare i progetti di servizio al progetto host in modo che i progetti di servizio possano utilizzare la rete VPC condivisa. Per configurare un VPC condiviso nel progetto host, consulta le seguenti pagine:

Dopo aver completato i passaggi precedenti, puoi procedere con una delle seguenti configurazioni:

Configura un bilanciatore del carico nel service project

Questo esempio crea un bilanciatore del carico delle applicazioni esterno regionale in cui tutti i componenti di bilanciamento del carico (regola di forwarding, proxy di destinazione, mappa URL e bucket di backend) e i bucket Cloud Storage vengono creati nel progetto di servizio.

Le risorse di rete del bilanciatore del carico delle applicazioni esterno regionale, come la subnet solo proxy, vengono create nel progetto host.

Figura 1. Bilanciatore del carico HTTP(S) esterno regionale in un
    ambiente VPC condiviso con bucket Cloud Storage
Figura 1. Bilanciatore del carico delle applicazioni esterno regionale in un ambiente VPC condiviso con bucket Cloud Storage

Questa sezione mostra come configurare il bilanciatore del carico e i backend.

Gli esempi di configurazione in questa pagina configurano esplicitamente un indirizzo IP riservato per la regola di forwarding del bilanciatore del carico delle applicazioni esterno regionale, anziché consentire l'allocazione di un indirizzo IP effimero. Come best practice, ti consigliamo di riservare gli indirizzi IP per le regole di inoltro.

Configura i bucket Cloud Storage

La procedura per configurare i bucket Cloud Storage è la seguente:

  1. Crea i bucket Cloud Storage.
  2. Copia i contenuti nei bucket Cloud Storage.
  3. Rendi accessibili pubblicamente i bucket Cloud Storage.

Crea i bucket Cloud Storage

In questo esempio, crei due bucket Cloud Storage nella regione us-east1.

Console

  1. Nella console Google Cloud , vai alla pagina Bucket in Cloud Storage.

    Vai a Bucket

  2. Fai clic su Crea.

  3. Nella sezione Inizia, inserisci un nome univoco globale che rispetti le linee guida per l'assegnazione dei nomi.

  4. Fai clic su Scegli dove archiviare i tuoi dati.

  5. Imposta Tipo di località su Area geografica.

  6. Dall'elenco delle regioni, seleziona us-east1.

  7. Fai clic su Crea.

  8. Fai clic su Bucket per tornare alla pagina Bucket Cloud Storage. Segui queste istruzioni per creare un secondo bucket nella regione us-east1.

gcloud

  1. Crea il primo bucket nella regione us-east1 con il comando gcloud storage buckets create.

    gcloud storage buckets create gs://BUCKET1_NAME \
        --default-storage-class=standard \
        --location=us-east1 \
        --uniform-bucket-level-access \
        --project=SERVICE_PROJECT_ID
    
  2. Crea il secondo bucket anche nella regione us-east1 con il comando gcloud storage buckets create.

    gcloud storage buckets create gs://BUCKET2_NAME \
        --default-storage-class=standard \
        --location=us-east1 \
        --uniform-bucket-level-access \
        --project=SERVICE_PROJECT_ID
    

Sostituisci quanto segue:

  • BUCKET1_NAME e BUCKET2_NAME: il nome dei tuoi bucket Cloud Storage
  • SERVICE_PROJECT_ID: l'ID progetto Google Cloud assegnato al progetto di servizio

Copia i contenuti nei bucket Cloud Storage

Per popolare i bucket Cloud Storage, copia un file grafico da un bucket Cloud Storage pubblico ai tuoi bucket Cloud Storage.

  gcloud storage cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://BUCKET1_NAME/love-to-purr/
  
  gcloud storage cp gs://gcp-external-http-lb-with-bucket/two-dogs.jpg gs://BUCKET2_NAME/love-to-fetch/
  

Sostituisci BUCKET1_NAME e BUCKET2_NAME con il nome dei tuoi bucket Cloud Storage.

Rendi pubblicamente accessibili i bucket Cloud Storage

Per rendere accessibili tutti gli oggetti in un bucket a chiunque su internet, concedi all'entità allUsers il ruolo Visualizzatore oggetti Storage (roles/storage.objectViewer).

Console

Per concedere a tutti gli utenti l'accesso in visualizzazione agli oggetti nei bucket, ripeti la seguente procedura per ogni bucket:

  1. Nella console Google Cloud , vai alla pagina Bucket in Cloud Storage.

    Vai a Bucket

  2. Nell'elenco dei bucket, fai clic sul nome del bucket che vuoi rendere pubblico.

  3. Seleziona la scheda Autorizzazioni.

  4. Nella sezione Autorizzazioni, fai clic sul pulsante Concedi l'accesso. Viene visualizzata la finestra di dialogo Concedi l'accesso.

  5. Nel campo Nuove entità, inserisci allUsers.

  6. Nel campo Seleziona un ruolo, inserisci Storage Object Viewer nella casella del filtro e seleziona Visualizzatore oggetti Storage dai risultati filtrati.

  7. Fai clic su Salva.

  8. Fai clic su Consenti accesso pubblico.

gcloud

Per concedere a tutti gli utenti l'accesso per visualizzare gli oggetti nei bucket, esegui il comando buckets add-iam-policy-binding.

gcloud storage buckets add-iam-policy-binding gs://BUCKET1_NAME --member=allUsers --role=roles/storage.objectViewer
gcloud storage buckets add-iam-policy-binding gs://BUCKET2_NAME --member=allUsers --role=roles/storage.objectViewer

Sostituisci BUCKET1_NAME e BUCKET2_NAME con il nome dei tuoi bucket Cloud Storage.

Prenota l'indirizzo IP del bilanciatore del carico

Prenota un indirizzo IP esterno statico per la regola di forwarding del bilanciatore del carico.

Console

  1. Nella console Google Cloud , vai alla pagina Prenota un indirizzo statico.

    Vai a Prenota un indirizzo statico

  2. In Nome, inserisci un nome per il nuovo indirizzo.

  3. In Versione IP, seleziona IPv4.

  4. Per Tipo, seleziona A livello di regione.

  5. In Regione, seleziona us-east1.

  6. Lascia l'opzione Allegato a impostata su Nessuno. Dopo aver creato il bilanciatore del carico, questo indirizzo IP verrà collegato alla regola di forwarding del bilanciatore del carico.

  7. Fai clic su Prenota per prenotare l'indirizzo IP.

gcloud

  1. Per prenotare un indirizzo IP esterno statico utilizzando gcloud compute, utilizza il comando compute addresses create.

     gcloud compute addresses create ADDRESS_NAME  \
         --region=us-east1 \
         --project=SERVICE_PROJECT_ID
    

    Sostituisci quanto segue:

    • ADDRESS_NAME: il nome che vuoi assegnare a questo indirizzo IP.
    • REGION: la regione in cui vuoi prenotare questo indirizzo. Questa regione deve essere la stessa del bilanciatore del carico.
    • SERVICE_PROJECT_ID: l' Google Cloud ID progetto assegnato al progetto di servizio.
  2. Utilizza il comando compute addresses describe per visualizzare il risultato:

     gcloud compute addresses describe ADDRESS_NAME
    

    Sostituisci ADDRESS_NAME con il nome che hai assegnato all'indirizzo IP.

    L'indirizzo IP restituito viene chiamato RESERVED_IP_ADDRESS nelle sezioni successive.

Configura una risorsa del certificato SSL

Per un bilanciatore del carico delle applicazioni esterno regionale che utilizza HTTPS come protocollo di richiesta e risposta, puoi creare una risorsa del certificato SSL utilizzando un certificato SSL di Compute Engine o un certificato Certificate Manager.

Per questo esempio, crea una risorsa del certificato SSL utilizzando Certificate Manager come descritto in uno dei seguenti documenti:

Dopo aver creato il certificato, puoi collegarlo al proxy di destinazione HTTPS.

Ti consigliamo di utilizzare un certificato gestito da Google.

Configura il bilanciatore del carico con i bucket di backend

Questa sezione mostra come creare le seguenti risorse per un bilanciatore del carico delle applicazioni esterno regionale:

  • Due bucket di backend. I bucket di backend fungono da wrapper per i bucket Cloud Storage che hai creato in precedenza.
  • Mappa URL
  • Proxy di destinazione
  • Una regola di forwarding con indirizzi IP regionali. La regola di forwarding ha un indirizzo IP esterno.

In questo esempio, puoi utilizzare HTTP o HTTPS come protocollo di richiesta-risposta tra il client e il bilanciatore del carico. Per creare un bilanciatore del carico HTTPS, devi aggiungere una risorsa del certificato SSL al frontend del bilanciatore del carico.

Per creare i componenti di bilanciamento del carico menzionati in precedenza utilizzando gcloud CLI, segui questi passaggi:

  1. Crea due bucket di backend con il comando gcloud compute backend-buckets create. I bucket di backend hanno uno schema di bilanciamento del carico di EXTERNAL_MANAGED.

      gcloud beta compute backend-buckets create backend-bucket-cats \
          --gcs-bucket-name=BUCKET1_NAME \
          --load-balancing-scheme=EXTERNAL_MANAGED \
          --region=us-east1 \
          --project=SERVICE_PROJECT_ID
    
      gcloud beta compute backend-buckets create backend-bucket-dogs \
          --gcs-bucket-name=BUCKET2_NAME \
          --load-balancing-scheme=EXTERNAL_MANAGED \
          --region=us-east1 \
          --project=SERVICE_PROJECT_ID
    

    Sostituisci quanto segue:

    • BUCKET1_NAME e BUCKET2_NAME: il nome dei bucket Cloud Storage
    • SERVICE_PROJECT_ID: l'ID progetto Google Cloud assegnato al progetto di servizio
  2. Crea una mappa URL per instradare le richieste in entrata al bucket di backend con il comando gcloud compute url-maps create.

      gcloud beta compute url-maps create URL_MAP_NAME \
          --default-backend-bucket=backend-bucket-cats \
          --region=us-east1 \
          --project=SERVICE_PROJECT_ID
    

    Sostituisci quanto segue:

    • URL_MAP_NAME: il nome della mappa URL
    • SERVICE_PROJECT_ID: l'ID progetto Google Cloud assegnato al progetto di servizio
  3. Configura le regole host e percorso della mappa URL con il comando gcloud compute url-maps add-path-matcher.

    In questo esempio, il bucket di backend predefinito è backend-bucket-cats, che gestisce tutti i percorsi al suo interno. Tuttavia, qualsiasi richiesta di targeting http://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpg utilizza il backend backend-bucket-dogs. Ad esempio, se la cartella /love-to-fetch/ esiste anche nel backend predefinito (backend-bucket-cats), il bilanciatore del carico assegna la priorità al backend backend-bucket-dogs perché esiste una regola di percorso specifica per /love-to-fetch/*.

      gcloud beta compute url-maps add-path-matcher URL_MAP_NAME \
          --path-matcher-name=path-matcher-pets \
          --new-hosts=* \
          --backend-bucket-path-rules="/love-to-fetch/*=backend-bucket-dogs" \
          --default-backend-bucket=backend-bucket-cats \
          --region=us-east1 \
          --project=SERVICE_PROJECT_ID
    

    Sostituisci quanto segue:

    • URL_MAP_NAME: il nome della mappa URL
    • SERVICE_PROJECT_ID: l'ID progetto Google Cloud assegnato al progetto di servizio
  4. Crea un proxy di destinazione con il comando gcloud compute target-http-proxies create.

    Per il traffico HTTP, crea un proxy HTTP di destinazione per instradare le richieste alla mappa URL:

      gcloud compute target-http-proxies create TARGET_HTTP_PROXY_NAME \
          --url-map=URL_MAP_NAME \
          --region=us-east1 \
          --project=SERVICE_PROJECT_ID
    

    Sostituisci quanto segue:

    • TARGET_HTTP_PROXY_NAME: il nome del proxy HTTP di destinazione
    • URL_MAP_NAME: il nome della mappa URL
    • SERVICE_PROJECT_ID: l'ID progetto Google Cloud assegnato al progetto di servizio

    Per il traffico HTTPS, crea un proxy HTTPS di destinazione per instradare le richieste alla mappa URL. Il proxy è la parte del bilanciatore del carico che contiene il certificato SSL per un bilanciatore del carico HTTPS. Dopo aver creato il certificato, puoi collegarlo al proxy di destinazione HTTPS.

    Per collegare un certificato Certificate Manager, esegui questo comando:

      gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \
          --url-map=URL_MAP_NAME \
          --certificate-manager-certificates=CERTIFICATE_NAME \
          --region=us-east1 \
          --project=SERVICE_PROJECT_ID
    

    Sostituisci quanto segue:

    • TARGET_HTTPS_PROXY_NAME: il nome del proxy HTTPS di destinazione
    • URL_MAP_NAME: il nome della mappa URL
    • CERTIFICATE_NAME: il nome del certificato SSL di Certificate Manager
    • SERVICE_PROJECT_ID: l'ID progetto Google Cloud assegnato al progetto di servizio
  5. Crea una regola di forwarding con un indirizzo IP nella regione us-east1 con il comando gcloud compute forwarding-rules create.

    Per il traffico HTTP, crea una regola di forwarding regionale per instradare le richieste in entrata al proxy HTTP di destinazione:

      gcloud compute forwarding-rules create FORWARDING_RULE_NAME \
          --load-balancing-scheme=EXTERNAL_MANAGED \
          --network=projects/HOST_PROJECT_ID/global/networks/lb-network \
          --address=RESERVED_IP_ADDRESS \
          --ports=80 \
          --region=us-east1 \
          --target-http-proxy=TARGET_HTTP_PROXY_NAME \
          --target-http-proxy-region=us-east1 \
          --project=SERVICE_PROJECT_ID
    

    Sostituisci quanto segue:

    • FORWARDING_RULE_NAME: il nome della regola di forwarding
    • HOST_PROJECT_ID: l'ID progetto Google Cloud assegnato al progetto host
    • RESERVED_IP_ADDRESS: l'indirizzo IP riservato
    • TARGET_HTTP_PROXY_NAME: il nome del proxy HTTP di destinazione
    • SERVICE_PROJECT_ID: l'ID progetto Google Cloud assegnato al progetto di servizio

    Per il traffico HTTPS, crea una regola di forwarding regionale per instradare le richieste in entrata al proxy HTTPS di destinazione:

      gcloud compute forwarding-rules create FORWARDING_RULE_NAME \
          --load-balancing-scheme=EXTERNAL_MANAGED \
          --network=projects/HOST_PROJECT_ID/global/networks/lb-network \
          --address=RESERVED_IP_ADDRESS \
          --ports=443 \
          --region=us-east1 \
          --target-https-proxy=TARGET_HTTPS_PROXY_NAME \
          --target-https-proxy-region=us-east1 \
          --project=SERVICE_PROJECT_ID
    

    Sostituisci quanto segue:

    • FORWARDING_RULE_NAME: il nome della regola di forwarding
    • HOST_PROJECT_ID: l'ID progetto Google Cloud assegnato al progetto host
    • RESERVED_IP_ADDRESS: l'indirizzo IP riservato
    • TARGET_HTTPS_PROXY_NAME: il nome del proxy HTTPS di destinazione
    • SERVICE_PROJECT_ID: l'ID progetto Google Cloud assegnato al progetto di servizio

Invia una richiesta HTTP al bilanciatore del carico

Ora che il servizio di bilanciamento del carico è in esecuzione, puoi inviare traffico alla regola di forwarding del bilanciatore del carico.

  1. Ottieni l'indirizzo IP della regola di forwarding del bilanciatore del carico, che si trova nella regione us-east1.

     gcloud compute forwarding-rules describe FORWARDING_RULE_NAME \
         --region=us-east1 \
         --project=SERVICE_PROJECT_ID
    

    Sostituisci quanto segue:

    • FORWARDING_RULE_NAME: il nome della regola di forwarding
    • SERVICE_PROJECT_ID: l'ID progetto Google Cloud assegnato al progetto di servizio

    Copia l'indirizzo IP restituito da utilizzare come FORWARDING_RULE_IP_ADDRESS nel passaggio successivo.

  2. Fai una richiesta HTTP all'indirizzo IP virtuale (VIP) della regola di forwarding utilizzando curl.

     curl http://FORWARDING_RULE_IP_ADDRESS/love-to-purr/three-cats.jpg --output three-cats.jpg
    
     curl http://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpg --output two-dogs.jpg
    

    Sostituisci FORWARDING_RULE_IP_ADDRESS con l'indirizzo IP della regola di forwarding del bilanciatore del carico.

Configura un bilanciatore del carico con una configurazione tra progetti

L'esempio precedente in questa pagina mostra come configurare un deployment VPC condiviso in cui tutti i componenti del bilanciatore del carico e i relativi backend vengono creati nel progetto di servizio.

I bilanciatori del carico delle applicazioni esterni regionali consentono anche di configurare deployment VPC condiviso in cui una mappa URL in un progetto host o di servizio può fare riferimento a bucket di backend situati in più progetti di servizio negli ambienti VPC condiviso.

Puoi utilizzare i passaggi descritti in questa sezione come riferimento per configurare una qualsiasi delle combinazioni supportate elencate qui:

  • Regola di forwarding, proxy di destinazione e mappa URL nel progetto host e bucket di backend in un progetto di servizio
  • Regola di forwarding, proxy di destinazione e mappa URL in un progetto di servizio e bucket di backend in un altro progetto di servizio

In questa sezione, la seconda configurazione è descritta come esempio.

Panoramica della configurazione

Questo esempio configura un bilanciatore del carico con il frontend e il backend in due progetti di servizio diversi.

Se non l'hai ancora fatto, devi configurare i ruoli richiesti e impostare un ambiente VPC condiviso. Per le istruzioni, consulta le sezioni seguenti all'inizio di questa pagina:

Figura 2. Frontend e backend del bilanciatore del carico in progetti di servizio diversi
Figura 2. Frontend e backend del bilanciatore del carico in progetti di servizio diversi

Configura i bucket Cloud Storage e i bucket di backend nel service project B

Tutti i passaggi di questa sezione devono essere eseguiti nel progetto di servizio B.

La procedura per configurare i bucket Cloud Storage e i bucket di backend è la seguente:

  1. Crea i bucket Cloud Storage.
  2. Copia i contenuti nei bucket Cloud Storage.
  3. Rendi accessibili pubblicamente i bucket Cloud Storage.
  4. Crea bucket di backend e indirizzali ai bucket Cloud Storage.

Crea i bucket Cloud Storage

Console

  1. Nella console Google Cloud , vai alla pagina Bucket in Cloud Storage.

    Vai a Bucket

  2. Fai clic su Crea.

  3. Nella sezione Inizia, inserisci un nome univoco globale che rispetti le linee guida per l'assegnazione dei nomi.

  4. Fai clic su Scegli dove archiviare i tuoi dati.

  5. Imposta Tipo di località su Area geografica.

  6. Dall'elenco delle regioni, seleziona us-east1.

  7. Fai clic su Crea.

  8. Fai clic su Bucket per tornare alla pagina Bucket Cloud Storage. Segui queste istruzioni per creare un secondo bucket nella regione us-east1.

gcloud

  1. Crea il primo bucket nella regione us-east1 con il comando gcloud storage buckets create.

    gcloud storage buckets create gs://BUCKET1_NAME \
        --default-storage-class=standard \
        --location=us-east1 \
        --uniform-bucket-level-access \
        --project=SERVICE_PROJECT_B_ID
    
  2. Crea il secondo bucket anche nella regione us-east1 con il comando gcloud storage buckets create.

    gcloud storage buckets create gs://BUCKET2_NAME \
        --default-storage-class=standard \
        --location=us-east1 \
        --uniform-bucket-level-access \
        --project=SERVICE_PROJECT_B_ID
    

Sostituisci quanto segue:

  • BUCKET1_NAME e BUCKET2_NAME: il nome del tuo bucket Cloud Storage
  • SERVICE_PROJECT_B_ID: l'ID progetto Google Cloud assegnato al progetto di servizio B

Copia i contenuti nei bucket Cloud Storage

Per popolare i bucket Cloud Storage, copia un file grafico da un bucket Cloud Storage pubblico ai tuoi bucket Cloud Storage.

    gcloud storage cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://BUCKET1_NAME/love-to-purr/
  
    gcloud storage cp gs://gcp-external-http-lb-with-bucket/two-dogs.jpg gs://BUCKET2_NAME/love-to-fetch/
  

Sostituisci BUCKET1_NAME e BUCKET2_NAME con il nome dei tuoi bucket Cloud Storage.

Rendi pubblicamente accessibili i bucket Cloud Storage

Per rendere accessibili tutti gli oggetti in un bucket a chiunque su internet, concedi all'entità allUsers il ruolo Visualizzatore oggetti Storage (roles/storage.objectViewer).

Console

Per concedere a tutti gli utenti l'accesso in visualizzazione agli oggetti nei bucket, ripeti la seguente procedura per ogni bucket:

  1. Nella console Google Cloud , vai alla pagina Bucket in Cloud Storage.

    Vai a Bucket

  2. Nell'elenco dei bucket, fai clic sul nome del bucket che vuoi rendere pubblico.

  3. Seleziona la scheda Autorizzazioni.

  4. Nella sezione Autorizzazioni, fai clic sul pulsante Concedi l'accesso. Viene visualizzata la finestra di dialogo Concedi l'accesso.

  5. Nel campo Nuove entità, inserisci allUsers.

  6. Nel campo Seleziona un ruolo, inserisci Storage Object Viewer nella casella del filtro e seleziona Visualizzatore oggetti Storage dai risultati filtrati.

  7. Fai clic su Salva.

  8. Fai clic su Consenti accesso pubblico.

gcloud

Per concedere a tutti gli utenti l'accesso per visualizzare gli oggetti nei bucket, esegui il comando buckets add-iam-policy-binding.

gcloud storage buckets add-iam-policy-binding gs://BUCKET1_NAME --member=allUsers --role=roles/storage.objectViewer
gcloud storage buckets add-iam-policy-binding gs://BUCKET2_NAME --member=allUsers --role=roles/storage.objectViewer

Sostituisci BUCKET1_NAME e BUCKET2_NAME con il nome dei tuoi bucket Cloud Storage.

Crea bucket di backend e indirizzali ai bucket Cloud Storage

Per creare i bucket di backend:

  1. Crea due bucket di backend con il comando gcloud compute backend-buckets create. I bucket di backend hanno uno schema di bilanciamento del carico di EXTERNAL_MANAGED.

      gcloud beta compute backend-buckets create backend-bucket-cats \
          --gcs-bucket-name=BUCKET1_NAME \
          --load-balancing-scheme=EXTERNAL_MANAGED \
          --region=us-east1 \
          --project=SERVICE_PROJECT_B_ID
    
      gcloud beta compute backend-buckets create backend-bucket-dogs \
          --gcs-bucket-name=BUCKET2_NAME \
          --load-balancing-scheme=EXTERNAL_MANAGED \
          --region=us-east1 \
          --project=SERVICE_PROJECT_B_ID
    

    Sostituisci quanto segue:

    • BUCKET1_NAME e BUCKET2_NAME: il nome dei bucket Cloud Storage
    • SERVICE_PROJECT_ID: l'ID progetto Google Cloud assegnato al progetto di servizio

Configura i componenti frontend del bilanciatore del carico nel progetto di servizio A

Tutti i passaggi di questa sezione devono essere eseguiti nel progetto di servizio A.

Nel progetto di servizio A, devi creare i seguenti componenti di bilanciamento del carico frontend:

  1. Una risorsa del certificato SSL collegata al proxy di destinazione. Per creare il certificato SSL, puoi seguire i passaggi descritti nella sezione precedente.
  2. Un indirizzo IP per la regola di forwarding del bilanciatore del carico. Per creare un indirizzo IP, puoi seguire i passaggi descritti nella sezione precedente.
  3. Una mappa URL che fa riferimento ai bucket di backend nel progetto di servizio B
  4. Un proxy di destinazione
  5. Una regola di forwarding con indirizzi IP regionali. La regola di forwarding ha un indirizzo IP esterno.

Per creare la mappa URL, il proxy di destinazione e la regola di forwarding:

  1. Crea una mappa URL per instradare le richieste in entrata al bucket di backend con il comando gcloud beta compute url-maps create.

      gcloud beta compute url-maps create URL_MAP_NAME \
          --default-backend-bucket=backend-bucket-cats \
          --region=us-east1 \
          --project=SERVICE_PROJECT_A_ID
    

    Sostituisci quanto segue:

    • URL_MAP_NAME: il nome della mappa URL
    • SERVICE_PROJECT_A_ID: l'ID progetto Google Cloud assegnato al progetto di servizio A
  2. Configura le regole host e percorso della mappa URL con il comando gcloud beta compute url-maps add-path-matcher.

    In questo esempio, il bucket di backend predefinito è backend-bucket-cats, che gestisce tutti i percorsi al suo interno. Tuttavia, qualsiasi richiesta di targeting http://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpg utilizza il backend backend-bucket-dogs. Ad esempio, se la cartella /love-to-fetch/ esiste anche nel backend predefinito (backend-bucket-cats), il bilanciatore del carico assegna la priorità al backend backend-bucket-dogs perché esiste una regola di percorso specifica per /love-to-fetch/*.

      gcloud beta compute url-maps add-path-matcher URL_MAP_NAME \
          --path-matcher-name=path-matcher-pets \
          --new-hosts=* \
          --backend-bucket-path-rules="/love-to-fetch/*=projects/SERVICE_PROJECT_B_ID/regional/backendBuckets/backend-bucket-dogs" \
          --default-backend-bucket=projects/SERVICE_PROJECT_B_ID/regional/backendBuckets/backend-bucket-cats \
          --region=us-east1 \
          --project=SERVICE_PROJECT_A_ID
    

    Sostituisci quanto segue:

    • URL_MAP_NAME: il nome della mappa URL
    • SERVICE_PROJECT_A_ID: l'ID progetto Google Cloud assegnato al progetto di servizio A
  3. Crea un proxy di destinazione con il comando gcloud compute target-http-proxies create.

    Per il traffico HTTP, crea un proxy HTTP di destinazione per instradare le richieste alla mappa URL:

      gcloud compute target-http-proxies create TARGET_HTTP_PROXY_NAME \
          --url-map=URL_MAP_NAME \
          --region=us-east1 \
          --project=SERVICE_PROJECT_A_ID
    

    Sostituisci quanto segue:

    • TARGET_HTTP_PROXY_NAME: il nome del proxy HTTP di destinazione
    • URL_MAP_NAME: il nome della mappa URL
    • SERVICE_PROJECT_A_ID: l'ID progetto Google Cloud assegnato al progetto di servizio A

    Per il traffico HTTPS, crea un proxy HTTPS di destinazione per instradare le richieste alla mappa URL. Il proxy è la parte del bilanciatore del carico che contiene il certificato SSL per un bilanciatore del carico HTTPS. Dopo aver creato il certificato, puoi collegarlo al proxy di destinazione HTTPS.

    Per collegare un certificato Certificate Manager, esegui questo comando:

      gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \
          --url-map=lb-map \
          --certificate-manager-certificates=CERTIFICATE_NAME \
          --region=us-east1 \
          --project=SERVICE_PROJECT_A_ID
    

    Sostituisci quanto segue:

    • TARGET_HTTPS_PROXY_NAME: il nome del proxy HTTPS di destinazione
    • URL_MAP_NAME: il nome della mappa URL
    • CERTIFICATE_NAME: il nome del certificato SSL di Certificate Manager
    • SERVICE_PROJECT_A_ID: l'ID progetto Google Cloud assegnato al progetto di servizio A
  4. Crea una regola di forwarding con un indirizzo IP nella regione asia-east1 con il comando gcloud compute forwarding-rules create.

    Per il traffico HTTP, crea una regola di forwarding regionale per instradare le richieste in entrata al proxy HTTP di destinazione:

      gcloud compute forwarding-rules create FORWARDING_RULE_NAME \
          --load-balancing-scheme=EXTERNAL_MANAGED \
          --network=projects/HOST_PROJECT_ID/global/networks/lb-network \
          --address=RESERVED_IP_ADDRESS \
          --ports=80 \
          --region=us-east1 \
          --target-http-proxy=TARGET_HTTP_PROXY_NAME \
          --target-http-proxy-region=us-east1 \
          --project=SERVICE_PROJECT_A_ID
    

    Sostituisci quanto segue:

    • FORWARDING_RULE_NAME: il nome della regola di forwarding
    • HOST_PROJECT_ID: l'ID progetto Google Cloud assegnato al progetto host
    • RESERVED_IP_ADDRESS: l'indirizzo IP riservato
    • TARGET_HTTP_PROXY_NAME: il nome del proxy HTTP di destinazione
    • SERVICE_PROJECT_A_ID: l'ID progetto Google Cloud assegnato al progetto di servizio A

    Per il traffico HTTPS, crea una regola di forwarding regionale per instradare le richieste in entrata al proxy HTTPS di destinazione:

      gcloud compute forwarding-rules create FORWARDING_RULE_NAME \
          --load-balancing-scheme=EXTERNAL_MANAGED \
          --network=projects/HOST_PROJECT_ID/global/networks/lb-network \
          --address=RESERVED_IP_ADDRESS \
          --ports=443 \
          --region=us-east1 \
          --target-https-proxy=TARGET_HTTPS_PROXY_NAME \
          --target-https-proxy-region=us-east1 \
          --project=SERVICE_PROJECT_A_ID
    

    Sostituisci quanto segue:

    • FORWARDING_RULE_NAME: il nome della regola di forwarding
    • HOST_PROJECT_ID: l'ID progetto Google Cloud assegnato al progetto host
    • RESERVED_IP_ADDRESS: l'indirizzo IP riservato
    • TARGET_HTTPS_PROXY_NAME: il nome del proxy HTTPS di destinazione
    • SERVICE_PROJECT_A_ID: l'ID progetto Google Cloud assegnato al progetto di servizio A

Concedi l'autorizzazione all'amministratore del bilanciatore del carico Compute per utilizzare il bucket di backend nel progetto di servizio

Se vuoi che i bilanciatori del carico facciano riferimento ai bucket di backend in altri progetti di servizio, l'amministratore del bilanciatore del carico deve disporre dell'autorizzazione compute.backendBuckets.use. Per concedere questa autorizzazione, puoi utilizzare il ruolo IAM predefinito denominato Utente dei servizi bilanciatore del carico Compute (roles/compute.loadBalancerServiceUser). Questo ruolo deve essere concesso dall'amministratore del progetto di servizio e può essere applicato a livello di progetto di servizio o a livello di singolo bucket di backend.

In questo esempio, un amministratore del progetto di servizio del progetto di servizio B deve eseguire uno dei seguenti comandi per concedere l'autorizzazione compute.backendBuckets.use a un amministratore del bilanciatore del carico del progetto di servizio A. Questa operazione può essere eseguita a livello di progetto (per tutti i bucket di backend nel progetto) o per bucket di backend.

Console

Autorizzazioni a livello di progetto

Segui questi passaggi per concedere le autorizzazioni a tutti i bucket di backend nel tuo progetto.

Per completare questo passaggio, devi disporre delle autorizzazioni compute.regionBackendBuckets.setIamPolicy e resourcemanager.projects.setIamPolicy.

  1. Nella console Google Cloud , vai alla pagina IAM.

    Vai a IAM

  2. Seleziona il progetto.

  3. Fai clic su Concedi l'accesso.

  4. Nel campo Nuove entità, inserisci l'indirizzo email o un altro identificatore dell'entità.

  5. Nella sezione Assegna ruoli, fai clic su Aggiungi ruoli.

  6. Nella finestra di dialogo Seleziona ruoli, inserisci Compute Load Balancer Services User nel campo Cerca ruoli.

  7. Seleziona la casella di controllo Compute Load Balancer Services User.

  8. Fai clic su Applica.

  9. (Facoltativo) Aggiungi una condizione al ruolo.

  10. Fai clic su Salva.

Autorizzazioni a livello di risorsa per singoli bucket di backend

Per concedere le autorizzazioni ai singoli bucket di backend nel tuo progetto:

Per completare questo passaggio, devi disporre dell'autorizzazione compute.regionBackendBuckets.setIamPolicy.

  1. Nella console Google Cloud , vai alla pagina Backend.

    Vai a Backend

  2. Nell'elenco dei backend, seleziona il bucket di backend a cui vuoi concedere l'accesso e fai clic su Autorizzazioni.

  3. Fai clic su Aggiungi entità.

  4. Nel campo Nuove entità, inserisci l'indirizzo email o un altro identificatore dell'entità.

  5. Nell'elenco Seleziona un ruolo, seleziona Compute Load Balancer Services User.

  6. Fai clic su Salva.

gcloud

Autorizzazioni a livello di progetto

Segui questi passaggi per concedere le autorizzazioni a tutti i bucket di backend nel tuo progetto.

Per completare questo passaggio, devi disporre delle autorizzazioni compute.regionBackendBuckets.setIamPolicy e resourcemanager.projects.setIamPolicy.

  gcloud projects add-iam-policy-binding SERVICE_PROJECT_B_ID \
      --member="user:LOAD_BALANCER_ADMIN" \
      --role="roles/compute.loadBalancerServiceUser"

Sostituisci quanto segue:

  • SERVICE_PROJECT_B_ID: l'ID progetto Google Cloud assegnato al progetto di servizio B
  • LOAD_BALANCER_ADMIN: l'entità per la quale aggiungere l'associazione

Autorizzazioni a livello di risorsa per singoli bucket di backend

A livello di bucket di backend, gli amministratori del progetto di servizio possono utilizzare uno dei seguenti comandi per concedere il ruolo Utente dei servizi bilanciatore del carico Compute (roles/compute.loadBalancerServiceUser):

Utilizza il comando gcloud projects add-iam-policy-binding per concedere il ruolo Utente dei servizi bilanciatore del carico Compute.

Per completare questo passaggio, devi disporre dell'autorizzazione compute.regionBackendBuckets.setIamPolicy.

  gcloud projects add-iam-policy-binding SERVICE_PROJECT_B_ID \
      --member="user:LOAD_BALANCER_ADMIN" \
      --role="roles/compute.loadBalancerServiceUser" \
      --condition='expression=resource.name=="projects/SERVICE_PROJECT_B_ID/regions/REGION/backendBuckets/BACKEND_BUCKET_NAME",title=Shared VPC condition'
Sostituisci quanto segue:
  • SERVICE_PROJECT_B_ID: l'ID progetto Google Cloud assegnato al progetto di servizio B
  • LOAD_BALANCER_ADMIN: l'entità per la quale aggiungere l'associazione
  • REGION: la regione Google Cloud in cui si trova il bucket di backend
  • BACKEND_BUCKET_NAME: il nome del bucket di backend
In alternativa, utilizza il comando gcloud compute backend-buckets add-iam-policy-binding per concedere il ruolo Utente dei servizi bilanciatore del carico Compute.
  gcloud compute backend-buckets add-iam-policy-binding BACKEND_BUCKET_NAME \
      --member="user:LOAD_BALANCER_ADMIN" \
      --role="roles/compute.loadBalancerServiceUser" \
      --project=SERVICE_PROJECT_B_ID \
      --region=REGION

Invia una richiesta HTTP al bilanciatore del carico

Ora che il servizio di bilanciamento del carico è in esecuzione, puoi inviare traffico alla regola di forwarding del bilanciatore del carico.

  1. Ottieni l'indirizzo IP della regola di forwarding del bilanciatore del carico, che si trova nella regione us-east1.

     gcloud compute forwarding-rules describe FORWARDING_RULE_NAME \
         --region=us-east1 \
         --project=SERVICE_PROJECT_A_ID
    

    Sostituisci quanto segue:

    • FORWARDING_RULE_NAME: il nome della regola di forwarding
    • SERVICE_PROJECT_ID: l'ID progetto Google Cloud assegnato al progetto di servizio

    Copia l'indirizzo IP restituito da utilizzare come FORWARDING_RULE_IP_ADDRESS nel passaggio successivo.

  2. Invia una richiesta HTTP al VIP della regola di forwarding utilizzando curl.

    curl http://FORWARDING_RULE_IP_ADDRESS/love-to-purr/three-cats.jpg --output three-cats.jpg
    
    curl http://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpg --output two-dogs.jpg
    

    Sostituisci FORWARDING_RULE_IP_ADDRESS con l'indirizzo IP della regola di forwarding del bilanciatore del carico.

Passaggi successivi