GSP663
Panoramica
Gestire siti web e applicazioni è tutt'altro che semplice: si verificano
errori inaspettati, i server subiscono arresti anomali, l'aumento delle
richieste provoca un aumento delle risorse necessarie e apportare modifiche
senza tempo di inattività è complicato e stressante. Con Kubernetes, puoi fare
tutto questo e persino automatizzarlo.
In questo lab assumerai il ruolo di uno sviluppatore in un'azienda fittizia,
Fancy Store, che gestisce un sito web di ecommerce. A causa di problemi di
scalabilità e interruzioni del servizio, ti è stato affidato il compito di
eseguire il deployment dell'applicazione su Google Kubernetes Engine (GKE).
L'ordine degli esercizi di questo lab rispecchia l'esperienza comune di un
cloud developer:
- Creazione di un cluster GKE
- Creazione di un container Docker
- Deployment del container su GKE
- Esposizione del container attraverso un servizio
- Configurazione della scalabilità del container su più repliche
- Modifica del sito web
- Implementazione di una nuova versione senza tempi di inattività
Diagramma dell'architettura
Prerequisiti
-
Si consiglia una conoscenza di base di
Docker e
Kubernetes per una massima
comprensione.
Configurazione e requisiti
Prima di fare clic sul pulsante Avvia lab
Leggi le seguenti istruzioni. I lab sono a tempo e non possono essere messi in pausa. Il timer si avvia quando fai clic su Inizia il lab e ti mostra per quanto tempo avrai a disposizione le risorse Google Cloud.
Con questo lab pratico avrai la possibilità di completare le attività in un ambiente cloud reale e non di simulazione o demo. Riceverai delle nuove credenziali temporanee che potrai utilizzare per accedere a Google Cloud per la durata del lab.
Per completare il lab, avrai bisogno di:
- Accesso a un browser internet standard (Chrome è il browser consigliato).
Nota: per eseguire questo lab, utilizza una finestra del browser in modalità di navigazione in incognito (consigliata) o privata. Ciò evita conflitti tra il tuo account personale e l'account studente, che potrebbero causare addebiti aggiuntivi sul tuo account personale.
- È ora di completare il lab: ricorda che, una volta iniziato, non puoi metterlo in pausa.
Nota: utilizza solo l'account studente per questo lab. Se utilizzi un altro account Google Cloud, potrebbero essere addebitati costi su quell'account.
Come iniziare il lab e accedere alla console Google Cloud
-
Fai clic sul pulsante Inizia il lab. Se devi effettuare il pagamento per il lab, si aprirà una finestra di dialogo per permetterti di selezionare il metodo di pagamento.
A destra, trovi il riquadro Configurazione e accesso al lab con le seguenti informazioni:
- Il pulsante Apri console Google Cloud
- Le credenziali temporanee (nome utente e password) da utilizzare per il lab
- Altre informazioni per seguire questo lab, se necessario
Tieni presente che il timer del lab si trova nella parte superiore della pagina e mostra il tempo rimanente.
-
Fai clic su Apri console Google Cloud (o fai clic con il tasto destro del mouse e seleziona Apri link in finestra Incognito se utilizzi il browser Chrome).
Il lab avvia le risorse e apre un'altra scheda con la pagina di accesso.
Suggerimento: disponi le schede in finestre separate posizionate fianco a fianco.
Nota: se visualizzi la finestra di dialogo Scegli un account, fai clic su Usa un altro account.
-
Se necessario, copia il Nome utente di seguito e incollalo nella finestra di dialogo Accedi.
{{{user_0.username | "Username"}}}
Puoi trovare il Nome utente anche nel riquadro Configurazione e accesso al lab.
-
Fai clic su Avanti.
-
Copia la Password di seguito e incollala nella finestra di dialogo Ti diamo il benvenuto.
{{{user_0.password | "Password"}}}
Puoi trovare la Password anche nel riquadro Configurazione e accesso al lab.
-
Fai clic su Avanti.
Importante: devi utilizzare le credenziali fornite dal lab. Non utilizzare le credenziali del tuo account Google Cloud.
Nota: utilizzare il tuo account Google Cloud per questo lab potrebbe comportare addebiti aggiuntivi.
-
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 senza costi.
Dopo qualche istante, la console Google Cloud si apre in questa scheda.
Nota: per accedere ai prodotti e ai servizi Google Cloud, fai clic sul menu di navigazione o digita il nome del servizio o del prodotto nel campo Cerca.
Attiva Cloud Shell
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. Cloud Shell fornisce l'accesso da riga di comando alle risorse Google Cloud.
-
Fai clic su Attiva Cloud Shell
nella parte superiore della console Google Cloud.
-
Fai clic nelle seguenti finestre:
- Continua nella finestra delle informazioni di Cloud Shell.
- Autorizza Cloud Shell a utilizzare le tue credenziali per effettuare chiamate API Google Cloud.
Quando la connessione è attiva, l'autenticazione è già avvenuta e il progetto è impostato sul tuo Project_ID, . L'output contiene una riga che dichiara il Project_ID per questa sessione:
Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}
gcloud è lo strumento a riga di comando di Google Cloud. È preinstallato su Cloud Shell e supporta il completamento tramite tasto Tab.
- (Facoltativo) Puoi visualizzare il nome dell'account attivo con questo comando:
gcloud auth list
- Fai clic su Autorizza.
Output:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- (Facoltativo) Puoi elencare l'ID progetto con questo comando:
gcloud config list project
Output:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
Nota: per la documentazione completa di gcloud, in Google Cloud, fai riferimento alla guida Panoramica dell'interfaccia a riga di comando gcloud.
Imposta la zona
- Imposta la zona e la configurazione del progetto predefinite:
gcloud config set compute/zone {{{project_0.default_zone|lab zone}}}
Puoi trovare ulteriori informazioni nella
documentazione relativa alle regioni e alle zone.
Attività 1: crea un cluster GKE
Per eseguire il deployment del sito web è necessario un cluster Kubernetes.
Innanzitutto, accertati che siano abilitate le API appropriate.
-
Esegui il comando seguente per creare un cluster GKE denominato
fancy-cluster con 3 nodi:
gcloud container clusters create fancy-cluster --num-nodes 3
Nota: se viene visualizzato un errore che segnala che non è specificata la regione o la zona, consulta la sezione sulla configurazione dell'ambiente per accertarti di aver impostato la zona di computing predefinita.
La creazione del cluster richiede alcuni minuti.
-
Ora esegui il comando seguente e osserva le tre istanze VM worker del
cluster:
gcloud compute instances list
Output:
NAME: gke-fancy-cluster-default-pool-fb932da6-4sk6
ZONE: us-central1-f
MACHINE_TYPE: e2-medium
PREEMPTIBLE:
INTERNAL_IP: 10.128.0.3
EXTERNAL_IP: 34.172.106.173
STATUS: RUNNING
NAME: gke-fancy-cluster-default-pool-fb932da6-d6qc
ZONE: us-central1-f
MACHINE_TYPE: e2-medium
PREEMPTIBLE:
INTERNAL_IP: 10.128.0.4
EXTERNAL_IP: 34.133.99.176
STATUS: RUNNING
NAME: gke-fancy-cluster-default-pool-fb932da6-ztnh
ZONE: us-central1-f
MACHINE_TYPE: e2-medium
PREEMPTIBLE:
INTERNAL_IP: 10.128.0.5
EXTERNAL_IP: 34.136.180.45
STATUS: RUNNING
-
Nella console, individua il cluster Kubernetes e le informazioni
correlate.
-
Fai clic su
menu di navigazione (
) > Kubernetes Engine > Cluster.
Dovresti vedere il cluster denominato fancy-cluster.
Fai clic su Controlla i miei progressi per verificare
l'obiettivo.
Crea un cluster GKE
Attività 2: clona il repository di codice sorgente
Dal momento che si tratta di un sito web esistente, puoi semplicemente
clonarne il codice sorgente per poi concentrarti sulla creazione delle
immagini Docker e sul deployment su GKE.
-
Esegui i comandi seguenti per clonare il repository git nell'istanza di
Cloud Shell:
cd ~
git clone https://github.com/googlecodelabs/monolith-to-microservices.git
-
Passa alla directory appropriata.
-
Installerai anche le dipendenze NodeJS in modo da poter testare
l'applicazione prima del deployment:
cd ~/monolith-to-microservices
./setup.sh
Aspetta qualche minuto per consentire il completamento dell'esecuzione dello
script.
-
Assicurati di eseguire Cloud Shell con l'ultima versione di
npm:
nvm install --lts
-
Passa alla directory appropriata ed esegui un test dell'applicazione
avviando il server web con il comando seguente:
cd ~/monolith-to-microservices/monolith
npm start
Output:
Monolith listening on port 8080!
-
Puoi visualizzare l'anteprima dell'applicazione facendo clic sull'icona
dell'anteprima web e selezionando
Anteprima sulla porta 8080.
Si apre una nuova finestra in cui puoi vedere il nostro Fancy Store in azione.
Lascia aperta questa scheda. Ci tornerai in una fase successiva del
lab.
-
Per arrestare il processo del server web, premi Ctrl+C in Cloud Shell.
Attività 3: crea il container in Docker con Cloud Build
Ora che i file sorgente sono pronti per l'uso, puoi "dockerizzare"
l'applicazione.
Normalmente useresti un approccio in due fasi che comprende la creazione di un
container Docker e il relativo push a un registry per archiviare l'immagine da
cui GKE esegue il pull. Cloud Build ti consente di creare il container Docker
e inserire l'immagine in Artifact Registry con un unico comando.
Google Cloud Build comprime i file della directory e li sposta in un bucket di
Google Cloud Storage. Il processo di compilazione preleva quindi tutti i file
dal bucket e utilizza il Dockerfile per eseguire il processo di compilazione
Docker. Dato che hai specificato il flag --tag con l'host gcr.io
per l'immagine Docker, verrà eseguito il push dell'immagine Docker risultante
in Artifact Registry.
-
Innanzitutto, per accertarti che l'API Cloud Build sia abilitata, esegui il
comando seguente:
gcloud services enable cloudbuild.googleapis.com
- Per avviare il processo di compilazione, esegui il comando seguente:
cd ~/monolith-to-microservices/monolith
gcloud builds submit --tag gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:1.0.0 .
- Il processo richiede alcuni minuti.
L'output visualizzato nel terminale avrà il seguente aspetto:
ID CREATE_TIME DURATION SOURCE IMAGES STATUS
1ae295d9-63cb-482c-959b-bc52e9644d53 2019-08-29T01:56:35+00:00 33S gs://_cloudbuild/source/1567043793.94-abfd382011724422bf49af1558b894aa.tgz gcr.io//monolith:1.0.0 SUCCESS
-
Per visualizzare la cronologia delle build o per osservare lo svolgimento
del processo in tempo reale, fai clic sul
menu di navigazione, scorri fino alla sezione Strumenti e
fai clic su Cloud Build > Cronologia.
Nella pagina visualizzata sono elencate tutte le build che hai eseguito in
precedenza.
-
Fai clic sul nome della build per visualizzarne i dettagli, incluso
l'output del log.
(Facoltativo) Nella pagina Dettagli build, nella sezione
delle informazioni sulla build, fai clic su
Riepilogo build > Dettagli esecuzione > Nome immagine per
visualizzare l'immagine container:
Fai clic su Controlla i miei progressi per verificare
l'obiettivo.
Crea il container in Docker con Cloud Build
Attività 4: esegui il deployment del container in GKE
Ora che hai containerizzato il sito web ed eseguito il push del container su
Artifact Registry, è il momento di eseguire il deployment su Kubernetes.
Per eseguire il deployment e gestire applicazioni su un cluster GKE, devi
comunicare con il sistema di gestione dei cluster di Kubernetes. Generalmente,
puoi eseguire questa operazione utilizzando lo strumento a riga di comando
kubectl.
Kubernetes rappresenta le applicazioni come
Pod, che
corrispondono a unità che rappresentano un container (o gruppo di container ad
alto accoppiamento). Il Pod è l'unità più piccola di cui è possibile eseguire
il deployment in Kubernetes. In questo lab, ogni Pod contiene solo il
container del tuo monolite.
Per eseguire il deployment dell'applicazione, crea una risorsa di tipo
Deployment. Il Deployment gestisce più copie della tua applicazione, dette repliche, e
ne pianifica l'esecuzione sui singoli nodi del tuo cluster. In questo lab, il
Deployment eseguirà soltanto un pod della tua applicazione. I Deployment
assicurano questa funzionalità creando un
ReplicaSet. Il ReplicaSet assicura che sia sempre in esecuzione il numero di repliche
specificato.
Il comando kubectl create deployment che stai per utilizzare fa
sì che Kubernetes crei sul tuo cluster un Deployment denominato
monolith con 1 replica.
-
Esegui questo comando per eseguire il deployment della tua applicazione:
kubectl create deployment monolith --image=gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:1.0.0
Nota: come best practice, è consigliabile utilizzare un file YAML e un sistema di controllo dei file sorgente come GitHub per archiviare le modifiche. Scopri di più su queste risorse dalla documentazione sui deployment.
Fai clic su Controlla i miei progressi per verificare
l'obiettivo.
Esegui il deployment del container in GKE
Verifica il deployment
- Verifica se la creazione del Deployment è andata a buon fine:
kubectl get all
Esegui il comando nuovamente fino a quando lo stato del pod è Running (In
esecuzione).
Output:
NAME READY STATUS RESTARTS AGE
pod/monolith-7d8bc7bf68-htm7z 1/1 Running 0 6m21s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.27.240.1 443/TCP 24h
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
deployment.apps/monolith 1 1 1 1 20m
NAME DESIRED CURRENT READY AGE
replicaset.apps/monolith-7d8bc7bf68 1 1 1 20m
L'output mostra quanto segue:
- Il Deployment, che è corrente
- Il set di repliche con il numero di pod desiderato, che è pari a 1
- Il pod, che è in esecuzione
Tutti gli elementi sono stati creati correttamente.
Nota: puoi anche visualizzare le tue distribuzioni Kubernetes tramite la console aprendo il menu di navigazione > Kubernetes Engine > Workload.
Nota: se noti degli errori o degli stati imprevisti, puoi eseguire il debug delle risorse utilizzando i comandi seguenti per visualizzare informazioni correlate:
kubectl describe pod monolith
kubectl describe pod/monolith-7d8bc7bf68-2bxts
kubectl describe deployment monolith
kubectl describe deployment.apps/monolith
Alla fine dell'output, vedrai un elenco degli eventi che restituiscono errori e informazioni dettagliate sulle risorse.
(Facoltativo) Puoi anche eseguire i comandi sui deployment
separatamente:
# Show pods
kubectl get pods
# Show deployments
kubectl get deployments
# Show replica sets
kubectl get rs
#You can also combine them
kubectl get pods,deployments
Per sperimentare appieno i vantaggi offerti da Kubernetes, simula un arresto
anomalo del server eliminando un pod e osserva i risultati.
-
Copia il nome di un pod dal comando precedente e utilizzalo nel comando
seguente per eliminarlo:
kubectl delete pod/<POD_NAME>
Puoi osservare il processo di eliminazione nella pagina
Workload.
-
Fai clic sul nome del workload (avviene rapidamente).
-
Se sei abbastanza veloce, puoi eseguire nuovamente il comando
get all, che dovrebbe visualizzare due pod: uno in fase di
arresto e l'altro in fase di creazione o in esecuzione:
kubectl get all
Output:
NAME READY STATUS RESTARTS AGE
pod/monolith-7d8bc7bf68-2bxts 1/1 Running 0 4s
pod/monolith-7d8bc7bf68-htm7z 1/1 Terminating 0 9m35s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.27.240.1 443/TCP 24h
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
deployment.apps/monolith 1 1 1 1 24m
NAME DESIRED CURRENT READY AGE
replicaset.apps/monolith-7d8bc7bf68 1 1 1 24m
A cosa è dovuta questa situazione? Il set di repliche ha rilevato che il pod
era in fase di arresto e ha attivato un nuovo pod per fare in modo che il
numero di repliche continui a essere quello desiderato. Più avanti vedremo
come fare lo scale out per assicurare che ci siano diverse istanze in
esecuzione, in modo tale che, se una di queste ultime diventa non disponibile,
gli utenti non noteranno tempi di inattività.
Attività 5: esponi il deployment GKE
Hai eseguito il deployment dell'applicazione su GKE, ma non è possibile
accedervi al di fuori del cluster. Per impostazione predefinita, i container
che esegui su GKE non sono accessibili su internet perché non hanno un
indirizzo IP esterno. Devi esporre esplicitamente l'applicazione al traffico
internet tramite una risorsa di tipo
Servizio. Un Servizio fornisce il supporto IP e di networking ai pod
dell'applicazione. GKE crea un indirizzo IP esterno e un bilanciatore del
carico per l'applicazione.
- Per esporre il sito web su internet, esegui questo comando:
kubectl expose deployment monolith --type=LoadBalancer --port 80 --target-port 8080
Accedi al servizio
GKE assegna l'indirizzo IP esterno alla risorsa Servizio, non a quella
Deployment.
-
Se vuoi conoscere l'indirizzo IP esterno di cui GKE ha eseguito il
provisioning per la tua applicazione, puoi utilizzare il comando
kubectl get service per esaminare il servizio:
kubectl get service
Output:
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
monolith 10.3.251.122 203.0.113.0 80:30877/TCP 3d
Esegui nuovamente il comando fino a quando al servizio non è stato assegnato
un indirizzo IP esterno.
-
Dopo aver determinato l'indirizzo IP esterno dell'applicazione, copialo e
utilizza il browser per accedere all'URL (ad esempio: "http://203.0.113.0")
e verificare se l'applicazione è accessibile.
Dovresti vedere lo stesso sito web di cui hai eseguito il test in precedenza.
Il sito web ora è eseguito interamente su Kubernetes.
Fai clic su Controlla i miei progressi per verificare
l'obiettivo.
Esponi il deployment GKE
Attività 6: configura la scalabilità del deployment GKE
Ora che l'applicazione viene eseguita su GKE ed è esposta su internet,
supponiamo che il tuo sito web sia diventato estremamente popolare. Devi
quindi assicurare che l'applicazione sia scalabile su più istanze, in modo che
possa gestire tutto il traffico. Ora imparerai a configurare la scalabilità
dell'applicazione in modo che ne vengano aggiunte fino a tre repliche.
-
Per assicurare la scalabilità del deployment per un massimo di 3 repliche,
esegui questo comando in Cloud Shell:
kubectl scale deployment monolith --replicas=3
- Verifica che l'operazione sia stata completata:
kubectl get all
Output:
NAME READY STATUS RESTARTS AGE
pod/monolith-7d8bc7bf68-2bxts 1/1 Running 0 36m
pod/monolith-7d8bc7bf68-7ds7q 1/1 Running 0 45s
pod/monolith-7d8bc7bf68-c5kxk 1/1 Running 0 45s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.27.240.1 443/TCP 25h
service/monolith LoadBalancer 10.27.253.64 XX.XX.XX.XX 80:32050/TCP 6m7s
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
deployment.apps/monolith 3 3 3 3 61m
NAME DESIRED CURRENT READY AGE
replicaset.apps/monolith-7d8bc7bf68 3 3 3 61m
Ora dovresti vedere tre istanze del pod in esecuzione. Osserva che il numero
desiderato di deployment e set di repliche è ora pari a 3.
Fai clic su Controlla i miei progressi per verificare
l'obiettivo.
Configura la scalabilità del deployment GKE
Attività 7: apporta modifiche al sito web
Scenario: il team di marketing ti ha chiesto di modificare la
home page del sito. Secondo il team, dovrebbe essere più ricca di informazioni
relative all'azienda e a ciò che commercializza.
Attività: aggiungerai del testo alla home page per soddisfare
la richiesta del team di marketing. Uno degli sviluppatori ha già creato le
modifiche in un file denominato index.js.new. Puoi semplicemente
copiare questo file come index.js per implementare le modifiche.
Segui le istruzioni riportate di seguito per applicare le modifiche
appropriate.
-
Esegui questi comandi per copiare il file aggiornato con il nome corretto:
cd ~/monolith-to-microservices/react-app/src/pages/Home
mv index.js.new index.js
- Visualizza i contenuti del file per verificare le modifiche:
cat ~/monolith-to-microservices/react-app/src/pages/Home/index.js
Il codice risultante dovrebbe avere l'aspetto seguente:
/*
Copyright 2019 Google LLC
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
\*/
import React from "react";
import { makeStyles } from "@material-ui/core/styles";
import Paper from "@material-ui/core/Paper";
import Typography from "@material-ui/core/Typography";
const useStyles = makeStyles(theme => ({
root: {
flexGrow: 1
},
paper: {
width: "800px",
margin: "0 auto",
padding: theme.spacing(3, 2)
}
}));
export default function Home() {
const classes = useStyles();
return (
Fancy Fashion & Style Online
Tired of mainstream fashion ideas, popular trends and societal norms?
This line of lifestyle products will help you catch up with the Fancy trend and express your personal style.
Start shopping Fancy items now!
);
}
I componenti di React sono stati aggiornati, ma devi creare la build dell'app
per generare i file statici.
-
Esegui questo comando per creare la build dell'app React e copiarla nella
directory pubblica del monolite:
cd ~/monolith-to-microservices/react-app
npm run build:monolith
Ora che il codice è stato aggiornato, devi ricreare il container Docker e
pubblicarlo in Artifact Registry. Utilizza lo stesso comando di prima,
aggiornando però l'etichetta della versione.
-
Esegui questo comando per attivare un nuovo processo Cloud Build con una
versione aggiornata 2.0.0 dell'immagine:
cd ~/monolith-to-microservices/monolith
gcloud builds submit --tag gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:2.0.0 .
Nella sezione successiva userai questa immagine per aggiornare l'applicazione
senza tempi di inattività.
Fai clic su Controlla i miei progressi per verificare
l'obiettivo.
Apporta modifiche al sito web
Attività 8: aggiorna il sito web senza tempi di inattività
Le modifiche sono state completate e il team di marketing è molto soddisfatto
dei tuoi aggiornamenti. Ora è il momento di aggiornare il sito web senza
interruzioni per gli utenti.
Il meccanismo di aggiornamento in sequenza messo a disposizione da GKE
assicura che l'applicazione resti disponibile anche mentre il sistema
sostituisce le istanze dell'immagine container precedente con quelle nuove in
tutte le repliche che sono in esecuzione.
-
Utilizza il comando seguente per inviare a Kubernetes istruzioni per
l'aggiornamento dell'immagine del deployment a una nuova versione:
kubectl set image deployment/monolith monolith=gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:2.0.0
Verifica il deployment
-
Puoi convalidare la corretta esecuzione dell'aggiornamento del deployment
utilizzando il comando seguente:
kubectl get pods
Output:
NAME READY STATUS RESTARTS AGE
monolith-584fbc994b-4hj68 1/1 Terminating 0 60m
monolith-584fbc994b-fpwdw 1/1 Running 0 60m
monolith-584fbc994b-xsk8s 1/1 Terminating 0 60m
monolith-75f4cf58d5-24cq8 1/1 Running 0 3s
monolith-75f4cf58d5-rfj8r 1/1 Running 0 5s
monolith-75f4cf58d5-xm44v 0/1 ContainerCreating 0 1s
L'output mostra che 3 nuovi pod sono in fase di creazione mentre i pod
precedenti vengono arrestati. Puoi distinguere i nuovi pod da quelli
precedenti guardando il valore della colonna AGE (Durata). Al termine del
processo, vedrai nuovamente solo 3 pod, ossia quelli che hai aggiornato.
-
Testa l'applicazione eseguendo questo comando per avviare il server web:
npm start
-
Per verificare le modifiche torna alla scheda della pagina web dell'app e
aggiorna la pagina. Come puoi osservare, la tua applicazione è stata
aggiornata.
Nel sito web dovrebbe essere presente il testo che hai appena aggiunto al
componente della home page.

