Testa ed esegui il deployment della tua applicazione

ID regione

REGION_ID è un codice abbreviato che Google assegna in base alla regione selezionata al momento della creazione dell'app. Il codice non corrisponde a un paese o a una provincia, anche se alcuni ID regione possono sembrare simili ai codici 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.

Scopri come eseguire la tua applicazione localmente, come eseguirne il deployment e come testarla in App Engine.

Esegui localmente

Per testare l'applicazione prima del deployment, eseguila nel tuo ambiente locale con gli strumenti di sviluppo che utilizzi abitualmente.

Esegui il deployment dell'applicazione

Esegui il deployment della tua applicazione in App Engine utilizzando il comando gcloud app deploy.

Il servizio Cloud Build crea automaticamente il deployment in un'immagine container e ne esegue il deployment nell'ambiente flessibile di App Engine. Il container include qualsiasi modifica locale apportata all'immagine runtime.

Per eseguire il deployment delle app in modo programmatico, utilizza l'API Admin.

Prima di iniziare

Prima di poter eseguire il deployment della tua applicazione:

Esegui il deployment di un servizio

Esegui il deployment dell'applicazione in App Engine eseguendo il deployment delle versioni dei servizi dell'applicazione e di ciascuno dei relativi file di configurazione.

  • Puoi eseguire il deployment degli altri file di configurazione del tuo servizio scegliendo come target e implementando ogni file separatamente, ad esempio:

    gcloud app deploy cron.yaml
    gcloud app deploy dispatch.yaml
    gcloud app deploy index.yaml
    
  • Per specificare un ID versione personalizzato, utilizza il flag --version.

  • Per impedire che il traffico venga instradato automaticamente alla nuova versione, utilizza il flag --no-promote.

  • Per eseguire il deployment in un progetto Google Cloud specifico, utilizza il flag --project.

Ad esempio, per eseguire il deployment del servizio definito dal file app.yaml in un progetto Google Cloud specifico, assegna al servizio un ID versione personalizzato e impedisci che il traffico venga instradato alla nuova versione:

gcloud app deploy --project PROJECT_ID --version VERSION_ID --no-promote

Per ulteriori informazioni, consulta la documentazione di riferimento di gcloud app deploy.

Puoi impostare proprietà per l'interfaccia alla gcloud CLI e creare e gestire le configurazioni SDK in modo da non dover specificare flag come --project ogni volta che esegui il deployment.

Ignora file

Puoi utilizzare un file .gcloudignore per specificare i file e le directory da non caricare su Google Cloud quando esegui il deployment dei tuoi servizi. Ciò è utile per ignorare gli artefatti della build e altri file che non devono essere caricati con il deployment.

Scopri di più sulla sintassi del file .gcloudignore nel riferimento gcloud.

Crea manualmente un container per il deployment

Per creare immagini container al di fuori di Google Cloud:

  1. Carica le immagini in un repository Artifact Registry. Per ulteriori informazioni, consulta l'articolo Esegui il push e il pull di immagini.
  2. Esegui il deployment in App Engine con il comando gcloud app deploy.

Ad esempio, se crei immagini container in locale con Docker, puoi eseguirne il push ad Artifact Registry e specificare l'URL dell'immagine nel flag --image-url del comando:

gcloud app deploy --image-url LOCATION-docker.pkg.dev/PROJECT-ID/REPOSITORY/IMAGE

Sostituisci:

  • LOCATION con la posizione del repository in cui è archiviata l'immagine.

  • PROJECT-ID con il tuo ID progetto Google Cloud.

  • REPOSITORY con il nome del repository in cui è archiviata l'immagine.

  • IMAGE con il nome della tua immagine container.

Usa pipeline di deployment continuo automatizzate

Con Cloud Build puoi automatizzare i deployment nelle pipeline di deployment continuo. Per ulteriori informazioni, consulta Deployment in App Engine e Creare e gestire trigger di build nella documentazione di Cloud Build.

Immagini di base Docker

Se vuoi creare un'applicazione di runtime personalizzata, consulta Creare un file Docker.

visualizza l'applicazione

Dopo aver eseguito il deployment dell'applicazione in App Engine, puoi eseguire questo comando per avviare il browser e visualizzarlo all'indirizzo https://PROJECT_ID.REGION_ID.r.appspot.com:

gcloud app browse

Test su App Engine

Prima di configurare una nuova versione per ricevere traffico, puoi testarla in App Engine. Ad esempio, per testare una nuova versione del tuo servizio default:

  1. Esegui il deployment della nuova versione e includi il flag --no-promote:

    gcloud app deploy --no-promote

  2. Per accedere alla nuova versione, visita il seguente URL:

    https://VERSION_ID-dot-default-dot-PROJECT_ID.REGION_ID.r.appspot.com

    Ora puoi testare la nuova versione nell'ambiente di runtime di App Engine. Puoi eseguire il debug dell'applicazione visualizzando i relativi log in Esplora log della console Google Cloud. Per ulteriori informazioni, consulta Scrittura di log delle applicazioni.

    Le richieste inviate a https://PROJECT_ID.REGION_ID.r.appspot.com verranno comunque instradate alla versione configurata in precedenza per ricevere traffico.

  3. Se vuoi inviare il traffico alla nuova versione, utilizza la console Google Cloud per eseguirne la migrazione:

    Gestisci le versioni

    Seleziona la versione di cui hai appena eseguito il deployment e fai clic su Esegui la migrazione del traffico.

