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 il backend Cloud Run. Per configurarlo, utilizza un Backend serverless NEG per il bilanciatore del carico.

Prima di provare questa procedura, assicurati di acquisire familiarità con le seguenti argomenti:

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

I NEG serverless ti consentono di utilizzare con i servizi Cloud Run con il tuo bilanciatore del carico. Dopo la configurazione un bilanciatore del carico con il backend NEG serverless, le richieste al bilanciatore del carico vengono instradate al backend 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 Google Cloud CLI lo strumento a riga di comando gcloud. Consulta la panoramica di gcloud per concetti di base e di installazione informazioni sullo strumento.

Se non hai mai eseguito gcloud CLI in precedenza, esegui prima gcloud init per inizializzare 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 qualsiasi dei Guide di avvio rapido di Cloud Run per eseguire il deployment dal servizio Cloud Run.

Il NEG serverless e il bilanciatore del carico devono trovarsi nella stessa regione dal servizio Cloud Run. Puoi bloccare le richieste esterne inviate direttamente all'impostazione Cloud Run del servizio URL limitando il traffico in entrata 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 mostra come configurare un bilanciatore del carico che instrada le richieste a questo servizio.

Configura autorizzazioni

Per seguire questa guida, devi creare un NEG serverless e un con il bilanciatore del carico di rete in un progetto. Devi essere il proprietario o il proprietario di un progetto Editor oppure dovresti avere quanto segue Ruoli IAM di Compute Engine:

Attività Ruolo richiesto
Creazione dei componenti di rete e del bilanciatore del carico Amministratore rete
Crea e modifica i NEG Amministratore istanze Compute
Creazione e modifica dei certificati SSL Amministratore sicurezza

Configura la rete e le subnet

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

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

crea la rete VPC

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

Console

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

    Vai alle 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 la seguente 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 indirizzo IP di 10.1.2.0/24 per la subnet. Puoi configurare qualsiasi subnet valida intervallo.

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

Crea una subnet solo proxy

Crea una subnet solo proxy per tutto il carico basato su Envoy a livello di regione bilanciatori del carico regione specifica della rete lb-network.

