Questo documento mostra come eseguire il deployment di un bilanciatore del carico delle applicazioni interno regionale con Cloud Run. Per configurarlo, utilizza un backend NEG serverless per il bilanciatore del carico.
Prima di provare questa procedura, assicurati di acquisire familiarità con i seguenti argomenti:
- Panoramica del bilanciatore del carico delle applicazioni interno regionale
- Panoramica dei NEG serverless
La guida mostra come configurare un bilanciatore del carico delle applicazioni che proxy le richieste a un backend NEG serverless.
I NEG serverless 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
- Installa Google Cloud CLI.
- Esegui il deployment di un servizio Cloud Run.
- Configura le autorizzazioni.
Installa Google Cloud SDK
Installa lo strumento Google Cloud CLI. Consulta la panoramica di gcloud per informazioni concettuali e sull'installazione dello strumento.
Se non hai già eseguito gcloud CLI, esegui prima gcloud init
per inizializzare la directory gcloud
.
Esegui il deployment di un servizio Cloud Run
Le istruzioni in questa pagina presuppongono che sia già in esecuzione un servizio Cloud Run.
Per l'esempio in questa pagina, puoi utilizzare qualsiasi delle guide rapide di Cloud Run per eseguire il deployment di un servizio Cloud Run.
Il NEG serverless, il bilanciatore del carico e le eventuali VM client devono trovarsi nella stessa regione del servizio Cloud Run.Per impedire l'accesso al servizio Cloud Run da internet, limita il traffico in entrata a internal
. Il traffico
dal bilanciatore del carico delle applicazioni interno è considerato traffico interno.
gcloud run deploy CLOUD_RUN_SERVICE_NAME \ --platform=managed \ --allow-unauthenticated \ --ingress=internal \ --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 le autorizzazioni
Per seguire questa guida, devi creare un NEG serverless e un bilanciatore del carico in un progetto. Devi essere proprietario o editor del progetto oppure devi disporre dei seguenti 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 e poi le subnet che vuoi all'interno di una regione.
Console
Nella console Google Cloud, vai alla pagina Reti VPC.
Fai clic su Crea rete VPC.
In Nome, inserisci
lb-network
.In Modalità di creazione subnet, seleziona Personalizzata.
Nella sezione Nuova subnet, specifica i seguenti parametri di configurazione per una subnet:
- In Nome, inserisci
lb-subnet
. - Seleziona una Regione.
- In Intervallo di indirizzi IP, inserisci
10.1.2.0/24
. - Fai clic su Fine.
- In Nome, inserisci
Fai clic su Crea.
gcloud
Crea la rete VPC personalizzata utilizzando il comando
gcloud compute networks create
:gcloud compute networks create lb-network --subnet-mode=custom
Crea una subnet nella rete
lb-network
. In questo esempio viene utilizzato un intervallo di indirizzi IP10.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
Crea 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
Nella console Google Cloud, vai alla pagina Reti VPC.
Fai clic sul nome della rete VPC condiviso a cui vuoi aggiungere la subnet solo proxy.
Fai clic su Aggiungi subnet.
Nel campo Nome, inserisci
proxy-only-subnet
.Seleziona una Regione.
Imposta Purpose su Regional Managed Proxy (Proxy gestito a livello di regione).
Inserisci un intervallo di indirizzi IP come
10.129.0.0/23
.Fai clic su Aggiungi.
gcloud
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 diagramma seguente, 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 definite all'esterno del VPC che non sono soggette alle regole firewall. Pertanto, se il bilanciatore del carico ha solo backend NEG serverless, non devi creare regole firewall per consentire il traffico dalla subnet solo proxy al backend serverless.
Console
Avvia la configurazione
Nella console Google Cloud, vai alla pagina Bilanciamento del carico.
- Fai clic su Crea bilanciatore del carico.
- Per Tipo di bilanciatore del carico, seleziona Bilanciatore del carico delle applicazioni (HTTP/HTTPS) e fai clic su Avanti.
- Per Pubblico o interno, seleziona Interno e fai clic su Avanti.
- Per Deployment tra regioni o regioni singole, seleziona Ideale per carichi di lavoro regionali e fai clic su Avanti.
- Fai clic su Configura.
Configurazione di base
- Per il nome del bilanciatore del carico, inserisci
serverless-lb
. - Seleziona
lb_network
come Rete. - Tieni la finestra aperta per continuare.
Configura il frontend
- Prima di procedere, assicurati di disporre di un certificato SSL.
- Fai clic su Configurazione frontend.
- Inserisci un Nome.
- Per configurare un bilanciatore del carico delle applicazioni interno, compila i campi come segue.
- In Protocollo, seleziona HTTPS.
- In Subnet, seleziona la subnet.
- In Versione IP, seleziona IPv4.
- In Indirizzo IP, seleziona Temporaneo.
- In Porta, seleziona
443
. In Certificato, seleziona un certificato SSL esistente o creane uno nuovo.
L'esempio seguente mostra come creare certificati SSL di Compute Engine:
- Fai clic su Crea un nuovo certificato.
- Inserisci un nome nel campo Nome.
- Nei campi appropriati, carica i file in formato PEM:
- Certificato
- Chiave privata
- Fai clic su Crea.
- (Facoltativo) Per creare un bilanciatore del carico HTTP, segui questi passaggi:
- In Protocollo, seleziona HTTP.
- In Subnet, seleziona la subnet.
- In Versione IP, seleziona IPv4.
- In Indirizzo IP, seleziona Temporaneo.
- In Porta, seleziona
80
. - Fai clic su Fine.
Se vuoi testare questo processo senza configurare una risorsa di certificato SSL, puoi configurare un bilanciatore del carico HTTP.
Configura i servizi di backend
- Fai clic su Configurazione backend.
- 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.
- Nella finestra Crea un servizio di backend, inserisci un Nome.
- In Tipo di backend, seleziona Gruppo di endpoint di rete serverless.
- Lascia invariato il campo Protocollo. Questo parametro viene ignorato.
- In Backend > Nuovo backend, seleziona Crea gruppo di endpoint di rete serverless.
- Nella finestra Crea gruppo di endpoint di rete serverless, inserisci un Nome.
- In Regione, viene visualizzata la regione del bilanciatore del carico.
- Nel campo Tipo di gruppo di endpoint di rete serverless, seleziona Cloud Run. Cloud Run è l'unico tipo supportato.
- Seleziona Seleziona nome servizio.
- Dall'elenco a discesa Servizio, seleziona il servizio Cloud Run per cui vuoi creare un bilanciatore del carico.
- Fai clic su Fine.
- Fai clic su Crea.
- 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.
- Fai clic su Regola host e percorso semplice.
- Seleziona un servizio di backend dall'elenco a discesa Backend.
Rivedi la configurazione
- Fai clic su Esamina e finalizza.
- Esamina i valori per backend, regole host e percorso e frontend.
- (Facoltativo) Fai clic su Codice equivalente per visualizzare la richiesta API REST che verrà utilizzata per creare il bilanciatore del carico.
- Fai clic su Crea. Attendi che la creazione del bilanciatore del carico sia completa.
- Fai clic sul nome del bilanciatore del carico (serverless-lb).
- Prendi nota dell'indirizzo IP del bilanciatore del carico, che utilizzerai nella prossima attività.
gcloud
- 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
- Creare un servizio di backend a livello di regione. Imposta
--protocol
su HTTP. Questo parametro viene ignorato ma è obbligatorio perché--protocol
utilizza TCP per impostazione predefinita.gcloud compute backend-services create BACKEND_SERVICE_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --protocol=HTTP \ --region=REGION
- 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
- Crea una mappa di 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 di URL di esempio ha come target un solo servizio di backend che rappresenta una singola app serverless, quindi non è necessario configurare regole dell'host o matcher dei percorsi. - (Facoltativo) Esegui questo passaggio se utilizzi HTTPS tra il client e il bilanciatore del carico. Questo passaggio non è obbligatorio per i bilanciatori del carico HTTP.
Puoi creare certificati di Compute Engine o del Gestore certificati. Utilizza uno dei seguenti metodi per creare certificati utilizzando Gestione certificati:
- Certificati autogestiti a livello di regione. Per informazioni sulla creazione e sull'utilizzo di certificati autogestiti a livello di regione, consulta Eseguire il deployment di un certificato autogestito a livello di regione. Le mappe di certificati non sono supportate.
Certificati regionali gestiti da Google. Le mappe di certificati non sono supportate.
Il Gestore certificati supporta i seguenti tipi di certificati gestiti a livello di regione da Google:
- Certificati a livello di regione gestiti da Google con autorizzazione DNS per progetto. Per maggiori informazioni, consulta Eseguire il deployment di un certificato a livello di regione gestito da Google.
- Certificati regionali gestiti da Google (privati) con Certificate Authority Service. Per maggiori informazioni, consulta Eseguire il deployment di un certificato a livello di regione gestito da Google con il servizio CA.
Dopo aver creato i certificati, collegali direttamente al proxy di destinazione.
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 bilanciatore del carico che contiene il certificato SSL per il bilanciamento del carico HTTPS, quindi in questo passaggio carichi anche il certificato.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.
Non utilizzare la subnet solo proxy per l'indirizzo IP della regola di forwarding. Puoi
configurare qualsiasi indirizzo IP valido dalla subnet
(
lb-subnet
).
Per un bilanciatore del carico HTTP:gcloud compute forwarding-rules create HTTP_FORWARDING_RULE_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=lb-network \ --subnet=lb-subnet \ --address=IP_ADDRESS \ --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=INTERNAL_MANAGED \ --network=lb-network \ --subnet=lb-subnet \ --address=IP_ADDRESS \ --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 all'indirizzo IP del bilanciatore.
Crea una VM client
In questo esempio viene creata una VM client (vm-client
) nella stessa regione del bilanciatore del carico. Il client viene utilizzato per convalidare la configurazione
del bilanciatore del carico e dimostrare il comportamento previsto.
gcloud
La VM client può trovarsi in qualsiasi zona nella stessa REGION del bilanciatore del carico e può utilizzare qualsiasi subnet nella stessa rete VPC.
gcloud compute instances create vm-client \ --image-family=debian-10 \ --image-project=debian-cloud \ --tags=allow-ssh \ --network=lb-network \ --subnet=lb-subnet \ --zone=ZONE
Configura la regola firewall
Questo esempio richiede la seguente regola firewall per la VM del client di test:
fw-allow-ssh
. Una regola in entrata, applicabile alla VM client di test, che consente la connettività SSH in entrata sulla porta TCP 22
da qualsiasi indirizzo. Puoi scegliere un intervallo di indirizzi IP di origine più restrittivo per questa regola; ad esempio, puoi specificare solo gli intervalli di indirizzi IP del sistema da cui avvii le sessioni SSH. Questo esempio utilizza il tag target allow-ssh
.
Console
- Nella console Google Cloud, vai alla pagina Criteri firewall.
Vai a Criteri firewall - Fai clic su Crea regola firewall per creare la regola che consenta le connessioni SSH in entrata:
- Nome:
allow-ssh
- Rete:
lb-network
- Direzione del traffico: in entrata
- Azione in caso di corrispondenza: Consenti
- Target: tag di destinazione specificati
- Tag di destinazione:
allow-ssh
- Filtro di origine: Intervalli IPv4
- Intervalli IPv4 di origine:
0.0.0.0/0
- Protocolli e porte:
- Scegli Protocolli e porte specificati.
- Seleziona la casella di controllo TCP, quindi inserisci
22
per il numero di porta.
- Nome:
- Fai clic su Crea.
gcloud
Crea la regola firewall
fw-allow-ssh
per consentire la connettività SSH alle VM con il tag di reteallow-ssh
. Se omettisource-ranges
, Google Cloud interpreta la regola nel significato di qualsiasi origine.gcloud compute firewall-rules create fw-allow-ssh \ --network=lb-network \ --action=allow \ --direction=ingress \ --target-tags=allow-ssh \ --rules=tcp:22
Invia traffico al bilanciatore del carico
La propagazione della configurazione del bilanciatore del carico dopo il primo deployment potrebbe richiedere alcuni minuti.
Connettiti all'istanza client tramite SSH.
gcloud compute ssh vm-client \ --zone=ZONE
Verifica che il bilanciatore del carico fornisca la home page del servizio Cloud Run come previsto.
Per il test HTTP, esegui:
curl IP_ADDRESS
Per il test HTTPS, esegui:
curl -k -s 'https://TEST_DOMAIN_URL:443' --connect-to TEST_DOMAIN_URL:443:IP_ADDRESS:443
Sostituisci TEST_DOMAIN_URL con il dominio associato alla tua applicazione. Ad esempio,
test.example.com
.Il flag
-k
fa sì che curl salti la convalida dei certificati.
Opzioni di configurazione aggiuntive
Questa sezione si espande sull'esempio di configurazione per fornire opzioni di configurazione alternative e aggiuntive. Tutte le attività sono facoltative. Puoi eseguirle in qualsiasi ordine.
Utilizzo di una maschera URL
Quando crei un NEG serverless, invece di selezionare un servizio Cloud Run specifico, puoi utilizzare una maschera URL per puntare a più servizi pubblicati 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 un'unica regola anche quando l'applicazione utilizza un pattern URL personalizzato.
Se non lo hai già 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 in esecuzione su
https://example.com/login
. Questo è l'URL in cui viene pubblicato il servizio login
dell'app.
- Rimuovi
http
ohttps
dall'URL. Non hai piùexample.com/login
. - 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 dell'URL rimaneexample.com/<service>
.
- Cloud Run: sostituisci il nome del servizio Cloud Run con il segnaposto
(Facoltativo) Se il nome del servizio può essere estratto dalla parte del percorso dell'URL, il dominio può essere omesso. La parte del percorso della maschera dell'URL è contrassegnata dalla prima barra (
/
). Se non è presente una barra (/
) nella maschera URL, la maschera può rappresentare solo l'host. Pertanto, per questo esempio, la maschera URL può essere ridotta a/<service>
.Allo stesso modo, se è possibile estrarre
<service>
dalla parte host dell'URL, puoi omettere del tutto il percorso dalla maschera dell'URL.Puoi anche omettere tutti i componenti dell'host o del sottodominio che precedono il primo segnaposto e i componenti del percorso che seguono l'ultimo segnaposto. In questi casi, 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 che tutti i servizi Cloud Run vengano mappati a questo dominio.
Servizio, nome tag | URL di dominio personalizzato Cloud Run | Maschera URL |
---|---|---|
servizio: accesso | https://login-home.example.com/web | <servizio>-home.example.com |
servizio: accesso | https://example.com/login/web | example.com/<service> o /<service> |
service: login, tag: test | https://test.login.example.com/web | <tag>.<servizio>.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/<servizio> |
Creazione di un NEG serverless con una maschera URL
Console
Per un nuovo bilanciatore del carico, puoi utilizzare lo stesso processo end-to-end descritto in precedenza in questo documento. Quando configuri il servizio di backend, invece di selezionare un servizio specifico, inserisci una maschera URL.
Se disponi già di 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, segui questi passaggi:
- Nella console Google Cloud, vai alla pagina Bilanciamento del carico.
Vai a Bilanciamento del carico - Fai clic sul nome del bilanciatore del carico contenente il servizio di backend che vuoi modificare.
- Nella pagina Dettagli bilanciatore del carico, fai clic su Modifica.
- Nella pagina Modifica bilanciatore del carico delle applicazioni esterno globale, fai clic su Configurazione backend.
- Nella pagina Configurazione backend, fai clic su Modifica per il servizio di backend che vuoi modificare.
- Fai clic su Aggiungi backend.
- Seleziona Crea gruppo di endpoint di rete serverless.
- In Nome, inserisci
helloworld-serverless-neg
. - In Regione, viene visualizzata la regione del bilanciatore del carico.
- In Tipo di gruppo di endpoint di rete serverless, Cloud Run è l'unico tipo di gruppo di endpoint di rete supportato.
- Seleziona Utilizza maschera URL.
- Inserisci una maschera per l'URL. Per informazioni su come creare una maschera URL, consulta la sezione Realizzare una maschera URL.
- Fai clic su Crea.
- In Nuovo backend, fai clic su Fine.
- Fai clic su Update (Aggiorna).
gcloud
Per 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 è associato a un servizio di backend. Prima di eliminare un NEG, assicurati che sia scollegato dal servizio di backend.
Console
- Per assicurarti che il NEG serverless che vuoi eliminare non sia utilizzato da nessun servizio di backend, vai alla scheda Servizi di backend nella pagina Componenti di bilanciamento del carico.
Vai a Servizi di backend - Se il NEG serverless è in uso, segui questi passaggi:
- Fai clic sul nome del servizio di backend che utilizza il NEG serverless.
- Fai clic su Modifica.
- Dall'elenco Backend, fai clic su per rimuovere il backend del NEG serverless dal servizio di backend.
- Fai clic su Salva.
- Vai alla pagina Gruppo di endpoint di rete nella console Google Cloud.
Vai al gruppo di endpoint di rete - Seleziona la casella di controllo per il NEG serverless che vuoi eliminare.
- Fai clic su Elimina.
- 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
- Esegui il deployment di un bilanciatore del carico delle applicazioni interno regionale con Cloud Run utilizzando Terraform
- Eseguire la pulizia di una configurazione di bilanciamento del carico
- Eseguire il deprovisioning di un VPC condiviso
- Logging e monitoraggio del bilanciatore del carico delle applicazioni interno regionale
- Risolvi i problemi relativi ai bilanciatori del carico delle applicazioni interni regionali