Configurazione di Cloud CDN con Cloud Run, Cloud Functions o App Engine

Questa pagina mostra come creare un bilanciatore del carico HTTP(S) esterno per il routing delle richieste ai backend serverless. Il termine serverless si riferisce ai seguenti prodotti di serverless computing:

  • Ambiente standard,
  • Cloud Functions
  • Cloud Run

L'integrazione del bilanciamento del carico HTTP(S) con il gateway API consente ai tuoi backend serverless di sfruttare tutte le funzionalità disponibili da Cloud Load Balancing. Per saperne di più, vedi Bilanciamento del carico HTTP(S) per il gateway API. Per configurare il bilanciamento del carico HTTP(S) per il routing del traffico a un gateway API, consulta la guida introduttiva al bilanciamento del carico HTTP(S) per il gateway API. Questa funzionalità è in anteprima.

NEG Serverless consente di utilizzare app serverless Google Cloud con bilanciamento del carico HTTP(S). Dopo aver configurato un bilanciatore del carico con il backend NEG serverless, le richieste al bilanciatore del carico vengono instradate al backend dell'app serverless.

Per ulteriori informazioni sui NEG serverless, leggi la panoramica dei NEG serverless.

Prima di iniziare

  1. Esegui il deployment di un servizio App Engine, Cloud Functions o Cloud Run.
  2. Se non l'hai ancora fatto, installa l'interfaccia a riga di comando di Google Cloud.
  3. Configura le autorizzazioni.
  4. Aggiungi una risorsa di certificato SSL.

Eseguire il deployment di un servizio App Engine, Cloud Functions o Cloud Run

Le istruzioni riportate in questa pagina presuppongono che il servizio Cloud Run, Cloud Functions o App Engine siano già in esecuzione.

Per l'esempio in questa pagina, abbiamo utilizzato la guida rapida di Cloud Run Python per eseguire il deployment di un servizio Cloud Run nell'area geografica us-central1. Il resto della pagina mostra come configurare un bilanciatore del carico HTTP(S) esterno che utilizza un backend NEG serverless per instradare le richieste a questo servizio.

Se non hai già eseguito il deployment di un'app serverless o se vuoi provare un NEG serverless con un'app di esempio, utilizza una delle seguenti guide rapide. Puoi creare un'app serverless in qualsiasi area geografica, ma in un secondo momento dovrai utilizzare la stessa area geografica per creare il NEG serverless e il bilanciatore del carico.

Cloud Run

Per creare una semplice applicazione Hello World, pacchettizzala in un'immagine container, quindi esegui il deployment dell'immagine container in Cloud Run, vedi Quickstart: build ed deployment.

Se hai già caricato un container di esempio in Container Registry, consulta Guida rapida: deployment di un container predefinito di esempio.

Cloud Functions

Consulta la guida rapida di Cloud Functions: Python.

App Engine

Consulta le seguenti guide rapide di App Engine per Python 3:

Installa l'interfaccia a riga di comando di Google Cloud

Installa l'interfaccia a riga di comando di Google Cloud. Consulta la sezione Panoramica di gcloud per informazioni sul concetto e sull'installazione dello strumento.

Se non hai mai eseguito l'interfaccia a riga di comando gcloud, esegui gcloud init per inizializzare la directory gcloud.

Configura autorizzazioni

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

Attività Ruolo obbligatorio
Crea bilanciatore del carico e componenti di networking Amministratore di rete
Creare e modificare i NEG Amministratore istanze Compute
Creare e modificare certificati SSL Amministratore sicurezza

Prenota un indirizzo IP esterno

Ora che i tuoi servizi sono in esecuzione, configura un indirizzo IP esterno statico globale che i clienti utilizzano per raggiungere il bilanciatore del carico.

console

  1. Vai alla pagina Indirizzi IP esterni in Google Cloud Console.
    Vai agli indirizzi IP esterni
  2. Fai clic su Prenota indirizzo statico per prenotare un indirizzo IPv4.
  3. Assegna un Nome a example-ip.
  4. Imposta il livello di rete su Premium.
  5. Imposta la versione IP su IPv4.
  6. Imposta il Tipo su Globale.
  7. Fai clic su Prenota.

gcloud

gcloud compute addresses create example-ip \
    --network-tier=PREMIUM \
    --ip-version=IPV4 \
    --global

Prendi nota dell'indirizzo IPv4 riservato:

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

Creazione di una risorsa del certificato SSL

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

  • Certificati gestiti da Google. L'utilizzo di certificati gestiti da Google è consigliato perché Google Cloud ottiene, gestisce e rinnova automaticamente tali certificati. Per creare un certificato gestito da Google, devi disporre di un dominio e dei record DNS per quel dominio affinché sia eseguito il provisioning del certificato. Se non hai ancora un dominio, puoi riceverne uno da Google Domains. Per ulteriori informazioni, consulta la Guida introduttiva all'utilizzo di Google Domains. Inoltre, devi aggiornare il record DNS A del dominio in modo che punti all'indirizzo IP del bilanciatore del carico creato nel passaggio precedente (example-ip). Per istruzioni dettagliate, consulta l'articolo Utilizzo dei certificati gestiti da Google.

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

Questo esempio presuppone che tu abbia già creato una risorsa certificato SSL.

Se vuoi testare questo processo senza creare una risorsa di certificato SSL (o un dominio come richiesto dai certificati gestiti da Google), puoi comunque seguire le istruzioni riportate in questa pagina per configurare un bilanciatore del carico HTTP.

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. Per questo esempio, abbiamo utilizzato la guida rapida di Python Cloud Run per eseguire il deployment di un servizio Cloud Run.

Architettura di bilanciamento del carico HTTPS esterno per un'applicazione Cloud Run.
Architettura del bilanciamento del carico HTTPS esterno per un'applicazione Cloud Run (fai clic per ingrandire)

Poiché i controlli di integrità non sono supportati per i servizi di backend con backend NEG serverless, non è necessario creare una regola firewall che consenta i controlli di integrità se il bilanciatore del carico ha solo backend NEG serverless.

console

Avvia la configurazione

  1. In Google Cloud Console, vai alla pagina Bilanciamento del carico.

    Vai al bilanciamento del carico

  2. In Bilanciamento del carico HTTP(S), fai clic su Avvia configurazione.
  3. Nella sezione Solo per Internet o interno, seleziona Da Internet alle mie VM.
  4. In Globale o a livello di area geografica, seleziona Bilanciatore del carico HTTP(S) globale (classico).
  5. Fai clic su Continua.
  6. In Nome del bilanciatore del carico, inserisci serverless-lb.
  7. Per continuare, tieni aperta la finestra.

Configurazione dei servizi di backend

  1. Fai clic su Configurazione backend.
  2. Nel menu a discesa Crea o seleziona un servizio di backend, tieni premuto il puntatore del mouse su Servizi di backend, quindi seleziona Crea un servizio di backend.
  3. Inserisci un nome.
  4. In Tipo di backend, seleziona Gruppo di endpoint di rete serverless.
  5. Non modificare il protocollo. Questo parametro viene ignorato.
  6. In Backend, nella finestra New backend, seleziona Create Serverless network endpoint group (Crea gruppo di endpoint di rete serverless).
  7. Inserisci un nome.
  8. Fai clic su Crea.
  9. Nella finestra Nuovo backend, fai clic su Fine.
  10. Seleziona Attiva Cloud CDN.
  11. (Facoltativo) Modifica le impostazioni di modalità cache e TTL.
  12. Fai clic su Crea.

Configurazione delle regole di hosting e della corrispondenza di percorso

Le regole di hosting e le corrispondenze di percorso sono componenti di configurazione di una mappa URL di un bilanciatore del carico HTTP(S) esterno.

  1. Fai clic su Regole host e percorso.
  2. Mantieni gli host e i percorsi predefiniti. Per questo esempio, tutte le richieste vengono indirizzate al servizio di backend creato nel passaggio precedente.

