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 di eseguire i container in modo completamente gestito 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 in Cloud Run.
2. Configurazione e requisiti
Configurazione dell'ambiente da seguire in modo 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 progetto è il nome visualizzato dei partecipanti del progetto. Si tratta di una stringa di caratteri non utilizzata dalle API di Google. Puoi sempre aggiornarla.
- L'ID progetto è univoco in tutti i progetti Google Cloud ed è immutabile (non può essere modificato dopo essere stato impostato). La console Cloud genera automaticamente una stringa univoca. di solito non ti importa cosa sia. Nella maggior parte dei codelab, dovrai fare riferimento al tuo ID progetto (in genere identificato come
PROJECT_ID
). Se l'ID generato non ti soddisfa, potresti generarne un altro casuale. In alternativa, puoi provarne una personalizzata per verificare se è disponibile. Non può essere modificato dopo questo passaggio e rimane per tutta la durata del progetto. - Per informazione, c'è un terzo valore, un numero di progetto, utilizzato da alcune API. Scopri di più su tutti e tre questi valori nella documentazione.
- Successivamente, dovrai abilitare la fatturazione nella console Cloud per utilizzare risorse/API Cloud. L'esecuzione di questo codelab non ha alcun costo. Per arrestare le risorse ed evitare di incorrere in fatturazione dopo questo tutorial, puoi eliminare le risorse che hai creato o eliminare il progetto. I nuovi utenti di Google Cloud sono idonei al programma prova senza costi di 300$.
Google Cloud Shell
Anche se Google Cloud può essere utilizzato 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 con il suo terminale online precaricato con utilità come lo strumento a riga di comando gcloud, kubectl e 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 viene caricata con tutti gli strumenti di sviluppo 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 di rete. Ciò significa che per questo codelab sarà sufficiente un browser (sì, funziona su Chromebook).
- Per attivare Cloud Shell dalla console Cloud, è sufficiente fare clic su Attiva Cloud Shell :
Se è la prima volta che avvii Cloud Shell, ti verrà mostrata una schermata intermedia che descrive di cosa si tratta. Se ti è stata presentata una schermata intermedia, fai clic su Continua.
Il provisioning dell'ambiente dovrebbe richiedere solo pochi secondi :
Una volta stabilita la connessione a Cloud Shell, dovresti vedere che hai già eseguito l'autenticazione :
gcloud auth list
Output comando
Credentialed Accounts ACTIVE: * ACCOUNT: <my-account>@<mydomain>
Il progetto dovrebbe inoltre essere già impostato su 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, invia semplicemente il seguente comando:
gcloud config set project <PROJECT_ID>
Stai cercando il tuo PROJECT_ID
? Controlla il menu a discesa nella parte superiore della console Cloud :
Puoi anche controllare i dettagli del progetto usando il menu sezione:
Cloud Shell imposta anche alcune variabili di ambiente per impostazione predefinita, cosa che può essere utile quando eseguirai 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 ulteriori informazioni, consulta la sezione 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 la tua applicazione, usa lo strumento a riga di comando dotnet
in Cloud Shell:
dotnet new web -o helloworld-csharp
Passa alla directory helloworld-csharp
:
cd helloworld-csharp
Dopodiché 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 che rimane 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 vederla 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 della tua applicazione in 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-unauthenticated
esegue 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
source
determina la posizione dell'origine da creare. Cloud Run utilizza i buildpack per creare automaticamente un container a partire dal codice sorgente.
Attendi qualche minuto 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 il networking utilizzati durante la gestione delle richieste.
5. È ora di eseguire la pulizia
Puoi decidere di eliminare il tuo progetto Google Cloud 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 passaggio successivo sarebbe Eseguire il deployment in 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: