Configura un bilanciatore del carico delle applicazioni esterno regionale con Cloud Run

Questa pagina mostra come eseguire il deployment di un bilanciatore del carico delle applicazioni esterno regionale con un backend Cloud Run. Per configurare questa opzione, utilizza un backend NEG serverless per il bilanciatore del carico.

Prima di provare questa procedura, assicurati di conoscere i seguenti argomenti:

La guida mostra come configurare un bilanciatore del carico delle applicazioni che esegue il proxy delle richieste a un backend NEG serverless.

I NEG serverless ti consentono di utilizzare i servizi Cloud Run con il bilanciatore del carico. Dopo aver configurato un bilanciatore del carico con il backend NEG serverless, le richieste al bilanciatore del carico vengono instradate al backend di Cloud Run.

Prima di iniziare

  1. Installa Google Cloud CLI.
  2. Esegui il deployment di un servizio Cloud Run.
  3. Configura le autorizzazioni.

Installa Google Cloud SDK

Installa lo strumento Google Cloud CLI. Consulta la panoramica di gcloud per informazioni concettuali e di installazione sullo strumento.

Se non hai mai eseguito gcloud CLI, esegui prima gcloud init per inizializzare la directory gcloud.

Esegui il deployment di un servizio Cloud Run

Le istruzioni riportate in questa pagina presuppongono che tu abbia già un servizio Cloud Run in esecuzione.

Per l'esempio in questa pagina, puoi utilizzare uno dei walkthrough di Cloud Run per eseguire il deployment di un servizio Cloud Run.

Il NEG serverless e il bilanciatore del carico devono trovarsi nella stessa regione del servizio Cloud Run. Puoi bloccare le richieste esterne inviate direttamente agli URL predefiniti del servizio Cloud Run limitando l'accesso a internal and cloud load balancing. Ad esempio:

gcloud run deploy CLOUD_RUN_SERVICE_NAME \
    --platform=managed \
    --allow-unauthenticated \
    --ingress=internal-and-cloud-load-balancing \
    --region=REGION \
    --image=IMAGE_URL

Prendi nota del nome del servizio che crei. Il resto di questa pagina spiega come configurare un bilanciatore del carico che inoltra le richieste a questo servizio.

Configura autorizzazioni

Per seguire questa guida, devi creare un NEG serverless e un bilanciatore del carico in un progetto. Devi essere un proprietario o un editor del progetto oppure disporre dei seguenti ruoli e autorizzazioni IAM di Compute Engine:

Attività Ruolo richiesto
Crea componenti di bilanciamento del carico e di rete Amministratore di rete
Creare e modificare i NEG Amministratore istanze Compute
Crea e modifica i certificati SSL Amministratore della sicurezza

Configura la rete e le subnet

Per configurare la rete e le relative subnet, devi eseguire le seguenti attività:

  • Crea una rete e una subnet VPC.
  • Crea una subnet solo proxy.

crea la rete VPC

Crea una rete VPC in modalità personalizzata, quindi le subnet che vuoi all'interno di una regione.

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. In Modalità di creazione subnet, seleziona Personalizzata.

  5. Nella sezione Nuova subnet, specifica i seguenti parametri di configurazione per una subnet:

    1. In Nome, inserisci lb-subnet.
    2. Seleziona una Regione.
    3. In Intervallo di indirizzi IP, inserisci 10.1.2.0/24.
    4. Fai clic su Fine.
  6. Fai clic su Crea.

gcloud

  1. Crea la rete VPC personalizzata utilizzando il comando gcloud compute networks create:

    gcloud compute networks create lb-network --subnet-mode=custom
    
  2. Crea una subnet nella rete lb-network. Questo esempio utilizza un intervallo di indirizzi IP di 10.1.2.0/24 per la subnet. Puoi configurare qualsiasi intervallo di subnet valido.

    gcloud compute networks subnets create lb-subnet \
    --network=lb-network \
    --range=10.1.2.0/24 \
    --region=REGION
    

Creare una subnet solo proxy

Crea una subnet solo proxy per tutti i bilanciatori del carico basati su Envoy a livello di regione in una regione specifica della rete lb-network.

Console

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

    Vai a Reti VPC

  2. Fai clic sul nome della rete VPC condiviso a cui vuoi aggiungere la subnet solo proxy.

  3. Fai clic su Aggiungi subnet.

  4. Nel campo Nome, inserisci proxy-only-subnet.

  5. Seleziona una Regione.

  6. Imposta Finalità su Proxy gestito a livello di regione.

  7. Inserisci un intervallo di indirizzi IP come 10.129.0.0/23.

  8. Fai clic su Aggiungi.

gcloud

  1. Crea la subnet solo proxy utilizzando il comando gcloud compute networks subnets create.

    Questo esempio utilizza un intervallo di indirizzi IP di 10.129.0.0/23 per la subnet solo proxy. Puoi configurare qualsiasi intervallo di subnet valido.

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

Crea il bilanciatore del carico

Nel seguente diagramma, il bilanciatore del carico utilizza un backend NEG serverless per indirizzare le richieste a un servizio Cloud Run serverless.

Il traffico che va dal bilanciatore del carico ai backend NEG serverless utilizza route speciali definiti all'esterno della tua VPC che non sono soggetti alle regole del firewall. Pertanto, se il bilanciatore del carico ha solo backend NEG serverless, non è necessario creare regole firewall per consentire il traffico dalla subnet solo proxy al backend serverless.

Architettura di bilanciamento del carico HTTP(S) esterno a livello di regione per un'applicazione Cloud Run.
Architettura di bilanciamento del carico HTTP(S) esterno a livello regionale per un'applicazione Cloud Run (fai clic per ingrandire).

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 Pubblico (esterno) e fai clic su Avanti.
  5. In Deployment globale o in una regione singola, seleziona Ideale per carichi di lavoro regionali e fai clic su Avanti.
  6. Fai clic su Configura.

Configurazione di base

  1. Inserisci serverless-lb come nome del bilanciatore del carico.
  2. Seleziona la Rete come lb_network.
  3. Tieni aperta la finestra per continuare.

Configura il frontend

  1. Prima di procedere, assicurati di avere un certificato SSL.
  2. Fai clic su Configurazione frontend.
  3. Inserisci un nome.
  4. Per configurare un bilanciatore del carico delle applicazioni esterno regionale, compila i campi come segue.
    1. In Protocollo, seleziona HTTPS.
    2. In Livello di servizio di rete, seleziona Standard.
    3. In Versione IP, seleziona IPv4.
    4. In Indirizzo IP, seleziona Ephemero.
    5. In Porta, seleziona 443.
    6. In Certificato, seleziona un certificato SSL esistente o creane uno nuovo.

      L'esempio seguente mostra come creare certificati SSL di Compute Engine:

    7. Fai clic su Crea un nuovo certificato.
      1. Nel campo Nome, inserisci un nome.
      2. Nei campi appropriati, carica i file in formato PEM:
        • Certificato
        • Chiave privata
      3. Fai clic su Crea.

    Se vuoi testare questa procedura senza configurare una risorsa del certificato SSL, puoi configurare un bilanciatore del carico HTTP.

  5. (Facoltativo) Per creare un bilanciatore del carico HTTP:
    1. In Protocollo, seleziona HTTP.
    2. In Livello di servizio di rete, seleziona Standard.
    3. In Versione IP, seleziona IPv4.
    4. In Indirizzo IP, seleziona Ephemero.
    5. In Porta, seleziona 80.
  6. Fai clic su Fine.

Configura i servizi di backend

  1. Fai clic su Configurazione backend.
  2. Nel menu a discesa Crea o seleziona servizi di backend, tieni il puntatore del mouse su Servizi di backend, quindi seleziona Crea un servizio di backend.
  3. Nella finestra Crea un servizio di backend, inserisci un nome.
  4. In Tipo di backend, seleziona Gruppo di endpoint di rete serverless.
  5. Lascia invariato il campo Protocollo. Questo parametro viene ignorato.
  6. In Backend > Nuovo backend, seleziona Crea gruppo di endpoint di rete serverless.
    1. Nella finestra Crea gruppo di endpoint di rete serverless, inserisci un nome.
    2. In Regione viene visualizzata la regione del bilanciatore del carico.
    3. Nel campo Tipo di gruppo di endpoint di rete serverless, seleziona Cloud Run. Cloud Run è l'unico tipo supportato.
    4. Seleziona Seleziona il nome servizio.
    5. Nell'elenco a discesa Servizio, seleziona il servizio Cloud Run per cui vuoi creare un bilanciatore del carico.
    6. Fai clic su Fine.
    7. Fai clic su Crea.
  7. Nella finestra Crea servizio di backend, fai clic su Crea.

Configura le regole di routing