Configurazione del frontend

  1. Fai clic su Configurazione frontend.
  2. Inserisci un nome.
  3. Per creare un bilanciatore del carico HTTPS, devi disporre di un certificato SSL (gcloud compute ssl-certificates list).

    Ti consigliamo di utilizzare un certificato gestito da Google come descritto in precedenza.

  4. Per configurare un bilanciatore del carico HTTP(S) esterno, compila i campi come segue.

    Verifica che le seguenti opzioni siano configurate con questi valori:

    Proprietà Valore (digita un valore o seleziona un'opzione come specificato)
    Protocollo HTTPS
    Livello di servizio di rete Premium
    Versione IP IPv4
    Indirizzo IP example-ip
    Porta 443
    Certificato Seleziona un certificato SSL esistente o creane uno nuovo.

    Per creare un bilanciatore del carico HTTPS, devi disporre di una risorsa certificato SSL da utilizzare nel proxy HTTPS. Puoi creare una risorsa certificato SSL utilizzando un certificato SSL gestito da Google o un certificato SSL autogestito.
    Per creare un certificato gestito da Google devi avere un dominio. Il record A del dominio deve risolversi nell'indirizzo IP del bilanciatore del carico (in questo esempio, example-ip). L'utilizzo dei certificati gestiti da Google è consigliato perché Google Cloud li riceve, li gestisce e li rinnova automaticamente. Se non hai un dominio, puoi utilizzare un certificato SSL autofirmato per i test.
    (Facoltativo) Attivare il reindirizzamento da HTTP a HTTPS Utilizza questa casella di controllo per attivare i reindirizzamenti dalla porta 80 alla porta 443.

    L'attivazione di questa casella di controllo crea un bilanciatore del carico HTTP parziale aggiuntivo che utilizza lo stesso indirizzo IP del bilanciatore del carico HTTPS e reindirizza le richieste HTTP al frontend HTTPS del bilanciatore del carico.

    Questa casella di controllo può essere selezionata soltanto quando è selezionato il protocollo HTTPS e viene utilizzato un indirizzo IP riservato.

  5. Fai clic su Fine.

Rivedi la configurazione

  1. Fai clic su Esamina e finalizza.
  2. Esamina le regole di backend, host e percorso e frontend.
  3. Fai clic su Crea.
  4. 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à. È noto come IP_ADDRESS.

gcloud

  1. Crea un NEG serverless per la tua app serverless.

    Per ulteriori opzioni, consulta la guida di riferimento gcloud per gcloud compute network-endpoint-groups create.

  2. Crea un servizio di backend.
       gcloud compute backend-services create BACKEND_SERVICE_NAME \
           --load-balancing-scheme=LOAD_BALANCING_SCHEME \
           --global \
           --enable-cdn \
           --cache-mode=CACHE_MODE \
           --custom-response-header='Cache-Status: {cdn_cache_status}' \
           --custom-response-header='Cache-ID: {cdn_cache_id}'
       

    Imposta la modalità cache sostituendo CACHE_MODE con una delle seguenti opzioni:

    • CACHE_All_STATIC (impostazione predefinita): memorizza automaticamente nella cache i contenuti statici.
    • USE_ORIGIN_HEADERS: richiede l'origine per impostare intestazioni di memorizzazione nella cache valide per memorizzare i contenuti nella cache.
    • FORCE_CACHE_ALL: memorizza nella cache tutti i contenuti, ignorando eventuali istruzioni private, no-store o no-cache nelle intestazioni delle risposte Cache-Control.

    Per informazioni sulle istruzioni memorizzate nella cache, comprese quelle di Cloud CDN, e su quali elementi non sono memorizzati nella cache da Cloud CDN, consulta la sezione Contenuti memorizzabili nella cache e Contenuti non memorizzabili nella cache.

  3. Aggiungi il NEG serverless come backend al servizio di backend:

       gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
           --global \
           --network-endpoint-group=SERVERLESS_NEG_NAME \
           --network-endpoint-group-region=us-central1
       
  4. Crea una mappa URL per instradare le richieste in entrata al servizio di backend:

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

    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 del percorso. Se hai più di un servizio di backend, puoi utilizzare le regole dell'host per indirizzare le richieste a servizi diversi in base al nome host e configurare i matcher percorso per indirizzare le richieste a servizi diversi in base al percorso della richiesta.

  5. Per creare un bilanciatore del carico HTTPS, devi avere una risorsa certificato SSL da utilizzare nel proxy di destinazione HTTPS. Puoi creare una risorsa certificato SSL utilizzando un certificato SSL gestito da Google o un certificato SSL autogestito. L'utilizzo di certificati gestiti da Google è consigliato perché Google Cloud ottiene, gestisce e rinnova automaticamente tali certificati.

    Per creare un certificato gestito da Google, devi avere un dominio. Se non hai un dominio, puoi utilizzare un certificato SSL autofirmato per i test.

    Per creare una risorsa di certificato SSL gestita da Google:
       gcloud compute ssl-certificates create SSL_CERTIFICATE_NAME \
           --domains DOMAIN
       
    Per creare una risorsa di certificato SSL autogestita:
       gcloud compute ssl-certificates create SSL_CERTIFICATE_NAME \
           --certificate CRT_FILE_PATH \
           --private-key KEY_FILE_PATH
       
  6. Crea un proxy HTTP(S) di destinazione per instradare le richieste alla tua mappa URL.

    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 puoi anche caricare il certificato in questo passaggio.

       gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \
          --ssl-certificates=SSL_CERTIFICATE_NAME \
          --url-map=URL_MAP_NAME
       
  7. Crea una regola di forwarding per instradare le richieste in entrata al proxy.

    Per un bilanciatore del carico HTTPS:

       gcloud compute forwarding-rules create HTTPS_FORWARDING_RULE_NAME \
           --load-balancing-scheme=EXTERNAL \
           --network-tier=PREMIUM \
           --address=example-ip \
           --target-https-proxy=TARGET_HTTPS_PROXY_NAME \
           --global \
           --ports=443
       

Connetti il dominio al bilanciatore del carico

Dopo aver creato il bilanciatore del carico, prendi nota dell'indirizzo IP associato al bilanciatore del carico, ad esempio 30.90.80.100. Per indirizzare il tuo dominio al bilanciatore del carico, crea un record A utilizzando il tuo servizio di registrazione del dominio. Se hai aggiunto più domini al tuo certificato SSL, devi aggiungere un record A per ognuno di essi, ognuno dei quali punta all'indirizzo IP del bilanciatore del carico. Ad esempio, per creare record A per www.example.com e example.com:

NAME                  TYPE     DATA
www                   A        30.90.80.100
@                     A        30.90.80.100

Se utilizzi Google Domains, consulta la pagina di assistenza di Google Domains per ulteriori informazioni.

Testa il bilanciatore del carico

Ora che hai configurato il bilanciatore del carico, puoi iniziare a inviare traffico all'indirizzo IP del bilanciatore del carico. Se hai configurato un dominio, puoi inviare traffico anche al nome del dominio. Tuttavia, la propagazione del DNS può richiedere del tempo, quindi puoi iniziare a utilizzare l'indirizzo IP per i test.

  1. Vai alla pagina Bilanciamento del carico in Google Cloud Console.
    Vai al 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 HTTPS, puoi testare il tuo bilanciatore del carico utilizzando un browser web visitando https://IP_ADDRESS. Sostituisci IP_ADDRESS con l'indirizzo IP del bilanciatore del carico. Dovresti essere reindirizzato alla home page del servizio helloworld.
    Se non funziona e utilizzi un certificato gestito da Google, verifica che lo stato della risorsa del certificato sia ATTIVO. Per ulteriori informazioni, consulta lo stato delle risorse dei certificati SSL gestiti da Google.
    Se hai utilizzato un certificato autofirmato per i test, il browser mostra un avviso. Devi indicare esplicitamente al browser di accettare un certificato autofirmato. Fai clic nell'avviso per visualizzare la pagina effettiva.
  5. Per verificare le risposte della cache, utilizza curl dalla riga di comando della tua macchina locale. Sostituisci IP_ADDRESS con l'indirizzo IPv4 del bilanciatore del carico.

    curl -v -o/dev/null https://IP_ADDRESS
    

    Se utilizzi un certificato gestito da Google, verifica il dominio che punta all'indirizzo IP del bilanciatore del carico. Ad esempio:

    curl -v -o/dev/null -k -s 'https://DOMAIN:443' --connect-to DOMAIN:443:IP_ADDRESS:443
    

    Se utilizzi un certificato autofirmato, devi specificare anche il flag -k. L'opzione curl -k consente il funzionamento di curl se hai un certificato autofirmato. Utilizza solo il parametro -k per testare il tuo sito. In circostanze normali, un certificato valido è una misura di sicurezza importante e gli avvisi relativi ai certificati non devono essere ignorati.

    L'output deve contenere le intestazioni personalizzate Cache-ID e Cache-Status che hai configurato per indicare se la risposta è stata pubblicata dalla cache:

    HTTP/2 200
    cache-status: hit
    cache-id: SEA-b9fa975e
    

    L'output contiene le intestazioni della risposta che indicano un hit da cache, il che significa che l'asset statico nell'app serverless è stato pubblicato per l'utente da una cache perimetrale di Cloud CDN.

    L'intestazione cache-status indica il valore disabled per le risposte non memorizzate nella cache in Cloud CDN. Per le risposte memorizzate nella cache, il valore dell'intestazione cache-status è hit, miss o revalidated.

Disattivazione di Cloud CDN

console

Disattiva Cloud CDN per un singolo servizio di backend

  1. In Google Cloud Console, vai alla pagina Cloud CDN.

    Vai a Cloud CDN

  2. Sul lato destro della riga di origine, fai clic su Menu , quindi seleziona Modifica.
  3. Deseleziona le caselle di controllo degli eventuali servizi di backend per cui vuoi interrompere l'utilizzo di Cloud CDN.
  4. Fai clic su Aggiorna.

Rimuovi Cloud CDN per tutti i servizi di backend per un'origine

  1. In Google Cloud Console, vai alla pagina Cloud CDN.

    Vai a Cloud CDN

  2. Sul lato destro della riga origine, fai clic su Menu e poi seleziona Rimuovi.
  3. Fai clic su Rimuovi per confermare.

gcloud

gcloud compute backend-services update BACKEND_SERVICE_NAME 
--no-enable-cdn

La disabilitazione di Cloud CDN non annulla o elimina definitivamente le cache. Se disattivi e riattivi Cloud CDN, la maggior parte dei contenuti memorizzati nella cache può essere comunque memorizzata nella cache. Per evitare che i contenuti vengano utilizzati dalle cache, devi invalidare tali contenuti.

Passaggi successivi