Checkpoint
Deploy infrastructure with Terraform
/ 100
Esegui il deployment del servizio di bilanciamento del carico di Kubernetes con Terraform
GSP233
Panoramica
In Terraform, un provider è l'astrazione logica di un'API upstream. Questo lab mostra come configurare un cluster Kubernetes ed eseguire al suo interno il deployment del servizio NGINX come bilanciamento del carico.
Obiettivi
In questo lab, imparerai a:
- Eseguire il deployment di un cluster Kubernetes e di un servizio tramite Terraform
Prerequisiti
Per questo lab, devi possedere i seguenti requisiti:
- Dimestichezza con i servizi Kubernetes
- Dimestichezza con l'interfaccia a riga di comando
kubectl
.
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:
- Pulsante Apri console Google
- Tempo rimanente
- Credenziali temporanee da utilizzare per il lab
- Altre informazioni per seguire questo lab, se necessario
-
Fai clic su Apri console Google. 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.
Note: se visualizzi la finestra di dialogo Scegli un account, fai clic su Utilizza un altro account. -
Se necessario, copia il Nome utente dal riquadro Dettagli lab e incollalo nella finestra di dialogo di accesso. Fai clic su Avanti.
-
Copia la Password dal riquadro Dettagli lab e incollala nella finestra di dialogo di benvenuto. Fai clic su Avanti.
Importante: devi utilizzare le credenziali presenti nel riquadro di sinistra. Non utilizzare le tue credenziali Google Cloud Skills Boost. 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.
Servizi Kubernetes
Un servizio è un gruppo di pod in esecuzione sul cluster. I servizi sono "economici" e puoi averne molti nello stesso cluster. I servizi Kubernetes sono in grado di alimentare in maniera efficiente un'architettura di microservizi.
I servizi forniscono importanti funzionalità standardizzate in tutto il cluster: bilanciamento del carico, Service Discovery tra applicazioni e funzionalità che supportano i deployment delle applicazioni senza tempi di inattività.
Ogni servizio ha una query sulle etichette dei pod che indica quali pod elaboreranno i dati per il servizio. Questa si associa spesso a pod creati da uno o più controller di replicazione. Per avere scenari di routing ottimali, devi aggiornare la query sulle etichette del servizio tramite API Kubernetes con il software di deployment.
Perché Terraform?
Anche se puoi usare kubectl
o strumenti simili basati su interfaccia a riga di comando mappati alle chiamate API per gestire tutte le risorse di Kubernetes descritte nei file YAML, l'orchestrazione con Terraform presenta alcuni vantaggi:
- Un solo linguaggio: puoi usare lo stesso linguaggio di configurazione per eseguire il provisioning dell'infrastruttura Kubernetes e il deployment delle applicazioni al suo interno.
-
Rilevamento delle deviazioni:
terraform plan
mostrerà sempre la differenza tra la realtà in un dato momento e la configurazione che intendi applicare. - Gestione dell'intero ciclo di vita: Terraform non crea solo le risorse all'inizio, ma offre anche un solo comando per creare, aggiornare ed eliminare le risorse tracciate senza dover ispezionare l'API per identificarle.
- Feedback sincrono: anche se il comportamento asincrono è spesso utile, a volte può essere controproducente perché il compito di identificare i risultati delle operazioni (errori o dettagli della risorsa creata) viene lasciato all'utente. Ad esempio, non puoi conoscere il nome host o l'indirizzo IP del bilanciatore del carico finché questo non avrà terminato il provisioning, quindi non potrai creare alcun record DNS che vi faccia riferimento.
- Grafico delle relazioni: Terraform comprende le relazioni tra le risorse, il che può essere utile nella pianificazione. Ad esempio, Terraform non cercherà di creare un servizio in un cluster Kubernetes finché il cluster esiste.
Attività 1: clona il codice campione
- In Cloud Shell, inizia clonando il codice campione:
- Vai alla directory
tf-gke-k8s-service-lb
:
Attività 2: comprendi il codice
- Esamina i contenuti del file
main.tf
:
Output di esempio:
- Le variabili sono definite per
region
,zone
enetwork_name
. Verranno usate per creare il cluster Kubernetes. - II provider Google Cloud ci permetterà di creare le risorse per questo progetto.
- Sono state definite diverse risorse per creare la rete e il cluster appropriati.
- Al termine, potrai vedere alcuni output dopo aver eseguito
terraform apply
.
- Esamina i contenuti del file
k8s.tf
:
Output di esempio:
- Lo script configura un provider Kubernetes con Terraform e crea il servizio, lo spazio dei nomi e una risorsa replication_controller.
- Lo script restituisce un IP del servizio
nginx
come output.
Attività 3: inizializza e installa le dipendenze
Il comando terraform init
viene utilizzato per inizializzare una directory di lavoro contenente i file di configurazione di Terraform.
Questo comando esegue diversi step di inizializzazione per preparare una directory di lavoro all'uso ed è sempre meglio eseguirlo più volte per aggiornare la directory di lavoro in base alle modifiche nella configurazione:
- Esegui
terraform init
:
Output di esempio:
- Esegui il comando
terraform apply
per applicare le modifiche necessarie al fine di ottenere lo stato desiderato della configurazione:
-
Rivedi le azioni di Terraform ed esamina le risorse che verranno create.
-
Quando è tutto pronto, digita yes per avviare le azioni di Terraform.
Una volta completato, dovresti vedere un output simile:
Output di esempio:
Verifica le risorse create da Terraform
- Nella console, vai a Menu di navigazione > Kubernetes Engine.
- Fai clic sul cluster
tf-gke-k8s
e verifica la sua configurazione. - Nel riquadro sinistro, fai clic su Servizi e ingress e verifica lo stato del servizio
nginx
. - Fai clic sugli indirizzi IP degli Endpoint per aprire la pagina
Ti diamo il benvenuto in nginx!
in una nuova scheda del browser.
Fai clic su Controlla i miei progressi per verificare l'attività eseguita. Se il deployment dell'infrastruttura è stato eseguito correttamente con Terraform, potrai visualizzare il punteggio del test.
Complimenti!
In questo lab, hai utilizzato Terraform per inizializzare, pianificare ed eseguire il deployment di un cluster Kubernetes con un servizio.
Completa la Quest
Questo self-paced lab fa parte delle Quest Managing Cloud Infrastructure with Terraform e DevOps Essentials. Una Quest è una serie di lab correlati che formano un percorso di apprendimento. Il completamento di una Quest ti permette di ottenere un badge come riconoscimento dell'obiettivo raggiunto. Puoi rendere pubblici i tuoi badge inserendone i link nel tuo CV online o sui social media. Iscriviti a una delle Quest contenenti il lab e ricevi un riconoscimento subito dopo averlo completato. Per vedere tutte le Quest disponibili, consulta il catalogo di Google Cloud Skills Boost.
Segui il prossimo lab
Continua la tua Quest con Bilanciatore del carico basato sui contenuti HTTPS con Terraform oppure dai un'occhiata a questi suggerimenti:
Prossimi passi/Scopri di più
Scopri come gli altri usano Terraform nella Community.
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: 28 settembre 2023
Ultimo test del lab: 28 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.