Le regole di routing determinano come viene indirizzato il traffico. Puoi indirizzare il traffico a un servizio di backend o a un servizio Kubernetes. Tutto il traffico che non corrisponde esplicitamente a un matcher host e percorso viene inviato al servizio predefinito.

  1. Fai clic su Regola semplice per host e percorso.
  2. Seleziona un servizio di backend dall'elenco a discesa Backend.

Rivedi la configurazione

  1. Fai clic su Esamina e finalizza.
  2. Esamina i valori per Backend, Regole host e percorso e Frontend.
  3. (Facoltativo) Fai clic su Codice equivalente per visualizzare la richiesta dell'API REST che verrà utilizzata per creare il bilanciatore del carico.
  4. Fai clic su Crea. Attendi che la creazione del bilanciatore del carico sia completa.
  5. Fai clic sul nome del bilanciatore del carico (serverless-lb).
  6. Prendi nota dell'indirizzo IP del bilanciatore del carico, che utilizzerai nella prossima attività.

gcloud

  1. Prenota un indirizzo IP esterno statico per il bilanciatore del carico.
        gcloud compute addresses create IP_ADDRESS_NAME  \
            --region=REGION \
            --network-tier=STANDARD
        
  2. Crea un NEG serverless per il tuo servizio Cloud Run:
        gcloud compute network-endpoint-groups create SERVERLESS_NEG_NAME \
            --region=REGION \
            --network-endpoint-type=serverless  \
            --cloud-run-service=CLOUD_RUN_SERVICE_NAME
        
  3. Crea un servizio di backend regionale. Imposta --protocol su HTTP. Questo parametro viene ignorato, ma è obbligatorio perché --protocol altrimenti è impostato su TCP per impostazione predefinita.
        gcloud compute backend-services create BACKEND_SERVICE_NAME \
            --load-balancing-scheme=EXTERNAL_MANAGED \
            --protocol=HTTP \
            --region=REGION
        
  4. Aggiungi il NEG serverless come backend al servizio di backend:
        gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
            --region=REGION \
            --network-endpoint-group=SERVERLESS_NEG_NAME \
            --network-endpoint-group-region=REGION
        
  5. Crea una mappa URL a livello di regione per instradare le richieste in entrata al servizio di backend:
        gcloud compute url-maps create URL_MAP_NAME \
            --default-service=BACKEND_SERVICE_NAME \
            --region=REGION
        
    Questa mappa URL di esempio ha come target un solo servizio di backend che rappresenta una singola app serverless, quindi non è necessario configurare regole host o corrispondenze di percorso.
  6. (Facoltativo) Esegui questo passaggio se utilizzi HTTPS tra il client e il bilanciatore del carico. Questo passaggio non è necessario per i bilanciatori del carico HTTP.

    Puoi creare certificati Compute Engine o Certificate Manager. Utilizza uno dei seguenti metodi per creare certificati utilizzando Certificate Manager:

    • Certificati autogestiti a livello di regione. Per informazioni su come creare e utilizzare i certificati autogestiti a livello di regione, consulta la sezione Eseguire il deployment di un certificato autogestito a livello di regione. Le mappe dei certificati non sono supportate.

    • Certificati gestiti da Google a livello di regione. Le mappe dei certificati non sono supportate.

      Gestore certificati supporta i seguenti tipi di certificati gestiti da Google a livello di regione:

    • Dopo aver creato i certificati, allegali direttamente al proxy di destinazione.

      Per creare una risorsa del certificato SSL autogestito a livello di regione:
          gcloud compute ssl-certificates create SSL_CERTIFICATE_NAME \
              --certificate CRT_FILE_PATH \
              --private-key KEY_FILE_PATH \
              --region=REGION
          
    • Crea un proxy di destinazione a livello di regione per instradare le richieste alla mappa URL.

      Per un bilanciatore del carico HTTP, crea un proxy di destinazione HTTP:
          gcloud compute target-http-proxies create TARGET_HTTP_PROXY_NAME \
              --url-map=URL_MAP_NAME \
              --region=REGION
          
      Per un bilanciatore del carico HTTPS, crea un proxy di destinazione HTTPS. Il proxy è la parte del bilanciatore del carico che contiene il certificato SSL per il bilanciamento del carico HTTPS, quindi devi caricare anche il tuo certificato in questo passaggio.
          gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \
              --ssl-certificates=SSL_CERTIFICATE_NAME \
              --url-map=URL_MAP_NAME \
              --region=REGION
          
    • Crea una regola di forwarding per instradare le richieste in entrata al proxy. Per un bilanciatore del carico HTTP:
          gcloud compute forwarding-rules create HTTP_FORWARDING_RULE_NAME \
              --load-balancing-scheme=EXTERNAL_MANAGED \
              --network-tier=STANDARD \
              --network=lb-network \
              --target-http-proxy=TARGET_HTTP_PROXY_NAME \
              --target-http-proxy-region=REGION \
              --region=REGION \
              --ports=80
          
      Per un bilanciatore del carico HTTPS:
          gcloud compute forwarding-rules create HTTPS_FORWARDING_RULE_NAME \
              --load-balancing-scheme=EXTERNAL_MANAGED \
              --network-tier=STANDARD \
              --network=lb-network \
              --target-https-proxy=TARGET_HTTPS_PROXY_NAME \
              --target-https-proxy-region=REGION \
              --region=REGION \
              --ports=443
          

