Checkpoint
Create a GKE cluster
/ 20
Create Docker container with Cloud Build
/ 20
Deploy container to GKE
/ 10
Expose GKE Deployment
/ 20
Scale GKE deployment
/ 10
Make changes to the website
/ 10
Update website with zero downtime
/ 10
Eseguire il deployment, scalare e aggiornare il tuo sito web su Google Kubernetes Engine
- GSP663
- Panoramica
- Configurazione e requisiti
- Attività 1: crea un cluster GKE
- Attività 2: clona il repository di codice sorgente
- Attività 3: crea il container in Docker con Cloud Build
- Attività 4: esegui il deployment del container in GKE
- Attività 5: esponi il deployment GKE
- Attività 6: configura la scalabilità del deployment GKE
- Attività 7: apporta modifiche al sito web
- Attività 8: aggiorna il sito web senza tempi di inattività
- Attività 9: esegui la pulizia
- Complimenti!
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. Sarebbe bello se esistesse uno strumento che consente di fare tutto questo addirittura in modo automatico. Con Kubernetes, non solo è possibile: è facile!
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 un'esperienza di sviluppo cloud comune:
- 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 Avvia 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 prima persona, 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).
- È ora di completare il lab: ricorda che, una volta iniziato, non puoi metterlo in pausa.
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 apre una finestra popup per permetterti di selezionare il metodo di pagamento. A sinistra, trovi il riquadro Dettagli lab con le seguenti informazioni:
- Il pulsante Apri 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.
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.
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:
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:
-
Fai clic su Autorizza.
-
L'output dovrebbe avere ora il seguente aspetto:
Output:
- (Facoltativo) Puoi elencare l'ID progetto con questo comando:
Output:
Output di esempio:
gcloud
, in Google Cloud, fai riferimento alla Panoramica dell'interfaccia a riga di comando gcloud.
Imposta la zona
- Imposta la zona e la configurazione del progetto predefinite:
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.
- Per abilitare l'API Container Registry, esegui il comando seguente:
Ora tutto è pronto per la creazione di un cluster.
- Esegui il comando seguente per creare un cluster GKE denominato
fancy-cluster
con 3 nodi:
La creazione del cluster richiede alcuni minuti.
- Ora esegui il comando seguente e osserva le tre istanze VM worker del cluster:
Output:
-
Nella console di Google Cloud, individua il cluster Kubernetes e le informazioni correlate.
-
Fai clic su menu di navigazione () > Kubernetes Engine > Cluster.
Dovresti vedere il cluster denominato fancy-cluster.
Complimenti! Hai appena creato il tuo primo cluster Kubernetes.
Fai clic su Controlla i miei progressi per verificare l'obiettivo.
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:
-
Passa alla directory appropriata.
-
Installerai anche le dipendenze NodeJS in modo da poter testare l'applicazione prima del deployment:
Aspetta qualche minuto per consentire il completamento dell'esecuzione dello script.
- Assicurati di eseguire Cloud Shell con la versione più recente di
npm
:
- Passa alla directory appropriata ed esegui un test dell'applicazione avviando il server web con il comando seguente:
Output:
- 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. Per maggiore semplicità, puoi usare Cloud Build per creare il container Docker e inserire l'immagine nel Container Registry con un unico comando. Puoi utilizzare un singolo comando per creare l'immagine e spostarla nel Container Registry. Scopri di più sul processo manuale di creazione di un file docker e di push nella Guida rapida per Container Registry.
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. Dal momento che abbiamo specificato il flag --tag
indicando gcr.io come host per l'immagine Docker, verrà eseguito il push dell'immagine Docker risultante nel Container Registry di Google Cloud.
- Innanzitutto, per accertarti che l'API Cloud Build sia abilitata, esegui il comando seguente:
- Per avviare il processo di compilazione, esegui il comando seguente:
- Il processo richiede alcuni minuti.
L'output visualizzato nel terminale avrà il seguente aspetto:
-
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 del container:
Fai clic su Controlla i miei progressi per verificare l'obiettivo.
Attività 4: esegui il deployment del container in GKE
Ora che hai containerizzato il sito web ed eseguito il push del container sul Container Registry Google, è 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:
Fai clic su Controlla i miei progressi per verificare l'obiettivo.
Verifica il deployment
- Verifica se la creazione del Deployment è andata a buon fine:
Esegui il comando nuovamente fino a quando lo stato del pod è Running (In esecuzione).
Output:
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.
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:
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:
Puoi osservare il processo di eliminazione nella pagina Carichi di lavoro.
-
Fai clic sul nome del carico di lavoro (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:
Output:
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:
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:
Output:
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.
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:
- Verifica che l'operazione sia stata completata:
Output:
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.
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:
- Visualizza i contenuti del file per verificare le modifiche:
Il codice risultante dovrebbe avere l'aspetto seguente:
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:
Ora che il codice è stato aggiornato, devi ricreare il container Docker e pubblicarlo nel Container Registry di Google Cloud. 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:
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.
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 precedente del container 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:
Verifica il deployment
- Puoi convalidare la corretta esecuzione dell'aggiornamento del deployment utilizzando il comando seguente:
Output:
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:
- 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.
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:
- Elimina le immagini del Container Registry di Google:
- Elimina gli artefatti di Google Cloud Build da Google Cloud Storage:
- Elimina il servizio GKE:
- Elimina il cluster GKE:
- 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.
Completa la Quest
Questo self-paced lab fa parte della Quest Website on Google Cloud. Una Quest è una serie di lab collegati tra loro che formano un percorso di apprendimento. Iscriviti a questa Quest e ottieni subito un riconoscimento per aver completato questo lab. Scopri le altre Quest disponibili.
Stai cercando un Challenge Lab pratico per dimostrare le tue abilità e convalidare le tue conoscenze? Dopo aver completato questa Quest, termina il Challenge Lab aggiuntivo per ricevere un esclusivo badge digitale Google Cloud.
Segui il prossimo lab
Continua il percorso di apprendimento con Migrazione di un sito web monolitico ai microservizi su Google Kubernetes Engine oppure dai un'occhiata a questi suggerimenti:
- Guarda il video del case study Hosting Scalable Web Applications on Google Cloud
- Esegui il deployment del tuo sito web in Cloud Run
Prossimi passi/Scopri di più
Ultimo aggiornamento del manuale: 13 settembre 2023
Ultimo test del lab: 13 settembre 2023
Copyright 2024 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.