-
Per arrestare il processo del server web, premi
Ctrl+C in Cloud
Shell.
Fai clic su Controlla i miei progressi per verificare
l'obiettivo.
Aggiorna il sito web senza tempi di inattività
Attività 9: esegui la pulizia
Anche se, al completamento di questo lab, tutte le risorse verranno eliminate,
è bene rimuovere dal tuo ambiente le risorse di cui non hai più bisogno.
- Elimina il repository git:
cd ~
rm -rf monolith-to-microservices
- Elimina le immagini di Artifact Registry:
# Delete the container image for version 1.0.0 of the monolith
gcloud container images delete gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:1.0.0 --quiet
# Delete the container image for version 2.0.0 of the monolith
gcloud container images delete gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:2.0.0 --quiet
- Elimina gli artefatti di Google Cloud Build da Google Cloud Storage:
# The following command will take all source archives from all builds and delete them from cloud storage
# Run this command to print all sources:
# gcloud builds list | awk 'NR > 1 {print $4}'
gcloud builds list | grep 'SOURCE' | cut -d ' ' -f2 | while read line; do gcloud storage rm $line; done
- Elimina il servizio GKE:
kubectl delete service monolith
kubectl delete deployment monolith
- Elimina il cluster GKE:
gcloud container clusters delete fancy-cluster {{{project_0.default_region | lab region}}}
-
Digita
Y per confermare l'operazione. L'esecuzione del comando
potrebbe richiedere alcuni minuti.
Complimenti!
Hai eseguito il deployment del sito web, lo hai reso scalabile e lo hai
aggiornato su GKE. Hai ora acquisito esperienza con Docker e Kubernetes.
Prossimi passi/Scopri di più
Ultimo aggiornamento del manuale: 20 maggio 2026
Ultimo test del lab: 21 febbraio 2024
Copyright 2026 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.