Testa il bilanciatore del carico

Ora che hai configurato il bilanciatore del carico, puoi iniziare a inviare traffico al suo indirizzo IP.

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

    Vai a Bilanciamento del carico

  2. Fai clic sul bilanciatore del carico che hai appena creato.

  3. Prendi nota dell'indirizzo IP del bilanciatore del carico.

  4. Per un bilanciatore del carico HTTP, puoi testarlo utilizzando un browser web andando alla pagina http://IP_ADDRESS. Sostituisci IP_ADDRESS con l'indirizzo IP del bilanciatore del carico. Dovresti essere reindirizzato alla home page del servizio Cloud Run.

  5. Per un bilanciatore del carico HTTPS, puoi testarlo utilizzando un browser web andando alla pagina https://IP_ADDRESS. Sostituisci IP_ADDRESS con l'indirizzo IP del bilanciatore del carico. Verrà visualizzata la home page del servizio Cloud Run.
    Se hai utilizzato un certificato autofirmato per i test, il browser visualizza un avviso. Devi indicare esplicitamente al browser di accettare un certificato autofirmato. Fai clic sull'avviso per visualizzare la pagina effettiva.

Opzioni di configurazione aggiuntive

Questa sezione espande l'esempio di configurazione per fornire opzioni di configurazione alternative e aggiuntive. Tutte le attività sono facoltative. Puoi eseguire queste operazioni in qualsiasi ordine.

Utilizzo di una maschera URL

Quando crei un NEG serverless, anziché selezionare un servizio Cloud Run specifico, puoi utilizzare una maschera URL per indirizzare più servizi nello stesso dominio. Una maschera URL è un modello del tuo schema URL. Il NEG serverless utilizza questo modello per estrarre il nome del servizio dall'URL della richiesta in entrata e mappare la richiesta al servizio appropriato.

Le maschere URL sono particolarmente utili se il servizio è mappato a un dominio personalizzato anziché all'indirizzo predefinito fornito da Google Cloud per il servizio di cui è stato eseguito il deployment. Una maschera URL consente di scegliere come target più servizi e versioni con una singola regola anche quando l'applicazione utilizza un pattern URL personalizzato.

Se non l'hai ancora fatto, assicurati di leggere la panoramica dei NEGS serverless: Maschere URL.

Creare una maschera URL

Per creare una maschera URL per il bilanciatore del carico, inizia con l'URL del servizio. Questo esempio utilizza un'app serverless di esempio in esecuzione su https://example.com/login. Si tratta dell'URL in cui viene pubblicato il servizio login dell'app.

  1. Rimuovi http o https dall'URL. Ti restano example.com/login.
  2. Sostituisci il nome del servizio con un segnaposto per la maschera URL.
    • Cloud Run: sostituisci il nome del servizio Cloud Run con il segnaposto <service>. Se al servizio Cloud Run è associato un tag, sostituisci il nome del tag con il segnaposto <tag>. In questo esempio, la maschera URL che rimane è example.com/<service>.
  3. (Facoltativo) Se il nome del servizio può essere estratto dalla parte di percorso dell'URL, il dominio può essere omesso. La parte del percorso della maschera dell'URL è distinta dal primo carattere barra (/). Se nella maschera dell'URL non è presente una barra (/), si presume che la maschera rappresenti solo l'host. Pertanto, per questo esempio, la maschera URL può essere ridotta a /<service>.

    Analogamente, se <service> può essere estratto dalla parte host dell'URL, puoi omettere del tutto il percorso dalla maschera dell'URL.

    Puoi anche omettere tutti i componenti host o sottodominio che precedono il primo segnaposto, nonché tutti i componenti del percorso che seguono l'ultimo segnaposto. In questi casi, il segnaposto acquisisce le informazioni richieste per il componente.

