1. Introduzione

Cloud Run è una piattaforma gestita che consente di eseguire container stateless richiamabili tramite richieste HTTP. Cloud Run è serverless. Astrae completamente la gestione dell'infrastruttura per consentirti di concentrarti su quello che conta davvero: creare applicazioni fantastiche.
È basato su Knative per consentirti di scegliere se eseguire i container in maniera completamente gestita con Cloud Run o nel tuo cluster Google Kubernetes Engine con Cloud Run su GKE.
L'obiettivo di questo codelab è creare un'immagine container ed eseguirne il deployment su Cloud Run.
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. Puoi sempre aggiornarlo.
- L'ID progetto è univoco in tutti i progetti Google Cloud ed è immutabile (non può essere modificato dopo l'impostazione). La console Cloud genera automaticamente una stringa univoca, di solito non ti interessa di cosa si tratta. Nella maggior parte dei codelab, dovrai fare riferimento all'ID progetto (in genere identificato come
PROJECT_ID). Se l'ID generato non ti piace, puoi generarne un altro casuale. In alternativa, puoi provare a crearne uno e vedere se è disponibile. Non può essere modificato dopo questo passaggio e rimane per tutta la durata del progetto. - Per tua informazione, 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. Completare questo codelab non costa molto, se non nulla. Per arrestare le risorse ed evitare addebiti oltre a quelli previsti in questo tutorial, puoi eliminare le risorse che hai creato o il progetto. I nuovi utenti di Google Cloud possono beneficiare del programma prova senza costi di 300$.
Google Cloud Shell
Sebbene Google Cloud possa essere gestito da remoto dal tuo laptop, in questo codelab utilizzeremo Google Cloud Shell, un ambiente a riga di comando in esecuzione nel cloud.
Cloud Shell è un ambiente operativo e di sviluppo online accessibile ovunque con il browser. Puoi gestire le tue risorse tramite il suo terminale online che dispone di utilità precaricate come lo strumento a riga di comando gcloud, kubectl e molto altro. Puoi anche sviluppare, creare, eseguire il debug e il deployment delle tue app basate su cloud utilizzando l'editor di Cloud Shell online.
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 direttamente in Google Cloud, migliorando notevolmente le prestazioni e l'autenticazione della rete. Ciò significa che per questo codelab ti servirà solo un browser (sì, funziona su Chromebook).
- Per attivare Cloud Shell dalla console Cloud, fai clic su Attiva Cloud Shell :

Se è la prima volta che avvii Cloud Shell, viene visualizzata una schermata intermedia che ne descrive le funzionalità. Se è stata visualizzata una schermata intermedia, fai clic su Continua.

Il provisioning dell'ambiente dovrebbe richiedere solo pochi secondi :

Una volta eseguita la connessione a Cloud Shell, dovresti vedere che il tuo account è già autenticato :
gcloud auth list
Output comando
Credentialed Accounts ACTIVE: * ACCOUNT: <my-account>@<mydomain>
Il progetto dovrebbe essere già impostato sul tuo PROJECT_ID (supponendo che tu abbia selezionato un progetto nella console web) :
gcloud config list project
Output comando
[core] project = <PROJECT_ID>
Se per qualche motivo il progetto non è impostato, esegui questo comando:
gcloud config set project <PROJECT_ID>
Stai cercando PROJECT_ID? Controlla il menu a discesa nella parte superiore di Cloud Console :

Puoi anche controllare i dettagli del progetto utilizzando la sezione "Impostazioni e utilità":

Cloud Shell imposta anche alcune variabili di ambiente per impostazione predefinita, che potrebbero essere utili quando esegui i comandi futuri.
echo $GOOGLE_CLOUD_PROJECT
Output comando
<PROJECT_ID>
- Infine, puoi impostare la zona predefinita :
gcloud config set compute/zone us-central1-f
Puoi scegliere zone diverse. Per saperne di più, consulta Regioni e zone.
Abilita l'API Cloud Run
Da Cloud Shell, abilita l'API Cloud Run :
gcloud services enable run.googleapis.com
Dovrebbe essere visualizzato un messaggio di operazione riuscita simile a questo :
Operation "operations/acf.cc11852d-40af-47ad-9d59-477a12847c9e" finished successfully.
3. scrivi l'applicazione di esempio
Creeremo una semplice applicazione ASP.NET C# che risponde alle richieste HTTP.
Per creare l'applicazione, utilizza lo strumento a riga di comando dotnet in Cloud Shell:
dotnet new web -o helloworld-csharp
Passa alla directory helloworld-csharp:
cd helloworld-csharp
Successivamente, aggiorna Program.cs in modo che corrisponda a quanto segue:
var builder = WebApplication.CreateBuilder(args);
var port = Environment.GetEnvironmentVariable("PORT") ?? "8080";
var url = $"http://0.0.0.0:{port}";
builder.WebHost.UseUrls(url);
var app = builder.Build();
app.MapGet("/", () => "Hello World!");
app.Run();
Questo codice crea un server web di base in ascolto sulla porta definita dalla variabile di ambiente PORT e risponde con Hello World.
Puoi testare l'app eseguendola localmente in Cloud Shell. Dovresti vederlo in ascolto sulla porta 8080:
$ dotnet run Using launch settings from /home/atameldev/helloworld-csharp/Properties/launchSettings.json... Hosting environment: Development Content root path: /home/atameldev/helloworld-csharp Now listening on: http://0.0.0.0:8080 Application started. Press Ctrl+C to shut down.
4. Esegui il deployment in Cloud Run
Esegui il deployment dell'applicazione su Cloud Run con questo comando:
gcloud run deploy hello-world \
--allow-unauthenticated \
--region us-central1 \
--source .
hello-worldè il nome del servizio.- Il flag
allow-unauthenticatedesegue il deployment del servizio come servizio disponibile pubblicamente senza requisiti di autenticazione. us-central1è la regione in cui verrà eseguito il deployment dell'app.- Il flag
sourcedetermina la posizione della sorgente da creare. Cloud Run utilizza i buildpack per creare automaticamente un container dal codice sorgente.
Attendi un paio di minuti fino al completamento del deployment. Se l'operazione riesce, la riga di comando visualizza l'URL del servizio:
Service [hello-world] revision [hello-world-00001-yos] has been deployed and is serving 100 percent of traffic. Service URL: https://helloworld-wdl7fdwaaa-uc.a.run.app
Ora puoi visitare il container di cui hai eseguito il deployment aprendo l'URL del servizio in un browser web :

Complimenti! Hai eseguito il deployment di un'applicazione pacchettizzata in un'immagine container su Cloud Run. Cloud Run scala automaticamente e orizzontalmente l'immagine container per gestire le richieste ricevute, quindi fa lo scale down quando la domanda diminuisce. Paghi solo per la CPU, la memoria e le risorse di rete utilizzate durante la gestione delle richieste.
5. È il momento di eseguire la pulizia
Puoi decidere di eliminare il tuo progetto GCP per evitare addebiti, interrompendo così la fatturazione per tutte le risorse utilizzate all'interno di quel progetto, o semplicemente eliminare il servizio Cloud Run:
gcloud run services delete helloworld
6. Passaggi successivi
Un buon passo successivo è eseguire il deployment su Cloud Run su GKE.
Per saperne di più sulla creazione di un container HTTP stateless adatto per Cloud Run dall'origine del codice e su come eseguirne il push in Container Registry, vai alla pagina: