1. Panoramica
ASP.NET Core è un nuovo framework open source e multipiattaforma per la creazione di moderne applicazioni basate sul cloud e connesse a internet utilizzando il linguaggio di programmazione C#.
In questo lab, eseguirai il deployment di una semplice app ASP.NET Core nell'ambiente flessibile di App Engine. Questo codelab si basa sul codelab Build and launch ASP.NET Core app from Google Cloud Shell. Ti consigliamo di svolgere prima questo lab.
Le applicazioni Google App Engine sono facili da creare, gestire e scalare man mano che cambiano le esigenze di traffico e archiviazione dei dati. Con App Engine, non ci sono server da gestire. Ti basterà caricare la tua applicazione e sarà pronta per l'uso.
Le applicazioni App Engine vengono scalate automaticamente in base al traffico in entrata. App Engine supporta in modo nativo bilanciamento del carico, microservizi, autorizzazione, database SQL e NoSQL, Memcache, suddivisione del traffico, logging, ricerca, controllo delle versioni, implementazione e rollback e scansione di sicurezza, tutti altamente personalizzabili.
Gli ambienti di App Engine, l'ambiente standard e l'ambiente flessibile, supportano una serie di linguaggi di programmazione, tra cui C#, Java, Python, PHP, Node.js, Go e altri ancora. I due ambienti offrono agli utenti la massima flessibilità nel comportamento dell'applicazione, poiché ogni ambiente ha determinati punti di forza. Per ulteriori informazioni, leggi Scegliere un ambiente App Engine.
Obiettivi didattici
- Come pacchettizzare una semplice app ASP.NET Core come container Docker.
- Come eseguire il deployment di un'app ASP.NET Core semplice in App Engine.
Che cosa ti serve
Come utilizzerai questo tutorial?
Come valuteresti la tua esperienza con Google Cloud Platform?
2. Configurazione e requisiti
Configurazione dell'ambiente autonomo
- Accedi alla console Google Cloud e crea un nuovo progetto o riutilizzane uno esistente. Se non hai ancora un account Gmail o Google Workspace, devi crearne uno.



- Il nome del progetto è il nome visualizzato per i partecipanti a questo progetto. È una stringa di caratteri non utilizzata dalle API di Google e puoi aggiornarla in qualsiasi momento.
- L'ID progetto deve essere univoco in tutti i progetti Google Cloud ed è immutabile (non può essere modificato dopo essere stato impostato). Cloud Console genera automaticamente una stringa univoca, di solito non ti interessa di cosa si tratta. Nella maggior parte dei codelab, devi fare riferimento all'ID progetto (che in genere è identificato come
PROJECT_ID), quindi, se non ti piace, generane un altro casuale oppure puoi provare il tuo e vedere se è disponibile. Viene "congelato" dopo la creazione del progetto. - Esiste un terzo valore, un numero di progetto, utilizzato da alcune API. Scopri di più su tutti e tre questi valori nella documentazione.
- Successivamente, devi abilitare la fatturazione in Cloud Console per utilizzare le risorse/API Cloud. L'esecuzione di questo codelab non dovrebbe costare molto, se non nulla. Per arrestare le risorse in modo da non incorrere in costi di fatturazione al termine di questo tutorial, segui le istruzioni di "pulizia" riportate alla fine del codelab. I nuovi utenti di Google Cloud possono beneficiare del programma prova senza costi di 300$.
Avvia Cloud Shell
Sebbene Google Cloud possa essere gestito da remoto dal tuo laptop, in questo codelab utilizzerai Google Cloud Shell, un ambiente a riga di comando in esecuzione nel cloud.
Attiva Cloud Shell
- Nella console Cloud, fai clic su Attiva Cloud Shell
.

Se non hai mai avviato Cloud Shell, viene visualizzata una schermata intermedia (sotto la piega) che ne descrive le funzionalità. In questo caso, fai clic su Continua e non comparirà più. Ecco come si presenta la schermata intermedia:

Bastano pochi istanti per eseguire il provisioning e connettersi a Cloud Shell.

