arrow_back

Esegui il deployment del servizio di bilanciamento del carico di Kubernetes con Terraform

Partecipa Accedi
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Esegui il deployment del servizio di bilanciamento del carico di Kubernetes con Terraform

Lab 35 minuti universal_currency_alt 5 crediti show_chart Intermedio
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP233

Laboratori autogestiti Google Cloud

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).
Nota: utilizza una finestra del browser in incognito o privata per eseguire questo lab. Ciò evita eventuali 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: se hai già un account o un progetto Google Cloud personale, non utilizzarlo per questo lab per evitare addebiti aggiuntivi al tuo account.

Come avviare il lab e accedere alla console Google Cloud

  1. 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
  2. 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.
  3. Se necessario, copia il Nome utente dal riquadro Dettagli lab e incollalo nella finestra di dialogo di accesso. Fai clic su Avanti.

  4. 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.
  5. 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: puoi visualizzare il menu con un elenco di prodotti e servizi Google Cloud facendo clic sul menu di navigazione in alto a sinistra. Icona menu di navigazione

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.

  1. Fai clic su Attiva Cloud Shell Icona 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:

Your Cloud Platform project in this session is set to YOUR_PROJECT_ID

gcloud è lo strumento a riga di comando di Google Cloud. È preinstallato su Cloud Shell e supporta il completamento tramite tasto Tab.

  1. (Facoltativo) Puoi visualizzare il nome dell'account attivo con questo comando:
gcloud auth list
  1. Fai clic su Autorizza.

  2. L'output dovrebbe avere ora il seguente aspetto:

Output:

ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (Facoltativo) Puoi elencare l'ID progetto con questo comando:
gcloud config list project

Output:

[core] project = <project_ID>

Output di esempio:

[core] project = qwiklabs-gcp-44776a13dea667a6 Nota: per la documentazione completa di 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

  1. In Cloud Shell, inizia clonando il codice campione:
gsutil -m cp -r gs://spls/gsp233/* .
  1. Vai alla directory tf-gke-k8s-service-lb:
cd tf-gke-k8s-service-lb

Attività 2: comprendi il codice

  1. Esamina i contenuti del file main.tf:
cat main.tf

Output di esempio:

... variable "region" { type = string description = "Region for the resource." } variable "location" { type = string description = "Location represents region/zone for the resource." } variable "network_name" { default = "tf-gke-k8s" } provider "google" { region = var.region } resource "google_compute_network" "default" { name = var.network_name auto_create_subnetworks = false } resource "google_compute_subnetwork" "default" { name = var.network_name ip_cidr_range = "10.127.0.0/20" network = google_compute_network.default.self_link region = var.region private_ip_google_access = true } ...
  • Le variabili sono definite per region, zone e network_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.
  1. Esamina i contenuti del file k8s.tf:
cat k8s.tf

Output di esempio:

provider "kubernetes" { version = "~> 1.10.0" host = google_container_cluster.default.endpoint token = data.google_client_config.current.access_token client_certificate = base64decode( google_container_cluster.default.master_auth[0].client_certificate, ) client_key = base64decode(google_container_cluster.default.master_auth[0].client_key) cluster_ca_certificate = base64decode( google_container_cluster.default.master_auth[0].cluster_ca_certificate, ) } resource "kubernetes_namespace" "staging" { metadata { name = "staging" } } resource "google_compute_address" "default" { name = var.network_name region = var.region } resource "kubernetes_service" "nginx" { metadata { namespace = kubernetes_namespace.staging.metadata[0].name name = "nginx" } spec { selector = { run = "nginx" } session_affinity = "ClientIP" port { protocol = "TCP" port = 80 target_port = 80 } type = "LoadBalancer" load_balancer_ip = google_compute_address.default.address } } resource "kubernetes_replication_controller" "nginx" { metadata { name = "nginx" namespace = kubernetes_namespace.staging.metadata[0].name labels = { run = "nginx" } } spec { selector = { run = "nginx" } template { container { image = "nginx:latest" name = "nginx" resources { limits { cpu = "0.5" memory = "512Mi" } requests { cpu = "250m" memory = "50Mi" } } } } } } output "load-balancer-ip" { value = google_compute_address.default.address }
  • 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:

  1. Esegui terraform init:
terraform init

Output di esempio:

... * provider.google: version = "~> 3.8.0" * provider.kubernetes: version = "~> 1.10.0" Terraform has been successfully initialized! You may now begin working with Terraform. Try running `terraform plan` to see any changes that are required for your infrastructure. All Terraform commands should now work. If you ever set or change modules or backend configuration for Terraform, rerun this command to reinitialize your working directory. If you forget, other commands will detect it and remind you to do so if necessary.
  1. Esegui il comando terraform apply per applicare le modifiche necessarie al fine di ottenere lo stato desiderato della configurazione:
terraform apply -var="region={{{ project_0.default_region | "Region to be allocated" }}}" -var="location={{{ project_0.default_zone | "Zone to be allocated" }}}"
  1. Rivedi le azioni di Terraform ed esamina le risorse che verranno create.

  2. Quando è tutto pronto, digita yes per avviare le azioni di Terraform.

Una volta completato, dovresti vedere un output simile:

Output di esempio:

Apply complete! Resources: 7 added, 0 changed, 0 destroyed. Outputs: cluster_name = tf-gke-k8s cluster_region = "{{{project_0.default_region|REGION}}}" cluster_zone = "{{{project_0.default_region|ZONE}}}" load-balancer-ip = 35.233.177.223 network = https://www.googleapis.com/compute/beta/projects/qwiklabs-gcp-5438ad3a5e852e4a/global/networks/tf-gke-k8s subnetwork_name = tf-gke-k8s

Verifica le risorse create da Terraform

  1. Nella console, vai a Menu di navigazione > Kubernetes Engine.
  2. Fai clic sul cluster tf-gke-k8s e verifica la sua configurazione.
  3. Nel riquadro sinistro, fai clic su Servizi e ingress e verifica lo stato del servizio nginx.
  4. Fai clic sugli indirizzi IP degli Endpoint per aprire la pagina Ti diamo il benvenuto in nginx! in una nuova scheda del browser.

Pagina Ti diamo il benvenuto in nginx!

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.

Distribuisci l'infrastruttura con Terraform

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.