Test e deployment dell'applicazione

ID regione

REGION_ID è un codice abbreviato assegnato da Google in base all'area geografica selezionata al momento della creazione dell'app. Il codice non corrisponde a un paese o a una provincia, anche se alcuni ID di area geografica potrebbero essere 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 area geografica è facoltativo nell'URL.

Scopri di più sugli ID dell'area geografica.

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

Esecuzione in locale

Per testare la funzionalità della tua applicazione prima del deployment, esegui l'applicazione nel tuo ambiente locale con gli strumenti di sviluppo che utilizzi abitualmente.

Per maggiori dettagli, inclusi comandi specifici a seconda del plug-in, consulta Test locale per il runtime Java 8/Jetty 9 o Test locale per il runtime Java 8.

Deployment dell'applicazione

Prima di iniziare

Prima di eseguire il deployment dell'applicazione:

Deployment di un servizio

Puoi utilizzare qualsiasi strumento supportato per eseguire il deployment dell'applicazione Java nell'ambiente flessibile di App Engine. Per il deployment a riga di comando, utilizza gcloud app deploy nell'interfaccia a riga di comando gcloud o i plug-in Maven o Gradle. Per eseguire il deployment utilizzando un IDE, utilizza i plug-in IntelliJ o Eclipse. Per eseguire il deployment delle app in modo programmatico, utilizza l'API Admin.

Ignorare i file

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

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

Creazione manuale di un container per il deployment

Per creare immagini container all'esterno di Google Cloud Platform, devi prima caricarle in un repository di immagini container per poterne eseguire il deployment su App Engine con il comando gcloud app deploy.

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

gcloud app deploy src/main/appengine/app.yaml --image-url gcr.io/YOUR_PROJECT_ID/YOUR_CONTAINER_IMAGE

Utilizzo delle pipeline di deployment continuo automatico

Puoi utilizzare Cloud Build per automatizzare i deployment nelle pipeline di deployment continuo. Per ulteriori informazioni, consulta Deployment di artefatti e automazione delle build tramite trigger di build nella documentazione di Cloud Build.

Immagini Docker di base per Java

Se vuoi creare un'applicazione runtime personalizzata di Java da graffiare, utilizza un'immagine di base fornita nel Dockerfile:

Runtime Comando Docker
Java 8 FROM gcr.io/google_appengine/openjdk
Java 8/Jetty 9 FROM gcr.io/google-appengine/jetty

Visualizzazione dell'applicazione

Dopo aver eseguito il deployment dell'applicazione in App Engine, puoi eseguire il comando seguente 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 il traffico, puoi testarla su App Engine. Ad esempio, per testare una nuova versione del servizio default:

  1. Esegui il deployment della nuova versione con il parametro promote impostato su false:

  2. Accedi alla nuova versione accedendo al 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 di Google Cloud Console. Per ulteriori informazioni, consulta la pagina relativa alla scrittura dei log delle applicazioni.

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

  3. Quando vuoi inviare traffico alla nuova versione, utilizza Cloud Console per eseguire la migrazione del traffico:

    Gestisci le versioni

    Seleziona la versione appena sottoposta a deployment e fai clic su Esegui la migrazione del traffico.

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

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

Risolvere i problemi

Di seguito sono riportati i messaggi di errore comuni che potresti visualizzare quando esegui il deployment delle app:

PERMISSION_DENIED: Operation not allowed
The "appengine.applications.create" permission is required.
Se il progetto cloud non include l'applicazione richiesta di App Engine, il comando gcloud app deploy potrebbe non riuscire quando tenta di eseguire il comando gcloud app create. Solo gli account con ruolo Proprietario hanno le autorizzazioni necessarie per creare applicazioni App Engine.
502 Bad Gateway
Se app.yaml è configurato in modo errato, il progetto Cloud potrebbe non avviarsi. 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 per più aree geografiche predefinito per tuo conto, nella stessa area geografica in cui viene creata l'applicazione. Questo bucket è necessario per archiviare i contenuti dell'applicazione. Questo errore viene restituito quando non è possibile creare questo bucket nei seguenti scenari:

[13] An internal error occurred.

Questo errore può verificarsi se esegui il deployment del servizio con una configurazione di rete utilizzando una configurazione VPC condiviso. Assicurati che il tuo ambiente flessibile di App Engine soddisfi tutti i requisiti per questa configurazione. Successivamente, assicurati che gli account di servizio configurati per questa configurazione siano presenti nel tuo progetto, altrimenti dovrai ripristinare gli account. Tieni presente che l'area geografica della subnet nel progetto host VPC condiviso deve corrispondere alla località in cui è stato creato l'ambiente App Engine.

Se il problema persiste dopo aver verificato la configurazione di app.yaml, utilizza Google Cloud SDK per eseguire nuovamente il deployment del servizio, aggiungendo il flag --verbosity=debug e contatta l'assistenza di GCP fornendo l'output del comando.

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

Se il deployment non riesce con questo messaggio di errore, significa che la rete configurata per il servizio App Engine non ha indirizzi da allocare per le nuove istanze del servizio. Puoi risolvere il problema espandendo gli intervalli VPC sulla subnet configurata per il servizio dell'ambiente flessibile di App Engine.