Console

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

    Vai alle reti VPC

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

  3. Fai clic su Aggiungi subnet.

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

  5. Seleziona una Regione.

  6. Imposta Purpose su Regional Managed Proxy (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 una subnet solo proxy. Puoi configurare qualsiasi subnet valida intervallo.

    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 diagramma seguente, il bilanciatore del carico utilizza un backend NEG serverless per indirizzare le richieste a un servizio Cloud Run 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 di regione per un'applicazione Cloud Run

Il traffico che va dal bilanciatore del carico ai backend NEG serverless utilizza l'uso speciale route definite all'esterno del VPC che non sono soggette al firewall le regole del caso. Di conseguenza, 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.

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. Per Tipo di bilanciatore del carico, seleziona Bilanciatore del carico delle applicazioni (HTTP/HTTPS) e fai clic su Avanti.
  4. Per Pubblico o interno, seleziona Rivolto al pubblico (esterno) e fai clic su Avanti.
  5. Per Deployment globale o in una regione singola, seleziona Ideale per regionali e fai clic su Avanti.
  6. Fai clic su Configura.

Configurazione di base

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

Configura il frontend

  1. Prima di procedere, assicurati di avere 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 .
    1. In Protocollo, seleziona HTTPS.
    2. In Versione IP, seleziona IPv4.
    3. In Indirizzo IP, seleziona Temporaneo.
    4. In Porta, seleziona 443.
    5. In Certificato, seleziona un certificato SSL esistente oppure per creare un nuovo certificato.

      L'esempio seguente mostra come creare Compute Engine Certificati SSL:

    6. Fai clic su Crea un nuovo certificato.
      1. Inserisci un nome nel campo 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 un certificato SSL puoi configurare un bilanciatore del carico HTTP.

  5. (Facoltativo) Per creare un bilanciatore del carico HTTP, segui questi passaggi:
    1. In Protocollo, seleziona HTTP.
    2. In Versione IP, seleziona IPv4.
    3. In Indirizzo IP, seleziona Temporaneo.
    4. 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 premuto il puntatore su Servizi di backend e 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 un 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 nome servizio.
    5. Nell'elenco a discesa Servizio, seleziona la dal servizio Cloud Run in cui creare con il bilanciatore del carico HTTP(S).
    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 inviate al servizio predefinito.

  1. Fai clic su Regola host e percorso semplice.
  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 relativi a regole di backend, host e percorso e Frontend.
  3. (Facoltativo) Fai clic su Codice equivalente per visualizzare la richiesta API REST. che verrà utilizzato 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 Cloud Run servizio:
        gcloud compute network-endpoint-groups create SERVERLESS_NEG_NAME \
            --region=REGION \
            --network-endpoint-type=serverless  \
            --cloud-run-service=CLOUD_RUN_SERVICE_NAME
        
  3. Creare un servizio di backend a livello di regione. Imposta --protocol su HTTP. Questo parametro viene ignorato ma è obbligatorio perché In caso contrario, --protocol utilizza 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 del 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 un senza dover configurare regole host o percorsi matcher.
  6. (Facoltativo) Esegui questo passaggio se utilizzi HTTPS tra il client e tramite il bilanciatore del carico. Questo passaggio non è obbligatorio per i bilanciatori del carico HTTP.

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

    • Certificati autogestiti a livello di regione. Per informazioni sulla creazione e sull'utilizzo i certificati autogestiti regionali, il deployment di un deployment autogestito. Le mappe di certificati non sono supportate.

    • Certificati regionali gestiti da Google. Le mappe di certificati non sono supportate.

      I seguenti tipi di certificati gestiti a livello di regione da Google sono supportati da Gestore certificati:

    • Dopo aver creato i certificati, collegali direttamente alla destinazione proxy.

      Per creare una risorsa di 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 carico un bilanciatore del carico che contiene il certificato SSL per il bilanciamento del carico HTTPS, carica 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
          
    • Creare 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 \
              --address=IP_ADDRESS_NAME \
              --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 \
              --address=IP_ADDRESS_NAME \
              --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 all'indirizzo IP del bilanciatore del carico.

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

    Vai a Bilanciamento del carico

  2. Fai clic sul bilanciatore del carico appena creato.

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

  4. Per un bilanciatore del carico HTTP, puoi testare il bilanciatore del carico da un browser web dalla pagina http://IP_ADDRESS. Sostituisci IP_ADDRESS con indirizzo IP del bilanciatore del carico. Tu deve essere indirizzato al servizio Cloud Run homepage.

  5. Per un bilanciatore del carico HTTPS, puoi testare il bilanciatore del carico da un browser web dalla pagina https://IP_ADDRESS. Sostituisci IP_ADDRESS con indirizzo IP del bilanciatore del carico. Tu deve essere indirizzato al servizio Cloud Run homepage.
    Se hai utilizzato un certificato autofirmato per il 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 alternative e e altre opzioni di configurazione. Tutte le attività sono facoltative. Puoi eseguire in qualsiasi ordine.

Utilizzo di una maschera URL

Quando si crea un NEG serverless, invece di selezionare una specifica servizio Cloud Run, puoi utilizzare una maschera URL per puntare di più servizi nello stesso dominio. Una maschera per l'URL è un modello Schema dell'URL. Il NEG serverless utilizza questo modello per estrarre il servizio dell'URL della richiesta in arrivo e mappa la richiesta al completamente gestito di Google Cloud.

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

Se non lo hai già fatto, assicurati di leggere il documento Serverless NEGS panoramica: URL Maschere.

Creare una maschera URL

Per creare una maschera URL per il bilanciatore del carico, inizia con l'URL del tuo completamente gestito di Google Cloud. Questo esempio utilizza un'app serverless in esecuzione https://example.com/login. Questo è l'URL del servizio login dell'app viene pubblicato.

  1. Rimuovi http o https dall'URL. Non hai più 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 segnaposto <service>. Se l'istanza di Cloud Run servizio è associato a un tag, sostituisci il nome del tag con il segnaposto <tag>. In questo esempio, la maschera dell'URL rimane example.com/<service>.
  3. (Facoltativo) Se il nome del servizio può essere estratti dalla porzione del percorso dell'URL, il dominio può essere omesso. La del percorso della maschera dell'URL non viene dalla prima barra (/). Se non è presente una barra (/) nella Maschera URL, questa maschera può rappresentare solo l'host. Pertanto, per in questo esempio, la maschera URL può essere ridotta a /<service>.

    Analogamente, se è possibile estrarre <service> dalla parte host dell'istruzione URL, puoi omettere del tutto il percorso dalla maschera URL.

    Puoi anche omettere qualsiasi componente di host o di sottodominio che precede il primo segnaposto come nonché tutti i componenti del percorso successivi all'ultimo segnaposto. In tale nei casi d'uso, il segnaposto acquisisce le informazioni richieste per il componente.

Ecco alcuni altri esempi che dimostrano queste regole:

Questa tabella presuppone che tu abbia un dominio personalizzato denominato example.com e tutti i tuoi servizi Cloud Run sono in fase di mappatura a questo dominio.

Servizio, nome tag URL di dominio personalizzato Cloud Run Maschera URL
servizio: accesso https://login-home.example.com/web &lt;service&gt;-home.example.com
servizio: accesso https://example.com/login/web example.com/&lt;service&gt; o /<service>
service: login, tag: test https://test.login.example.com/web &lt;tag&gt;.&lt;service&gt;.example.com
service: login, tag: test https://example.com/home/login/test example.com/home/&lt;service&gt;/&lt;tag&gt; o /home/<servizio>/<tag>
service: login, tag: test https://test.example.com/home/login/web &lt;tag&gt;.example.com/home/&lt;service&gt;

Creazione di un NEG serverless con una maschera URL

Console

Per un nuovo bilanciatore del carico, puoi utilizzare lo stesso processo end-to-end di descritti in precedenza in questo documento. Quando configuri il servizio di backend, invece di 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 di URL a un servizio di backend esistente, procedi nel seguente modo:

  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 contenente il servizio di backend che che vuoi modificare.
  3. Nella pagina Dettagli 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 backend, fai clic su Modifica per del servizio di backend che desideri 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 è la supportato solo il tipo di gruppo di endpoint di rete.
      1. Seleziona Utilizza maschera URL.
      2. Inserisci una maschera per l'URL. Per informazioni su come creare una maschera URL, consulta Realizzazione di una maschera URL.
      3. Fai clic su Crea.

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

gcloud

Creare un NEG serverless con una maschera URL di esempio di example.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 backend completamente gestito di Google Cloud. Prima di eliminare un NEG, assicurati che sia scollegato dal di servizio di backend.

Console

  1. Per assicurarti che il NEG serverless che vuoi eliminare non sia in uso da un servizio di backend, vai alla scheda Servizi di backend Pagina Componenti di bilanciamento del carico.
    Vai a Servizi di backend
  2. Se il NEG serverless è in uso, segui questi passaggi:
    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 NEG serverless di backend dal servizio di backend.
    4. Fai clic su Salva.

  3. Vai alla pagina Gruppo di endpoint di rete nella console Google Cloud.
    Vai al gruppo di endpoint di rete
  4. Seleziona la casella di controllo per il NEG serverless che vuoi 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