Questa macchina virtuale è caricata con tutti gli strumenti per sviluppatori di cui hai bisogno. Offre una home directory permanente da 5 GB e viene eseguita in Google Cloud, migliorando notevolmente le prestazioni e l'autenticazione della rete. Gran parte del lavoro per questo codelab, se non tutto, può essere svolto semplicemente con un browser o con Chromebook.
Una volta eseguita la connessione a Cloud Shell, dovresti vedere che il tuo account è già autenticato e il progetto è già impostato sul tuo ID progetto.
- Esegui questo comando in Cloud Shell per verificare che l'account sia autenticato:
gcloud auth list
Output comando
Credentialed Accounts
ACTIVE ACCOUNT
* <my_account>@<my_domain.com>
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- Esegui questo comando in Cloud Shell per verificare che il comando gcloud conosca il tuo progetto:
gcloud config list project
Output comando
[core] project = <PROJECT_ID>
In caso contrario, puoi impostarlo con questo comando:
gcloud config set project <PROJECT_ID>
Output comando
Updated property [core/project].
3. Crea un'app ASP.NET Core in Cloud Shell
Nel prompt di Cloud Shell, puoi verificare che lo strumento a riga di comando dotnet sia già installato elencando gli SDK .NET installati:
dotnet --list-sdks
Successivamente, crea una nuova app web ASP.NET Core scheletrica con un framework di destinazione netcoreapp3.1:
dotnet new mvc -o HelloWorldAspNetCore -f netcoreapp3.1
Viene creato un progetto e ne vengono ripristinate le dipendenze. Dovresti vedere un messaggio simile al seguente.
Restore completed in 11.44 sec for HelloWorldAspNetCore.csproj.
Restore succeeded.
4. Esegui l'app ASP.NET Core
È quasi tutto pronto per eseguire la nostra app. Vai alla cartella dell'app.
cd HelloWorldAspNetCore
Infine, esegui l'app.
dotnet run --urls=http://localhost:8080
L'applicazione inizia ad ascoltare sulla porta 8080.
Hosting environment: Production
Content root path: /home/atameldev/HelloWorldAspNetCore
Now listening on: http://[::]:8080
Application started. Press Ctrl+C to shut down.
Per verificare che l'app sia in esecuzione, fai clic sul pulsante di anteprima web in alto a destra e seleziona "Anteprima sulla porta 8080".

Vedrai la pagina web ASP.NET Core predefinita:

