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.

Deployment dell'applicazione

Esegui il deployment dell'applicazione in App Engine utilizzando il comando gcloud app deploy. Questo comando crea automaticamente un'immagine container utilizzando il servizio Cloud Build e quindi esegue il deployment dell'immagine nell'ambiente flessibile di App Engine. Il container includerà eventuali modifiche locali apportate all'immagine di runtime.

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

Prima di iniziare

Prima di eseguire il deployment dell'applicazione:

Deployment di un servizio

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

Per eseguire il deployment di una versione del servizio dell'applicazione, esegui il comando seguente:

gcloud app deploy .\bin\Debug\netcoreapp2.1\publish\app.yaml

Per impostazione predefinita, il comando deploy genera automaticamente un nuovo ID versione ogni volta che lo utilizzi e indirizza il traffico alla nuova versione.

Per ignorare questo comportamento, puoi specificare l'ID versione con il flag version:

gcloud app deploy .\bin\Debug\netcoreapp2.1\publish\app.yaml --version myID

Puoi anche specificare di non inviare tutto il traffico alla nuova versione immediatamente con il flag --no-promote:

gcloud app deploy .\bin\Debug\netcoreapp2.1\publish\app.yaml --no-promote

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 .\bin\Debug\netcoreapp2.1\publish\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 .NET

Per creare un'applicazione runtime personalizzata .NET da scratch, utilizza un'immagine di base fornita nel Dockerfile:

Runtime Comando Docker
.NET FROM gcr.io/google-appengine/aspnetcore:1.0.11
.NET FROM gcr.io/google-appengine/aspnetcore:1.1.8
.NET FROM gcr.io/google-appengine/aspnetcore:2.0.7
.NET FROM gcr.io/google-appengine/aspnetcore:2.1.0

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 e includi il flag --no-promote:

    gcloud app deploy .\bin\Debug\netcoreapp2.1\publish\app.yaml --no-promote
  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.