GSP053

Panoramica
Le best practice DevOps utilizzeranno regolarmente più deployment per gestire gli scenari di deployment delle applicazioni quali "Deployment continuo", "Deployment blu/verde", "Deployment canary" e altri. Questo lab ti insegnerà come scalare e gestire i container in modo da poter realizzare questi scenari comuni in cui vengono utilizzati più deployment eterogenei.
Obiettivi
In questo lab imparerai a:
- Utilizzare lo strumento
kubectl
- Creare file
yaml
per i deployment
- Avviare, aggiornare e scalare i deployment
- Aggiornare i deployment e scoprire gli stili di deployment
Prerequisiti
Per massimizzare il tuo apprendimento, per questo lab si consiglia quanto segue.
- Hai seguito questi lab di Google Cloud Skills Boost:
- Hai competenze di amministrazione del sistema Linux.
- Comprendi la teoria DevOps: concetti di deployment continuo.
Introduzione ai deployment
I deployment eterogenei in genere implicano il collegamento di due o più ambienti infrastrutturali o regioni differenti per soddisfare una specifica esigenza tecnica o operativa. I deployment eterogenei vengono chiamati "ibridi", "multi-cloud" o "pubblici-privati", a seconda delle specifiche dei deployment.
Per questo lab, i deployment eterogenei includono quelli che interessano più regioni all'interno di un singolo ambiente cloud, più ambienti cloud pubblici (multi-cloud) o una combinazione di ambienti on-premise e cloud pubblici (ibridi o pubblici-privati).
Nei deployment limitati a un solo ambiente o una sola regione, possono sorgere diverse sfide aziendali e tecniche:
-
Risorse esaurite: in ogni singolo ambiente, in particolare negli ambienti on-premise, potresti non disporre delle risorse di computing, networking e archiviazione necessarie per soddisfare le tue esigenze di produzione.
-
Copertura geografica limitata: i deployment in un unico ambiente richiedono che le persone geograficamente distanti l'una dall'altra accedano a un deployment. Il loro traffico potrebbe viaggiare in tutto il mondo verso una posizione centrale.
-
Disponibilità limitata: i pattern di traffico su scala web sfidano le applicazioni a mantenersi resilienti e a tolleranza di errore.
-
Vincoli al fornitore: la piattaforma e le astrazioni dell'infrastruttura a livello di fornitore possono impedirti la portabilità delle applicazioni.
-
Risorse non flessibili: le tue risorse potrebbero essere limitate a un particolare set di offerte di computing, archiviazione o networking.
I deployment eterogenei possono aiutare ad affrontare queste sfide, ma devono essere progettati utilizzando processi e procedure programmatici e deterministici. Le procedure di deployment una tantum o ad hoc possono rendere i deployment o i processi precari e intolleranti agli errori. I processi ad hoc possono provocare la perdita di dati o un calo del traffico. I processi di deployment efficaci devono essere ripetibili e utilizzare approcci comprovati per la gestione del provisioning, della configurazione e della manutenzione.
Tre scenari comuni per il deployment eterogeneo sono:
- deployment multi-cloud
- infrastruttura di dati on-premise
- integrazione continua/distribuzione continua (CI/CD).
Gli esercizi seguenti consentono di fare pratica con alcuni casi d'uso comuni relativi ai deployment eterogenei e con approcci ben strutturati che utilizzano Kubernetes e altre risorse dell'infrastruttura per realizzarli.
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 avviare il lab e accedere alla console Google Cloud
-
Fai clic sul pulsante Avvia lab. Se devi effettuare il pagamento per il lab, si aprirà una finestra di dialogo per permetterti di selezionare il metodo di pagamento.
A sinistra, trovi il riquadro Dettagli lab con le seguenti informazioni:
- Il pulsante Apri la console Google Cloud
- Tempo rimanente
- Credenziali temporanee da utilizzare per il lab
- Altre informazioni per seguire questo lab, se necessario
-
Fai clic su Apri console Google Cloud (o fai clic con il tasto destro del mouse e seleziona Apri link in finestra di navigazione in 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 di accesso.
{{{user_0.username | "Username"}}}
Puoi trovare il Nome utente anche nel riquadro Dettagli lab.
-
Fai clic su Avanti.
-
Copia la Password di seguito e incollala nella finestra di dialogo di benvenuto.
{{{user_0.password | "Password"}}}
Puoi trovare la Password anche nel riquadro Dettagli 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 gratuite.
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 tua zona Google Cloud di lavoro eseguendo questo comando, sostituendo la zona locale con :
gcloud config set compute/zone {{{ project_0.default_zone | ZONE }}}
Recupera il codice campione per questo lab
- Recupera il codice campione per la creazione e l'esecuzione di container e deployment dal bucket del lab:
gcloud storage cp -r gs://spls/gsp053/kubernetes .
cd kubernetes
- Crea un cluster con 3 nodi (il completamento dell'operazione richiederà alcuni minuti):
gcloud container clusters create bootcamp \
--machine-type e2-small \
--num-nodes 3 \
--scopes "https://www.googleapis.com/auth/projecthosting,storage-rw"
Attività 1: scopri di più sull'oggetto deployment
Per iniziare, dai un'occhiata all'oggetto deployment.
- Il comando
explain
in kubectl
può fornire informazioni sull'oggetto deployment:
kubectl explain deployment
- Possiamo anche visualizzare tutti i campi utilizzando l'opzione
--recursive
:
kubectl explain deployment --recursive
- Puoi utilizzare il comando explain durante il lab per comprendere la struttura di un oggetto deployment e capire a cosa servono i singoli campi:
kubectl explain deployment.metadata.name
Attività 2: crea un deployment
- Crea il deployment
fortune-app
. Esamina il file di configurazione del deployment:
cat deployments/fortune-app-blue.yaml
Output:
# orchestrate-with-kubernetes/kubernetes/deployments/fortune-app-blue.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: fortune-app-blue
spec:
replicas: 3
selector:
matchLabels:
app: fortune-app
template:
metadata:
labels:
app: fortune-app
track: stable
version: "1.0.0"
spec:
containers:
- name: fortune-app
# The new, centralized image path
image: "us-central1-docker.pkg.dev/qwiklabs-resources/spl-lab-apps/fortune-service:1.0.0"
ports:
- name: http
containerPort: 8080
...
Nota che il deployment sta creando tre repliche e sta utilizzando la versione 1.0.0 del container fortune-service.
- Crea il tuo oggetto deployment utilizzando
kubectl create
:
kubectl create -f deployments/fortune-app-blue.yaml
- Una volta creato il deployment, puoi verificare che sia stato creato correttamente.
kubectl get deployments
- Una volta creato il deployment, Kubernetes creerà un
ReplicaSet
per il deployment. È possibile verificare che sia stato creato un ReplicaSet
per il deployment:
kubectl get replicasets
Dovresti vedere un ReplicaSet
con un nome simile a fortune-app-blue-xxxxxxx
- Visualizza i pod che sono stati creati come parte del deployment.
kubectl get pods
- Ora crea un servizio per esporre il deployment
fortune-app
esternamente.
kubectl create -f services/fortune-app.yaml
- Interagisci con
fortune-app
recuperando il suo IP esterno e quindi eseguendo il comando curl sull'endpoint /version
:
kubectl get services frontend
Nota: potrebbero volerci alcuni secondi prima che il campo IP esterno venga compilato per il tuo servizio. È normale. Esegui il comando riportato sopra a intervalli regolari di alcuni secondi fino a quando il campo non viene compilato.
curl http://<EXTERNAL-IP>/version
Dovresti ricevere una risposta JSON che indica {"version":"1.0.0"}
.
- Puoi anche utilizzare la funzionalità per la creazione di modelli di output
kubectl
per usare curl come one-liner:
curl http://`kubectl get svc fortune-app -o=jsonpath="{.status.loadBalancer.ingress[0].ip}"`/version
Verifica l'attività completata
Fai clic su Controlla i miei progressi qui sotto per verificare lo stato di avanzamento del lab. Se hai creato correttamente un cluster Kubernetes e il deployment e il servizio fortune-app, visualizzerai un punteggio di valutazione.
Crea un cluster Kubernetes e i deployment (fortune-app)
Scala un deployment
Ora che hai creato un deployment, puoi scalarlo. Per farlo, aggiorna il campo spec.replicas
.
- Il campo replicas può essere aggiornato più facilmente utilizzando il comando
kubectl scale
:
kubectl scale deployment fortune-app-blue --replicas=5
Nota: l'avvio di tutti i nuovi pod può richiedere circa un minuto.
- Verifica che siano presenti 5 pod
fortune-app-blue
in esecuzione:
kubectl get pods | grep fortune-app-blue | wc -l
- Ora ridimensiona l'applicazione:
kubectl scale deployment fortune-app-blue --replicas=3
- Verifica nuovamente di avere il numero corretto di pod:
kubectl get pods | grep fortune-app-blue | wc -l
Ora sai cosa sono i deployment Kubernetes e come gestire e scalare un gruppo di pod.
Attività 3: aggiornamento in sequenza
I deployment supportano l'aggiornamento delle immagini a una nuova versione tramite un meccanismo di aggiornamento in sequenza.
Attiva un aggiornamento in sequenza
- Per attivare un aggiornamento in sequenza, puoi semplicemente applicare la configurazione del deployment "verde". Kubernetes è abbastanza intelligente da vedere il deployment esistente (
fortune-app-blue
) e "applicherà" le modifiche dal nuovo file.
kubectl edit deployment fortune-app-blue
- Nell'editor, trova la riga
image
e cambia il tag della versione da 1.0.0
a 2.0.0
. Puoi modificare il file premendo i
sulla tastiera per accedere alla "modalità di inserimento".
-
Salva e chiudi l'editor. Puoi farlo premendo Esc
, quindi digitando :wq
e premendo Invio
. In questo modo, l'aggiornamento in sequenza verrà attivato sul deployment corretto e la relativa cronologia verrà registrata in modo appropriato. In questo modo, l'aggiornamento in sequenza verrà attivato sul deployment corretto e la relativa cronologia verrà registrata in modo appropriato.
-
Guarda il nuovo ReplicaSet
creato da Kubernetes:
kubectl get replicaset
- Puoi anche vedere una nuova voce nella cronologia di implementazione:
kubectl rollout history deployment/fortune-app-blue
Metti in pausa l'aggiornamento in sequenza
- Esegui questo comando per mettere in pausa l'implementazione:
kubectl rollout pause deployment/fortune-app-blue
- Verifica lo stato attuale dell'implementazione:
kubectl rollout status deployment/fortune-app-blue
Nota: il comando di stato potrebbe segnalare immediatamente "deployment "fortune-app-blue" successfully rolled out". Questo è previsto e indica che il comando di pausa è andato a buon fine. Non significa che l'aggiornamento della versione sia completo.
- Controlla la versione di ciascun pod. Vedrai un mix di pod 1.0.0 e 2.0.0, a conferma che l'implementazione è stata messa in pausa a metà del processo.
for p in $(kubectl get pods -l app=fortune-app -o=jsonpath='{.items[*].metadata.name}'); do echo $p && curl -s http://$(kubectl get pod $p -o=jsonpath='{.status.podIP}')/version; echo; done
- Premi
Ctrl+C
per uscire dal ciclo.
Riprendi l'aggiornamento in sequenza
- Continua l'implementazione utilizzando il comando
resume
:
kubectl rollout resume deployment/fortune-app-blue
- Al termine dell'implementazione, dovresti vedere quanto segue durante l'esecuzione del comando
status
:
kubectl rollout status deployment/fortune-app-blue
Esegui il rollback di un aggiornamento
Supponiamo che sia stato rilevato un bug nella tua nuova versione.
- Utilizza il comando
rollout
per eseguire il rollback alla versione precedente:
kubectl rollout undo deployment/fortune-app-blue
Nota: il rollback potrebbe richiedere alcuni istanti per essere completato.
- Verifica che per tutti i pod sia stato eseguito il rollback alla versione 1.0.0:
curl http://`kubectl get svc fortune-app -o=jsonpath="{.status.loadBalancer.ingress[0].ip}"`/version
Bene. Hai imparato come eseguire un aggiornamento in sequenza per i deployment Kubernetes.
Attività 4: deployment canary
Quando vuoi testare un nuovo deployment in produzione con un sottoinsieme di utenti, usa un deployment canary.
Crea un deployment canary
- Innanzitutto, crea un nuovo deployment canary per la nuova versione utilizzando il file
fortune-app-canary.yaml
:
cat deployments/fortune-app-canary.yaml
- Ora crea il deployment canary:
kubectl create -f deployments/fortune-app-canary.yaml
- Una volta creato il deployment canary, dovresti avere due deployment. Verifica con questo comando:
kubectl get deployments
Il servizio fortune-app
ha un selettore per app: fortune-app
, che corrisponderà ai pod sia nei deployment fortune-app-blue
(prod) che fortune-app-canary
.
Verifica il deployment canary
- Puoi verificare la versione fornita effettuando richieste al servizio.
for i in {1..10}; do curl -s http://`kubectl get svc fortune-app -o=jsonpath="{.status.loadBalancer.ingress[0].ip}"`/version; echo;
done
- Esegui questo comando più volte. La maggior parte delle richieste viene gestita dalla versione 1.0.0 e un piccolo sottoinsieme viene gestito dalla versione 2.0.0.
Verifica l'attività completata
Fai clic su Controlla i miei progressi qui sotto per verificare lo stato di avanzamento del lab. Se hai creato correttamente il deployment canary, visualizzerai un punteggio di valutazione.
Deployment canary
Attività 5: deployment blu/verde
Per i deployment blu/verde, creerai due deployment separati e cambierai il traffico tra di loro aggiornando il selettore del servizio.
Il servizio
- Innanzitutto, aggiorna il servizio in modo che punti solo alla versione "blu" (1.0.0).
kubectl apply -f services/fortune-app-blue-service.yaml
Aggiornamento mediante deployment blu/verde
- Ora crea il nuovo deployment "verde" per la versione 2.0.0.
kubectl create -f deployments/fortune-app-green.yaml
- Una volta avviato il deployment verde, verifica che la versione corrente servita sia ancora 1.0.0.
curl http://`kubectl get svc fortune-app -o=jsonpath="{.status.loadBalancer.ingress[0].ip}"`/version
- Ora aggiorna il servizio in modo che punti alla nuova versione "verde":
kubectl apply -f services/fortune-app-green-service.yaml
- Una volta aggiornato il servizio, il deployment "verde" verrà utilizzato immediatamente. Ora puoi verificare che venga sempre fornita la versione 2.0.0:
curl http://`kubectl get svc fortune-app -o=jsonpath="{.status.loadBalancer.ingress[0].ip}"`/version
Rollback blu/verde
- Per eseguire il rollback, riapplica semplicemente il manifest del servizio per il deployment "blu":
kubectl apply -f services/fortune-app-blue-service.yaml
- Una volta aggiornato il servizio, il rollback sarà stato eseguito correttamente. Verifica che ora sia in uso la versione 1.0.0:
curl http://`kubectl get svc fortune-app -o=jsonpath="{.status.loadBalancer.ingress[0].ip}"`/version
Obiettivo raggiunto. Hai imparato cos'è un deployment blu/verde e come eseguire il deployment degli aggiornamenti delle applicazioni che devono cambiare versione contemporaneamente.
Deployment blu/verde
Complimenti!
Hai avuto l'opportunità di utilizzare di più lo strumento a riga di comando kubectl
e molti stili di configurazione di deployment nei file YAML per avviare, aggiornare e scalare i tuoi deployment.
Formazione e certificazione Google Cloud
… per utilizzare al meglio le tecnologie Google Cloud. I nostri corsi ti consentono di sviluppare competenze tecniche e best practice per aiutarti a metterti subito al passo e avanzare nel tuo percorso di apprendimento. Offriamo vari livelli di formazione, dal livello base a quello avanzato, con opzioni di corsi on demand, dal vivo e virtuali, in modo da poter scegliere il più adatto in base ai tuoi impegni. Le certificazioni ti permettono di confermare e dimostrare le tue abilità e competenze relative alle tecnologie Google Cloud.
Ultimo aggiornamento del manuale: 18 agosto 2025
Ultimo test del lab: 18 agosto 2025
Copyright 2025 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.