Ecco altri esempi che illustrano queste regole:

Questa tabella presuppone che tu abbia un dominio personalizzato denominato example.com e che tutti i tuoi servizi Cloud Run siano mappati a questo dominio.

Servizio, Nome tag URL del dominio personalizzato Cloud Run Maschera URL
service: login https://login-home.example.com/web <service>-home.example.com
service: login https://example.com/login/web example.com/<service> o /<service>
service: login, tag: test https://test.login.example.com/web <tag>.<service>.example.com
service: login, tag: test https://example.com/home/login/test example.com/home/<service>/<tag> o /home/<service>/<tag>
service: login, tag: test https://test.example.com/home/login/web <tag>.example.com/home/<service>

Creazione di un NEG serverless con una maschera URL

Console

Per un nuovo bilanciatore del carico, puoi utilizzare la stessa procedura end-to-end descritta in precedenza in questo documento. Quando configuri il servizio di backend, anziché selezionare un servizio specifico, inserisci una maschera URL.

Se hai già un bilanciatore del carico, puoi modificare la configurazione del backend e fare in modo che il NEG serverless punti a una maschera URL anziché a un servizio specifico.

Per aggiungere un NEG serverless basato su maschera URL a un servizio di backend esistente:

  1. Nella console Google Cloud, vai alla pagina Bilanciamento del carico.
    Vai a Bilanciamento del carico
  2. Fai clic sul nome del bilanciatore del carico che contiene il servizio di backend da modificare.
  3. Nella pagina Dettagli del bilanciatore del carico, fai clic su Modifica.
  4. Nella pagina Modifica bilanciatore del carico delle applicazioni esterno globale, fai clic su Configurazione backend.
  5. Nella pagina Configurazione di backend, fai clic su Modifica per il servizio di backend da modificare.
  6. Fai clic su Aggiungi backend.
  7. Seleziona Crea gruppo di endpoint di rete serverless.
    1. In Nome, inserisci helloworld-serverless-neg.
    2. In Regione viene visualizzata la regione del bilanciatore del carico.
    3. In Tipo di gruppo di endpoint di rete serverless, Cloud Run è l'unico tipo di gruppo di endpoint di rete supportato.
      1. Seleziona Usa maschera URL.
      2. Inserisci una maschera URL. Per informazioni su come creare una maschera URL, consulta la sezione Creare una maschera URL.
      3. Fai clic su Crea.

  8. In Nuovo backend, fai clic su Fine.
  9. Fai clic su Aggiorna.

gcloud

Per creare un NEG serverless con una maschera URL di esempioexample.com/<service>:

gcloud compute network-endpoint-groups create SERVERLESS_NEG_MASK_NAME \
    --region=REGION \
    --network-endpoint-type=serverless \
    --cloud-run-url-mask="example.com/<service>"

Eliminazione di un NEG serverless

Un gruppo di endpoint di rete non può essere eliminato se è collegato a un servizio di backend. Prima di eliminare un gruppo di esclusioni, assicurati che sia scollegato dal servizio di backend.

Console

  1. Per assicurarti che il NEG serverless che vuoi eliminare non sia in uso da alcun servizio di backend, vai alla scheda Servizi di backend nella pagina Componenti di bilanciamento del carico.
    Vai a Servizi di backend
  2. Se il gruppo di elenchi di esclusione serverless è in uso:
    1. Fai clic sul nome del servizio di backend che utilizza il NEG serverless.
    2. Fai clic su Modifica.
    3. Nell'elenco Backend, fai clic su per rimuovere il backend NEG serverless dal servizio di backend.
    4. Fai clic su Salva.

  3. Vai alla pagina Gruppo di endpoint di rete nella console Google Cloud.
    Vai a Gruppo di endpoint di rete
  4. Seleziona la casella di controllo per il gruppo di elenchi di negazioni serverless da eliminare.
  5. Fai clic su Elimina.
  6. Fai di nuovo clic su Elimina per confermare.

gcloud

Per rimuovere un NEG serverless da un servizio di backend, devi specificare la regione in cui è stato creato il NEG.

gcloud compute backend-services remove-backend BACKEND_SERVICE_NAME \
    --network-endpoint-group=SERVERLESS_NEG_NAME \
    --network-endpoint-group-region=REGION \
    --region=REGION

Per eliminare il NEG serverless:

gcloud compute network-endpoint-groups delete SERVERLESS_NEG_NAME \
    --region=REGION

Passaggi successivi