Dopo aver verificato che l'app è in esecuzione, premi Ctrl+C per chiuderla.
5. Pubblica l'app ASP.NET Core
Ora pubblica l'app per ottenere una DLL autonoma utilizzando il comando dotnet publish.
dotnet publish -c Release
L'esecuzione di publish mostra alcuni messaggi con una DLL pubblicata correttamente al termine della procedura.
...
HelloWorldAspNetCore -> /home/atameldev/HelloWorldAspNetCore/bin/Release/netcoreapp3.1/HelloWorldAspNetCore.dll
HelloWorldAspNetCore -> /home/atameldev/HelloWorldAspNetCore/bin/Release/netcoreapp3.1/HelloWorldAspNetCore.Views.dll
HelloWorldAspNetCore -> /home/atameldev/HelloWorldAspNetCore/bin/Release/netcoreapp3.1/publish/
6. Crea app.yaml per l'ambiente flessibile di App Engine
Il file app.yaml descrive come eseguire il deployment dell'app in App Engine, in questo caso l'ambiente flessibile di App Engine.
Innanzitutto, vai alla cartella publish. Deve trovarsi nella cartella bin/Release, ma il percorso esatto dipende dalla versione di .NET:
cd bin/Release/netcoreapp3.1/publish/
Crea un file app.yaml all'interno della cartella publish:
cat <<EOT >> app.yaml
env: flex
runtime: aspnetcore
EOT
Nota come il file app.yaml specifichi l'ambiente come flex e il runtime come aspnetcore.
7. Esegui il deployment in App Engine flessibile
Ora puoi eseguire il deployment dell'app in App Engine flessibile utilizzando gcloud. All'interno della directory publish, esegui questo comando:
gcloud app deploy --version v0
Durante il deployment, potrebbe esserti chiesto di scegliere una regione per la tua applicazione. Scegli una regione in cui vuoi eseguire l'app.
Please choose a region for your application. After choosing a region,
you cannot change it. Which region would you like to choose?
[1] europe-west (supports standard and flexible)
[2] us-central (supports standard and flexible)
[3] us-east1 (supports standard and flexible)
[4] asia-northeast1 (supports standard and flexible)
[5] cancel
In questo modo verrà creata un'immagine per la tua applicazione nel cloud, che verrà salvata in Google Container Registry e di cui verrà eseguito il deployment in App Engine. Durante il deployment, puoi vedere l'immagine container in fase di creazione:
Operation completed over 1 objects/571.8 KiB.
BUILD
Step #0: Pulling image: gcr.io/gcp-runtimes/aspnetcorebuild@sha256:d7b7975acb374fc3a9655a4e529993e6270cfa78023885684626528bc379f8eb
Step #0: sha256:d7b7975acb374fc3a9655a4e529993e6270cfa78023885684626528bc379f8eb: Pulling from gcp-runtimes/aspnetcorebuild
Alla fine, dovresti vedere che l'app è stata implementata.
...
Deployed service [default] to [https://<project-id>.appspot.com]
Dopo aver eseguito il deployment dell'applicazione,visita l'URL http://<project-id>.appspot.com nel browser web.
Vedrai la pagina web ASP.NET Core predefinita in una nuova scheda.

Puoi anche dare un'occhiata all'immagine container creata per te nel cloud. Nella console Cloud, vai a Container Registry > Immagini e poi nella cartella appengine dovresti vedere l'immagine della tua applicazione.

8. Esegui il deployment di una nuova versione del servizio
A un certo punto, l'applicazione che hai implementato in produzione richiederà correzioni di bug o funzionalità aggiuntive. App Engine è qui per aiutarti a eseguire il deployment di una nuova versione in produzione senza influire sugli utenti.
Innanzitutto, modifichiamo l'applicazione. Apri l'editor di codice da Cloud Shell.

Vai a Index.cshtml nella cartella Views/Home di HelloWorldAspNetCore e aggiorna il messaggio predefinito con questo testo:
Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core on Google Cloud Platform!
Salva le modifiche e torna a Cloud Shell. All'interno di HelloWorldAspNetCore,, pubblica l'app per ottenere una DLL autonoma.
dotnet publish -c Release
Vai alla directory di pubblicazione.
cd bin/Release/netcoreapp3.1/publish/
Ora puoi eseguire il deployment di una nuova versione della tua app (v1 in questo caso).
gcloud app deploy --version v1
Una volta eseguito il deployment, puoi andare alla sezione delle versioni di App Engine di Google Cloud Console per visualizzare la nuova versione della tua app che gestisce tutto il traffico con il nuovo messaggio.

9. Dashboard e suddivisione del traffico
In App Engine, nella sezione Dashboard, puoi visualizzare una serie di dashboard per la tua applicazione relative a latenza, CPU e così via. Esplorale in autonomia.

Nella sezione Versioni puoi visualizzare le versioni dell'app di cui è stato eseguito il deployment e puoi suddividere il traffico tra le diverse versioni nella sezione Suddivisione del traffico. Suddividiamo il traffico tra due versioni:

10. Complimenti!
Cleanup
È il momento di chiudere l'app per risparmiare sui costi e per essere un buon cittadino del cloud.
Vai alla sezione delle versioni di App Engine.

Seleziona la versione e interrompila.

Una volta arrestata la versione, le istanze di backend verranno eliminate e il conteggio delle istanze dovrebbe scendere a zero.

Argomenti trattati
Ecco fatto. Hai creato un'app ASP.NET Core, l'hai pacchettizzata come container Docker e l'hai eseguita il deployment su Google App Engine Flexible.
- Come pacchettizzare una semplice app ASP.NET Core come container Docker.
- Come eseguire il deployment di un'app ASP.NET Core semplice in App Engine.
Passaggi successivi
- Scopri di più su Windows su Google Cloud Platform.
- Scopri di più su .NET su Google Cloud.
- Scopri di più su SQL Server su Google Cloud Platform.
- Scopri di più su Cloud Tools for Visual Studio.
- Scopri di più su Cloud Tools for PowerShell.
Licenza
Questo lavoro è concesso in licenza ai sensi di una licenza Creative Commons Attribution 2.0 Generic.