Da poco lavori come sviluppatore cloud per un'azienda IT che utilizza Google Cloud come principale cloud provider. Ti è stato chiesto di creare applicazioni web serverless e stateless nel cloud. Quindi devi adottare il servizio Cloud Run offerto da Google Cloud.
Ti interessano in particolare:
L'attivazione dell'API Cloud Run
L'archiviazione delle immagini container
Il deployment serverless per applicazioni containerizzate
Le best practice per la riduzione dei costi
Poiché hai lavorato con AWS presso il tuo precedente datore di lavoro, sai che AWS Fargate esegue il provisioning di ambienti containerizzati in modalità serverless. AWS Fargate gestisce l'attività di lancio, scalabilità e monitoraggio dei container, consentendo agli sviluppatori di concentrarsi più facilmente sul codice dell'applicazione per eseguire il deployment, gestire e ridimensionare le applicazioni containerizzate in modo semplice. Inoltre, AWS Fargate ti consente di eseguire il deployment di container per Amazon Elastic Container Service (Amazon ECS) o Amazon Elastic Kubernetes Service (Amazon EKS). Ciò significa che gli sviluppatori possono scegliere l'opzione di orchestrazione che meglio si adatta alle loro esigenze.
Un'applicazione containerizzata serverless basata su AWS Fargate è simile al seguente diagramma:
Ora vedrai come eseguire il deployment delle applicazioni su Google Cloud.
Panoramica
Cloud Run è una piattaforma gestita di computing 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.
Cloud Run è 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 lab è creare una semplice immagine dell'applicazione containerizzata ed eseguirne il deployment su Cloud Run.
Obiettivi
In questo lab imparerai a:
Abilitare l'API Cloud Run.
Creare una semplice applicazione Node.js di cui sia possibile eseguire il deployment come container serverless e stateless.
Containerizzare l'applicazione e caricarla in Container Registry (ora denominato "Artifact Registry").
Eseguire il deployment di un'applicazione containerizzata in Cloud Run.
Eliminare le immagini non necessarie per evitare costi di archiviazione aggiuntivi.
Configurazione e requisiti
Per ciascun lab, riceverai un nuovo progetto Google Cloud e un insieme di risorse per un periodo di tempo limitato senza alcun costo aggiuntivo.
Accedi a Qwiklabs utilizzando una finestra di navigazione in incognito.
Tieni presente la durata dell'accesso al lab (ad esempio, 1:15:00) e assicurati di finire entro quell'intervallo di tempo.
Non è disponibile una funzionalità di pausa. Se necessario, puoi riavviare il lab ma dovrai ricominciare dall'inizio.
Quando è tutto pronto, fai clic su Inizia lab.
Annota le tue credenziali del lab (Nome utente e Password). Le userai per accedere a Google Cloud Console.
Fai clic su Apri console Google.
Fai clic su Utilizza un altro account e copia/incolla le credenziali per questo lab nei prompt.
Se utilizzi altre credenziali, compariranno errori oppure ti verranno addebitati dei costi.
Accetta i termini e salta la pagina di ripristino delle risorse.
Come avviare il lab e accedere alla console
Fai clic sul pulsante Avvia lab. Se devi effettuare il pagamento per il lab, si apre una finestra popup per permetterti di selezionare il metodo di pagamento.
Sul lato sinistro trovi un riquadro con le credenziali temporanee da utilizzare per il lab.
Copia il nome utente, quindi fai clic su Apri console Google.
Il lab avvia le risorse e apre un'altra scheda che mostra la pagina Scegli un account.
Nota: apri le schede in finestre separate posizionate fianco a fianco.
Nella pagina Scegli un account, fai clic su Utilizza un altro account. Si apre la pagina di accesso.
Qui incolla il nome utente che hai copiato dal riquadro Dettagli connessione, quindi copia e incolla la password.
Nota: devi utilizzare le credenziali presenti nel riquadro Dettagli connessione. Non utilizzare le tue credenziali Google Cloud Skills Boost. Se hai un account Google Cloud, non usarlo per questo lab per evitare che ti vengano addebitati dei costi.
Fai clic nelle pagine successive:
Accetta i termini e le condizioni.
Non inserire opzioni di recupero o l'autenticazione a due fattori, perché si tratta di un account temporaneo.
Non registrarti per le prove gratuite.
Dopo qualche istante, la console Cloud si apre in questa scheda.
Nota: puoi visualizzare il menu con un elenco di prodotti e servizi Google Cloud facendo clic sul menu di navigazione in alto a sinistra.
Attiva Google Cloud Shell
Google Cloud Shell è una macchina virtuale in cui sono caricati strumenti per sviluppatori. Offre una home directory permanente da 5 GB e viene eseguita su Google Cloud.
Google Cloud Shell fornisce l'accesso da riga di comando alle risorse Google Cloud.
Nella barra degli strumenti in alto a destra della console Cloud, fai clic sul pulsante Apri Cloud Shell.
Fai clic su Continua.
Bastano pochi istanti per eseguire il provisioning e connettersi all'ambiente. Quando la connessione è attiva, l'autenticazione è già avvenuta e il progetto è impostato sul tuo PROJECT_ID. Ad esempio:
gcloud è lo strumento a riga di comando di Google Cloud. È preinstallato su Cloud Shell e supporta il completamento.
Puoi visualizzare il nome dell'account attivo con questo comando:
Di seguito troverai un elenco di riferimento di alcuni comandi Linux molto basilari che possono essere inclusi nelle istruzioni o nei blocchi di codice per questo lab.
Comando -->
Azione
.
Comando -->
Azione
mkdir (make directory)
crea una nuova cartella
.
cd (change directory)
passa a un'altra cartella
ls (list )
elenca file e cartelle contenuti nella directory
.
cat (concatenate)
consente di leggere i contenuti di un file senza utilizzare un editor
apt-get update
aggiorna la libreria del gestore di pacchetti
.
ping
invia un segnale per testare la raggiungibilità di un host
mv (move )
sposta un file
.
cp (copy)
crea la copia di un file
pwd (present working directory )
torna alla posizione corrente
.
sudo (super user do)
concede privilegi amministrativi più elevati
Attività 1: abilita l'API Cloud Run e configura il tuo ambiente Shell
Da Cloud Shell, abilita l'API Cloud Run:
gcloud services enable run.googleapis.com
Se ti viene chiesto di autorizzare l'utilizzo delle tue credenziali, fallo. Dovresti quindi vedere un messaggio di operazione riuscita simile a questo:
Operation "operations/acf.cc11852d-40af-47ad-9d59-477a12847c9e" finished successfully.
Nota: puoi anche abilitare l'API utilizzando la sezione API e servizi della console.
Imposta la regione di computing:
gcloud config set compute/region {{{ project_0.default_region| "Region" }}}
In questa attività creerai una semplice applicazione NodeJS basata su Express che risponderà alle richieste HTTP.
In Cloud Shell crea una nuova directory denominata helloworld, quindi sposta la visualizzazione in quella directory:
mkdir helloworld && cd helloworld
Quindi creerai e modificherai i file. Per modificare i file, usa vi, emac, nano o l'editor di codice Cloud Shell facendo clic sul pulsante Apri editor in Cloud Shell.
Crea un file package.json, e copia al suo interno il seguente codice:
Molto importante: il file sopra contiene un comando di avvio di script e una dipendenza dal framework dell'applicazione web Express.
Premi CTRL+X e poi Y per salvare il file package.json.
Quindi, nella stessa directory, crea un file index.js e copia al suo interno le seguenti righe:
nano index.js
const express = require('express');
const app = express();
const port = process.env.PORT || 8080;
app.get('/', (req, res) => {
const name = process.env.NAME || 'World';
res.send(`Hello ${name}!`);
});
app.listen(port, () => {
console.log(`helloworld: listening on port ${port}`);
});
Questo codice crea un server web di base in ascolto sulla porta definita dalla variabile di ambiente PORT. La tua app è ora completa e pronta per essere containerizzata e caricata in Container Registry.
Premi CTRL+X e poi Y per salvare il file index.js.
Nota: puoi utilizzare molti altri linguaggi per iniziare a utilizzare Cloud Run. Le istruzioni per gli script Go, Python, Java, PHP, Ruby, Shell e altri sono disponibili nella pagina delle guide rapide.
Attività 3: recupera la tua app e caricala su Artifact Registry
Per containerizzare l'app di esempio, crea un nuovo file denominato Dockerfile nella stessa directory dei file di origine e aggiungi il contenuto seguente:
nano Dockerfile
# Use the official lightweight Node.js 12 image.
# https://hub.docker.com/_/node
FROM node:12-slim
# Create and change to the app directory.
WORKDIR /usr/src/app
# Copy application dependency manifests to the container image.
# A wildcard is used to ensure copying both package.json AND package-lock.json (when available).
# Copying this first prevents re-running npm install on every code change.
COPY package*.json ./
# Install production dependencies.
# If you add a package-lock.json, speed your build by switching to 'npm ci'.
# RUN npm ci --only=production
RUN npm install --only=production
# Copy local code to the container image.
COPY . ./
# Run the web service on container startup.
CMD [ "npm", "start" ]
Premi CTRL+X e poi Y per salvare il file Dockerfile.
Ora crea la tua immagine container utilizzando Cloud Build eseguendo il comando seguente dalla directory contenente il file Dockerfile (nota come la variabile di ambiente $GOOGLE_CLOUD_PROJECT nel comando, contiene l'ID progetto del lab):
Cloud Build è un servizio che esegue le tue build su Google Cloud. Esegue una serie di passaggi di build, ognuno eseguito in un container Docker per produrre il container dell'applicazione (o altri artefatti) ed eseguirne il push in Cloud Registry, tutto in un unico comando.
Una volta eseguito il push in Cloud Registry, vedrai una notifica di operazione riuscita contenente il nome dell'immagine (gcr.io/[PROJECT-ID]/helloworld). L'immagine è archiviata in Artifact Registry e, se lo desideri, può essere riutilizzata.
Elenca tutte le immagini container associate al tuo progetto corrente usando questo comando:
gcloud container images list
Per eseguire e testare l'applicazione in locale da Cloud Shell, avviala utilizzando questo comando docker standard:
docker run -d -p 8080:8080 gcr.io/$GOOGLE_CLOUD_PROJECT/helloworld
Nella finestra Cloud Shell, fai clic su Anteprima web e seleziona Anteprima sulla porta 8080.
Dovrebbe aprirsi una finestra del browser con il messaggio "Hello World!". Puoi anche utilizzare semplicemente il comando curl localhost:8080.
Nota: se il comando docker non riesce a eseguire il pull dell'immagine del container remoto, prova a eseguire questo: gcloud auth configure-docker
Attività 4: esegui il deployment in Cloud Run
Il deployment dell'applicazione containerizzata su Cloud Run viene eseguito utilizzando il comando seguente aggiungendo il tuo ID progetto:
gcloud run deploy --image gcr.io/$GOOGLE_CLOUD_PROJECT/helloworld --allow-unauthenticated --region=$LOCATION
Il flag allow-unauthenticated nel comando sopra rende il tuo servizio pubblicamente accessibile.
Quando viene richiesto, conferma il service name premendo Invio.
Attendi qualche istante fino al completamento del deployment.
Se l'operazione riesce, la riga di comando visualizza l'URL del servizio:
Service [helloworld] revision [helloworld-00001-xit] has been deployed
and is serving 100 percent of traffic.
Service URL: https://helloworld-h6cp412q3a-uc.a.run.app
Ora puoi visitare il container di cui hai eseguito il deployment aprendo l'URL del servizio in qualsiasi finestra del browser.
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. Nel tuo ambiente, paghi solo per la CPU, la memoria e le risorse di rete utilizzate durante la gestione delle richieste.
Per questo lab hai utilizzato la riga di comando gcloud. Cloud Run è disponibile anche tramite la console Cloud.
Dal menu di navigazione, nella sezione Serverless, fai clic su Cloud Run e vedrai il tuo servizio helloworld in elenco:
Attività 5: esegui la pulizia
Sebbene non siano previsti addebiti per Cloud Run quando il servizio non è in uso, ti potrebbero comunque essere addebitati i costi di archiviazione dell'immagine container creata.
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 la tua immagine helloworld utilizzando questo comando:
Quando ti viene chiesto di continuare, digita Y e premi Invio.
Per eliminare il servizio Cloud Run, utilizza questo comando:
gcloud run services delete helloworld --region={{{ project_0.default_region| "Region" }}}
Quando ti viene chiesto di continuare, digita Y e premi Invio.
Complimenti!
Hai completato il lab.
Google Cloud Run e AWS Fargate sono entrambi servizi di serverless computing che consentono agli sviluppatori di eseguire applicazioni containerizzate in modo scalabile e conveniente. Tuttavia, esistono alcune differenze tra questi due servizi.
Ecco alcune delle principali analogie e differenze:
Analogie:
Sia Google Cloud Run che AWS Fargate sono servizi di serverless computing, il che significa che gli sviluppatori possono concentrarsi sulla scrittura del codice senza preoccuparsi dell'infrastruttura sottostante.
Entrambi i servizi utilizzano la containerizzazione per pacchettizzare le applicazioni ed eseguirne il deployment.
Entrambi i servizi supportano i container Docker come formato di deployment.
Per tutti e due i servizi è possibile fare lo scale up e lo scale down automatico in base alla domanda.
Differenze:
Con AWS Fargate, gli utenti devono configurare e gestire l'orchestrazione dei container, come Kubernetes, mentre con Google Cloud Run, l'orchestrazione dei container è gestita dalla piattaforma.
Google Cloud Run è un servizio autonomo, mentre AWS Fargate è il servizio di provisioning per i servizi di container Amazon ECS o Amazon EKS.
In AWS, per eseguire il deployment dell'ambiente containerizzato serverless è necessaria un'integrazione combinata di AWS Fargate e del servizio di orchestrazione, come Amazon ECS o Amazon EKS. In Google Cloud puoi utilizzare solo Cloud Run.
Termina il lab
Una volta completato il lab, fai clic su Termina lab. Google Cloud Skills Boost rimuove le risorse che hai utilizzato ed esegue la pulizia dell'account.
Avrai la possibilità di inserire una valutazione in merito alla tua esperienza. Seleziona il numero di stelle applicabile, inserisci un commento, quindi fai clic su Invia.
Il numero di stelle corrisponde alle seguenti valutazioni:
1 stella = molto insoddisfatto
2 stelle = insoddisfatto
3 stelle = esperienza neutra
4 stelle = soddisfatto
5 stelle = molto soddisfatto
Se non vuoi lasciare un feedback, chiudi la finestra di dialogo.
Per feedback, suggerimenti o correzioni, utilizza la scheda Assistenza.
Copyright 2020 Google LLC Tutti i diritti riservati. Google e il logo Google sono marchi di Google LLC. Tutti gli altri nomi di società e prodotti sono marchi delle rispettive società a cui sono associati.
I lab creano un progetto e risorse Google Cloud per un periodo di tempo prestabilito
I lab hanno un limite di tempo e non possono essere messi in pausa. Se termini il lab, dovrai ricominciare dall'inizio.
In alto a sinistra dello schermo, fai clic su Inizia il lab per iniziare
Utilizza la navigazione privata
Copia il nome utente e la password forniti per il lab
Fai clic su Apri console in modalità privata
Accedi alla console
Accedi utilizzando le tue credenziali del lab. L'utilizzo di altre credenziali potrebbe causare errori oppure l'addebito di costi.
Accetta i termini e salta la pagina di ripristino delle risorse
Non fare clic su Termina lab a meno che tu non abbia terminato il lab o non voglia riavviarlo, perché il tuo lavoro verrà eliminato e il progetto verrà rimosso
Questi contenuti non sono al momento disponibili
Ti invieremo una notifica via email quando sarà disponibile
Bene.
Ti contatteremo via email non appena sarà disponibile
Un lab alla volta
Conferma per terminare tutti i lab esistenti e iniziare questo
Utilizza la navigazione privata per eseguire il lab
Utilizza una finestra del browser in incognito o privata per eseguire questo lab. In questo modo eviterai eventuali conflitti tra il tuo account personale e l'account Studente, che potrebbero causare addebiti aggiuntivi sul tuo account personale.
In questo lab scoprirai come iniziare a utilizzare Cloud Run attraverso il deployment di un container stateless e la sua esecuzione in modalità serverless (astraendo l'infrastruttura).
Durata:
Configurazione in 0 m
·
Accesso da 60 m
·
Completamento in 60 m