Puoi utilizzare la stessa procedura per testare le nuove versioni di altri servizi sostituendo default nell'URL con il nome del tuo servizio:

https://VERSION-dot-SERVICE-dot-PROJECT_ID.REGION_ID.r.appspot.com

Per ulteriori informazioni sul targeting di versioni e servizi specifici, consulta Modalità di routing delle richieste.

Utilizza le variabili di ambiente di build

Puoi impostare le variabili di ambiente di build per i runtime che supportano i buildpack.

Le variabili di ambiente di build sono coppie chiave-valore che puoi specificare per configurare il buildpack che utilizzerai per il deployment dell'app. Ad esempio, potresti voler specificare le opzioni del compilatore.

Prima di iniziare:

  • Le chiavi devono iniziare con una lettera ASCII maiuscola e possono includere lettere ASCII maiuscole, numeri e trattini bassi.
  • Dovresti evitare di creare variabili con un prefisso chiave GOOGLE_*.
  • Le seguenti chiavi sono riservate all'utilizzo di Google:
    • GOOGLE_RUNTIME
    • GOOGLE_RUNTIME_VERSION
    • GOOGLE_ENTRYPOINT
    • GOOGLE_DEVMODE
  • Puoi utilizzare qualsiasi chiave supportata dai buildpacks.

Per utilizzare le variabili di ambiente con i buildpack, specifica il campo build_env_variables nel file app.yaml.

Scopri di più sui buildpack.

Utilizzo di Cloud Trace

Cloud Trace è utile per comprendere il modo in cui le richieste si propagano attraverso l'applicazione. Puoi esaminare informazioni dettagliate sulla latenza per una singola richiesta o visualizzare la latenza aggregata per l'intera applicazione.

Puoi visualizzare i dettagli della traccia. In Explorer Trace, puoi filtrare in base al servizio e alla versione specifici di App Engine.

Risolvere i problemi

Di seguito sono riportati i messaggi di errore comuni che potresti ricevere durante il deployment delle app:

PERMISSION_DENIED: Operation not allowed
The "appengine.applications.create" permission is required.
Se il progetto Google Cloud non include l'applicazione App Engine richiesta, il comando gcloud app deploy potrebbe non riuscire quando tenta di eseguire il comando gcloud app create. Solo gli account con ruolo Proprietario dispongono delle autorizzazioni necessarie per creare applicazioni App Engine.
502 Bad Gateway
Il progetto Google Cloud può non essere avviato se app.yaml non è configurato correttamente. Controlla i log dell'app per visualizzare messaggi di errore più dettagliati.
[13] An internal error occurred while creating a Cloud Storage bucket.

App Engine crea un bucket Cloud Storage predefinito per tuo conto nella stessa regione in cui crea l'applicazione. Richiede questo bucket per archiviare i contenuti dell'applicazione. L'errore viene restituito quando non è possibile creare questo bucket, come nei seguenti scenari:

Ad esempio, se l'app App Engine viene creata nell'area geografica europe-west, anche se quest'ultima è mappata alle località europe-west1, devi modificare il vincolo per consentire le risorse nella regione in:eu-locations, che include tutte le regioni (EU). Questa operazione è necessaria perché i bucket creati da App Engine sono a livello di più regioni. Se la tua app di App Engine viene creata nella regione US, devi consentire in:us-locations, mentre se la tua app viene creata nelle regioni ASIA, devi consentire in:asia-locations.

[13] An internal error occurred.

Questo errore può verificarsi se esegui il deployment del servizio con una configurazione di rete che utilizza una configurazione del VPC condiviso. Prova a procedere come segue:

  1. Assicurati che la configurazione di app.yaml sia valida.
  2. Assicurati che l'ambiente flessibile di App Engine soddisfi tutti i requisiti per la configurazione Consulta Utilizzo dell'ambiente flessibile di App Engine in una VPC condiviso condivisa.
  3. Assicurati che nel progetto siano presenti account di servizio configurati. In caso contrario, devi ripristinare gli account. La regione della subnet nel progetto host del VPC condiviso deve corrispondere alla località in cui è stato creato l'ambiente App Engine.

Se il problema persiste, esegui nuovamente il deployment del servizio utilizzando Google Cloud SDK. Assicurati di aggiungere il flag --verbosity=debug. Contatta l'assistenza di Google Cloud e fornisci l'output del comando.

IP space of {USER_SUBNETWORK_NAME} is exhausted and needs to be expanded.

Se il deployment non riesce e appare questo messaggio di errore, nella rete configurata per il servizio App Engine non sono rimasti indirizzi da allocare per le nuove istanze del servizio. Per risolvere il problema, espandi gli intervalli VPC nella subnet configurata per il servizio nell'ambiente flessibile di App Engine.