ID regione
REGION_ID
è un codice abbreviato assegnato da Google in base alla regione selezionata al momento della creazione dell'app. Non corrisponde a un paese o a una provincia, anche se alcuni ID regione possono apparire simili ai codici di paese e provincia di uso comune. Per le app create dopo febbraio 2020, REGION_ID.r
è incluso negli URL di App Engine. Per le app esistenti create prima di questa data, l'ID regione è facoltativo nell'URL.
Scopri di più sugli ID regione.
Questa guida illustra come configurare un nuovo endpoint pubblico per l'app App Engine utilizzando Cloud Load Balancing.
Con Cloud Load Balancing, configuri l'endpoint del dominio personalizzato come
servizio frontend e l'app App Engine come servizio di backend
utilizzando un gruppo di endpoint di rete (NEG) serverless.
Il traffico verso l'endpoint del servizio frontend di Cloud Load Balancing viene instradato come prima, incluse tutte le regole di routing che definisci nel file dispatch.yaml
dell'app.
Il seguente diagramma descrive le modifiche apportate alla tua app:
La migrazione a Cloud Load Balancing migliora notevolmente la flessibilità di gestione del traffico quando raggiungi il dominio, ad esempio pubblicando contenuti statici da Cloud Storage o aggiungendo servizi in esecuzione su altre piattaforme di calcolo come Cloud Run e Google Kubernetes Engine.
Potrai inoltre accedere alle funzionalità chiave di Google Cloud che non sono disponibili su App Engine, tra cui:
- Google Cloud Armor, per una maggiore sicurezza con protezione DDoS avanzata, controlli degli accessi basati su IP e dati geografici, regole web application firewall e altro ancora
- Cloud CDN, per la distribuzione dei contenuti memorizzati nella cache
- I criteri SSL per gestire le funzionalità SSL e le versioni TLS accettate dalla tua app.
Questa guida illustra le istruzioni di configurazione per trasferire le richieste in arrivo dal servizio App Engine con un dominio personalizzato a un servizio frontend di Cloud Load Balancing:
- Assicurati di disporre delle autorizzazioni richieste
- Creare un certificato gestito da Google
- Configura Cloud Load Balancing
- Testa il bilanciatore del carico
- Collegare il dominio al bilanciatore del carico
- Elimina il mapping di dominio personalizzato di App Engine
- Configura il controllo del traffico in entrata in modo da consentire l'accesso solo tramite Cloud Load Balancing
Prima di iniziare
Avere un'app App Engine con un dominio personalizzato configurato nelle impostazioni di App Engine.
Configura le autorizzazioni
Per seguire questa guida, devi creare un certificato gestito da Google, un NEG serverless e un bilanciatore del carico HTTP(S) esterno in un progetto. Devi essere proprietario o editor del progetto oppure disporre dei seguenti ruoli IAM:
Attività | Ruolo richiesto |
---|---|
Crea un certificato SSL gestito da Google utilizzando Gestore certificati | Proprietario gestore certificati, Editor Certificate Manager e Amministratore bilanciatore del carico Compute |
Aggiorna i record DNS per il dominio personalizzato | Amministratore di Cloud DNS se utilizzi Cloud DNS come soluzione DNS. Se utilizzi un altro provider DNS, avrai bisogno delle autorizzazioni per aggiungere e aggiornare i record DNS per il dominio personalizzato. |
Crea il bilanciatore del carico e i componenti di networking | Amministratore rete Compute |
Creare e modificare NEG | Amministratore istanze Compute |
Creare e modificare i certificati SSL | Amministratore sicurezza Compute |
Elimina i domini personalizzati nelle impostazioni di App Engine | Ruolo Amministratore App Engine o ruolo che contiene l'autorizzazione appengine.applications.update . |
Crea un certificato SSL gestito da Google
Un certificato SSL gestito da Google (noto anche come certificato TLS nella documentazione) consente a Google Cloud di ottenere, gestire e rinnovare automaticamente i certificati. Per eseguire la migrazione al frontend di Cloud Load Balancing senza causare tempi di inattività per il tuo servizio App Engine esistente, devi utilizzare Certificate Manager per creare l'autorizzazione DNS e il certificato gestito da Google.
Tieni presente che la documentazione di Cloud Load Balancing contiene istruzioni simili per la creazione di un certificato SSL gestito da Google, che tuttavia utilizzano l'autorizzazione del bilanciatore del carico, che richiede un tempo di inattività del servizio App Engine che può durare fino a diverse ore. Per ulteriori informazioni, consulta Autorizzazione del dominio per i certificati gestiti da Google.
Per evitare tempi di inattività per la tua app, segui i passaggi descritti in questa pagina.
Crea autorizzazione DNS
Crea l'autorizzazione DNS in Gestore certificati eseguendo questi comandi:
gcloud certificate-manager dns-authorizations create AUTHORIZATION_NAME \ --domain="DOMAIN_NAME" gcloud certificate-manager dns-authorizations describe AUTHORIZATION_NAME
Sostituisci quanto segue:
AUTHORIZATION_NAME
è un nome univoco che descrive questa autorizzazione DNS.DOMAIN_NAME
è il nome di dominio personalizzato App Engine per il quale stai creando questa autorizzazione DNS.
Nota il CNAME restituito dal comando
gcloud
. Devi utilizzarlo per aggiornare il tuo record DNS nei passaggi seguenti.
Aggiungere il record CNAME alla configurazione DNS
A seconda che tu stia utilizzando Cloud DNS o un'altra soluzione DNS di terze parti, segui le istruzioni appropriate per il tuo caso d'uso:
Cloud DNS
Quando crei un'autorizzazione DNS, il comando gcloud
restituisce il record CNAME corrispondente. Devi aggiungere questo record CNAME alla tua configurazione DNS nella zona DNS del dominio di destinazione, come indicato di seguito:
Avvia la transazione del record DNS:
gcloud dns record-sets transaction start --zone="DNS_ZONE_NAME"
Sostituisci
DNS_ZONE_NAME
con il nome della zona DNS pubblica. Se utilizzi Google Cloud per gestire il tuo dominio e ricevere traffico verso questo dominio, avrai già creato una zona DNS pubblica. Per visualizzare la zona DNS pubblica, consulta l'articolo Elencare e descrivere le zone gestite.Aggiungi il record CNAME alla zona DNS di destinazione:
gcloud dns record-sets transaction add CNAME_RECORD \ --name="_acme-challenge.DOMAIN_NAME." \ --ttl="30" \ --type="CNAME" \ --zone="DNS_ZONE_NAME"
Sostituisci quanto segue:
CNAME_RECORD
è il valore completo del record CNAME restituito dal comandogcloud
che ha creato l'autorizzazione DNS corrispondente.DOMAIN_NAME
è il nome di dominio personalizzato di App Engine. Devi includere il punto finale dopo il nome di dominio di destinazione.DNS_ZONE_NAME
è il nome della zona DNS di destinazione citata in precedenza.
Esegui la transazione del record DNS per salvare le modifiche:
gcloud dns record-sets transaction execute --zone="DNS_ZONE_NAME"
Sostituisci
DNS_ZONE_NAME
con il nome della zona DNS di destinazione precedente.
Altra soluzione DNS
Aggiungi un record CNAME alla configurazione DNS del tuo dominio utilizzando il nome (host)(_acme-challenge.DOMAIN_NAME
) e i campi di dati della sezione precedente. Consulta la documentazione della tua soluzione DNS di terze parti.
Crea un certificato gestito da Google che faccia riferimento all'autorizzazione DNS
Per creare un certificato gestito da Google che faccia riferimento all'autorizzazione DNS che hai creato nei passaggi precedenti, esegui questi comandi:
Crea un certificato gestito da Google:
gcloud certificate-manager certificates create CERTIFICATE_NAME \ --domains=DOMAIN_NAME --dns-authorizations=AUTHORIZATION_NAME
Sostituisci quanto segue:
CERTIFICATE_NAME
è un nome univoco che descrive il certificato.DOMAIN_NAME
è il nome di dominio personalizzato di App Engine.AUTHORIZATION_NAME
è il nome dell'autorizzazione DNS creata in precedenza.
Verifica che il certificato sia attivo.
Utilizza il comando seguente per verificare che il certificato sia attivo prima di eseguirne il deployment nel bilanciatore del carico. Tieni presente che possono trascorrere fino a diverse ore prima che lo stato del certificato passi a
ACTIVE
.gcloud certificate-manager certificates describe CERTIFICATE_NAME
Sostituisci
CERTIFICATE_NAME
con il nome del certificato gestito da Google creato in precedenza.Lo strumento
gcloud
restituisce un output simile al seguente:certificatePem: myPEM createTime: '2021-10-20T12:19:53.370778666Z' expireTime: '2022-05-07T05:03:49Z' managed: authorizationAttemptInfo: - domain: example.com state: AUTHORIZED dnsAuthorizations: - projects/my-project/locations/global/dnsAuthorizations/myAuth domains: - example.com state: ACTIVE name: projects/myProject/locations/global/certificates/myCert scope: myScope sanDnsnames: - example.com updateTime: '2021-10-20T12:19:55.083385630Z'
Se lo strumento
gcloud
restituisce un output diverso, consulta la sezione sulla risoluzione dei problemi di Gestore certificati.
Crea una mappa di certificati
Crea una mappa di certificati:
gcloud certificate-manager maps create CERTIFICATE_MAP_NAME
Sostituisci
CERTIFICATE_MAP_NAME
con il nome univoco che descrive la mappa di certificati.Crea una voce della mappa di certificati e associala alla mappa di certificati e alla mappa di certificati precedente:
gcloud certificate-manager maps entries create CERTIFICATE_MAP_ENTRY_NAME \ --map=CERTIFICATE_MAP_NAME \ --certificates=CERTIFICATE_NAME \ --set-primary
Sostituisci quanto segue:
CERTIFICATE_MAP_ENTRY_NAME
è un nome univoco che descrive questa voce della mappa di certificati.CERTIFICATE_MAP_NAME
è il nome della mappa di certificati a cui è allegata la voce della mappa di certificati.CERTIFICATE_NAME
è il nome del certificato che vuoi associare a questa voce della mappa di certificati.
Puoi aggiungere il flag
--set-primary
per assicurarti che il certificato venga utilizzato come certificato predefinito nel caso in cui non venga specificato un nome di dominio.Verifica che la mappa di certificati sia attiva.
Usa il comando seguente per verificare che la voce della mappa di certificati sia attiva prima di collegare la mappa di certificati corrispondente al proxy di destinazione:
gcloud certificate-manager maps entries describe CERTIFICATE_MAP_ENTRY_NAME \ --map=CERTIFICATE_MAP_NAME
Sostituisci quanto segue:
CERTIFICATE_MAP_ENTRY_NAME
è il nome precedente della mappa dei certificati.CERTIFICATE_MAP_NAME
è il nome della mappa di certificati a cui è allegata la voce della mappa di certificati.
Lo strumento
gcloud
restituisce un output simile al seguente:createTime: '2021-09-06T10:01:56.229472109Z' name: projects/my-project/locations/global/certificateMaps/myCertMap/certificateMapEntries/myCertMapEntry state: ACTIVE updateTime: '2021-09-06T10:01:58.277031787Z'
Per ulteriori informazioni sull'utilizzo di Gestore certificati, consulta Come funziona Gestore certificati.
Configura Cloud Load Balancing
Dopo aver ottenuto un certificato gestito da Google, puoi sostituire il dominio personalizzato App Engine con un servizio di frontend di Cloud Load Balancing.
Il seguente diagramma mostra un bilanciatore del carico HTTPS con un singolo servizio di backend e NEG serverless.
Le regole di forwarding instradano le richieste in entrata da indirizzi IP esterni e indirizzano le richieste al proxy HTTPS di destinazione. I bilanciatori del carico HTTPS utilizzano le mappe URL per indirizzare le richieste al servizio di backend, che contiene un NEG serverless per il servizio App Engine.
Prenotare un indirizzo IP esterno
Prima di configurare Cloud Load Balancing, devi impostare un indirizzo IP esterno statico globale affinché gli utenti possano raggiungere il bilanciatore del carico.
Console
Vai alla pagina Indirizzi IP esterni nella console Google Cloud.
Fai clic su Prenota indirizzo statico per prenotare un indirizzo IPv4.
Assegna un nome all'indirizzo statico, ad esempio
appengine-external-ip
.Imposta il livello di rete su Premium.
Imposta la versione IP su IPv4.
Imposta il Tipo su Globale.
Fai clic su Prenota.
gcloud
Crea prenotazione di indirizzi IP esterni:
gcloud compute addresses create EXTERNAL_IP \ --network-tier=PREMIUM \ --ip-version=IPV4 \ --global
EXTERNAL_IP
è il nome degli indirizzi da creare.Prendi nota dell'indirizzo IPv4 riservato:
gcloud compute addresses describe EXTERNAL_IP \ --format="get(address)" \ --global
Configura il servizio di backend per App Engine
Un gruppo di endpoint di rete (NEG) viene utilizzato per specificare un gruppo di endpoint di backend per un bilanciatore del carico. Per specificare un backend che punta a un servizio App Engine, configura il NEG serverless, quindi configura il servizio di backend, le regole di routing e il servizio frontend in Cloud Load Balancing.
Crea un NEG serverless per la tua app App Engine:
gcloud compute network-endpoint-groups create APP_ENGINE_NEG \ --network-endpoint-type=serverless \ --app-engine-app \ --region=APP_ENGINE_REGION
Sostituisci quanto segue:
APP_ENGINE_NEG
è il nome del gruppo di endpoint di rete.APP_ENGINE_REGION
è la regione impostata in App Engine.
Puoi aggiungere il flag
--app-engine-app
in alto per utilizzare il routing predefinito, invece di indirizzare a un servizio App Engine specifico. Se utilizzi il routing predefinito, le richieste verranno inviate al servizio predefinito (https://PROJECT_ID.REGION_ID.r.appspot.com
) e seguono tutte le regole di routing che definisci nel filedispatch.yaml
. Questo è lo stesso comportamento dei domini personalizzati configurati utilizzando App Engine.Crea il servizio di backend:
gcloud compute backend-services create APP_ENGINE_BACKEND \ --global \ --load-balancing-scheme=EXTERNAL_MANAGED
Sostituisci
APP_ENGINE_BACKEND
con il nome del servizio di backend da creare.Aggiungi il NEG serverless al servizio di backend App Engine:
gcloud compute backend-services add-backend APP_ENGINE_BACKEND \ --global --network-endpoint-group=APP_ENGINE_NEG \ --network-endpoint-group-region=APP_ENGINE_REGION
Sostituisci quanto segue:
APP_ENGINE_BACKEND
è il nome del servizio di backend precedentemente utilizzato.APP_ENGINE_NEG
è il nome del gruppo di endpoint di rete.APP_ENGINE_REGION
è la regione impostata in App Engine.
Crea una mappa URL per instradare le richieste in entrata al servizio di backend:
gcloud compute url-maps create URL_MAP_NAME \ --default-service APP_ENGINE_BACKEND
Sostituisci quanto segue:
URL_MAP_NAME
è un nome univoco per la risorsa mappa URL che definisce la mappatura degli URL ai servizi di backend.APP_ENGINE_BACKEND
è il nome del servizio di backend precedentemente utilizzato.
Crea un proxy HTTPS di destinazione per instradare le richieste alla mappa degli URL:
gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \ --certificate-map=CERTIFICATE_MAP_NAME \ --url-map=URL_MAP_NAME
Sostituisci quanto segue:
TARGET_HTTPS_PROXY_NAME
è un nome univoco che scegli per descrivere il tuo proxy HTTPS.CERTIFICATE_MAP_NAME
è il nome della mappa di certificati che fa riferimento alla voce della mappa e al certificato associato.URL_MAP_NAME
è il nome della mappa URL precedente.
Crea una regola di forwarding per instradare le richieste in entrata al proxy:
gcloud compute forwarding-rules create HTTPS_FORWARDING_RULE_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=PREMIUM \ --address=EXTERNAL_IP \ --target-https-proxy=TARGET_HTTPS_PROXY_NAME \ --global \ --ports=443
Sostituisci quanto segue:
HTTPS_FORWARDING_RULE_NAME
è un nome univoco che descrive la regola di forwarding per indirizzare il traffico di rete al proxy HTTPS.TARGET_HTTPS_PROXY_NAME
è un nome del proxy HTTPS precedentemente utilizzato.EXTERNAL_IP
è il nome dell'indirizzo IPv4 creato in precedenza.
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 per i test prima di eseguire la migrazione del dominio.
- Vai alla pagina Bilanciamento del carico nella console Google Cloud.
Vai a Bilanciamento del carico - Fai clic sul bilanciatore del carico appena creato.
- Prendi nota dell'indirizzo IP del bilanciatore del carico.
Per un bilanciatore del carico HTTPS, puoi testare il bilanciatore del carico utilizzando un browser web andando all'indirizzo
https://IP_ADDRESS
. SostituisciIP_ADDRESS
con l'indirizzo IP del bilanciatore del carico, ad esempio30.90.80.100
.- Se non funziona e stai utilizzando un certificato gestito da Google, verifica che il tuo certificato sia
ACTIVE
e che la mappa di certificati siaACTIVE
. - Se utilizzi un certificato autofirmato per i test, il browser mostra un avviso. Devi indicare esplicitamente al tuo browser di accettare un certificato autofirmato. Fai clic sull'avviso per visualizzare la pagina effettiva.
Per ulteriori opzioni di configurazione, consulta Configurare un bilanciatore del carico HTTP(S) esterno globale con piattaforme serverless.
- Se non funziona e stai utilizzando un certificato gestito da Google, verifica che il tuo certificato sia
Connetti il tuo 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 puntare il tuo dominio al bilanciatore del carico, crea un record A
utilizzando il servizio di registrazione del dominio. Se hai aggiunto più domini al certificato SSL, devi aggiungere un record A
per ciascuno, tutti puntati all'indirizzo IP del bilanciatore del carico. Ad esempio, per creare i record A
per www.example.com
e example.com
, utilizza quanto segue:
NAME TYPE DATA www A 30.90.80.100 @ A 30.90.80.100
Se utilizzi Cloud DNS come provider DNS, consulta Aggiungere, modificare ed eliminare record.
Elimina il mapping di dominio personalizzato di App Engine
Nella console Google Cloud:
Vai alla scheda Domini personalizzati della pagina Impostazioni di App Engine.
Seleziona il nome di dominio personalizzato e fai clic su Elimina.
In alternativa, puoi utilizzare i comandi gcloud o l'API Admin per eliminare il dominio personalizzato.
Configura il controllo in entrata in modo da consentire l'accesso solo tramite Cloud Load Balancing
Dopo aver testato il bilanciatore del carico, ti consigliamo di aggiornare l'app App Engine in modo che accetti il traffico solo da Cloud Load Balancing. Per scoprire come configurare i controlli in entrata di internal-and-cloud-load-balancing
, consulta le impostazioni in entrata.