Crea un cluster GKE ed esegui il deployment di un carico di lavoro utilizzando Terraform
In questa guida rapida imparerai come creare un ambiente Google Kubernetes Engine (GKE) Autopilot ed eseguire il deployment di un carico di lavoro utilizzando Terraform.
Infrastructure as Code (IaC) è una pratica per la gestione e il provisioning delle risorse dell'infrastruttura software utilizzando il codice. Terraform è un noto strumento IaC open source che supporta un'ampia gamma di servizi cloud, incluso GKE. Come Amministratore della piattaforma GKE, puoi utilizzare Terraform per standardizzare la configurazione dei cluster Kubernetes e semplificare i flussi di lavoro DevOps. Per saperne di più, vedi Supporto Terraform per GKE.
Obiettivi
- Crea una rete Virtual Private Cloud (VPC) IPv6
- Crea un cluster GKE Autopilot
- Esegui il deployment di un carico di lavoro sul tuo cluster
- Esposizione del carico di lavoro utilizzando un servizio
Prima di iniziare
Per abilitare l'API Kubernetes Engine, segui questi passaggi:
- Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
-
Attiva l'API GKE.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
-
Attiva l'API GKE.
-
Make sure that you have the following role or roles on the project: roles/container.admin, roles/compute.networkAdmin, roles/iam.serviceAccountUser
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role colunn to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
Vai a IAM - Seleziona il progetto.
- Fai clic su Concedi l'accesso.
-
Nel campo Nuove entità, inserisci l'identificatore utente. In genere si tratta dell'indirizzo email di un Account Google.
- Nell'elenco Seleziona un ruolo, seleziona un ruolo.
- Per concedere altri ruoli, fai clic su Aggiungi un altro ruolo e aggiungi ogni altro ruolo.
- Fai clic su Salva.
Avere familiarità con le nozioni di base di Terraform. Puoi utilizzare le seguenti opzioni di risorse:
-
prepara l'ambiente
In questo tutorial utilizzerai Cloud Shell per gestire le risorse ospitate
in Google Cloud. Cloud Shell è preinstallato
il software necessario per questo tutorial, tra cui Terraform,
kubectl
e
con Google Cloud CLI.
Avvia una sessione di Cloud Shell dalla console Google Cloud facendo clic su L'icona di attivazione di Cloud Shell Attiva Cloud Shell . Questo avvia una sessione nel riquadro inferiore della console Google Cloud.
Le credenziali di servizio associate a questa macchina virtuale sono automatiche in modo da non dover configurare o scaricare una chiave dell'account di servizio.
Prima di eseguire i comandi, imposta il progetto predefinito nel gcloud CLI utilizzando il seguente comando:
gcloud config set project PROJECT_ID
Sostituisci
PROJECT_ID
con ID progetto.Clona il repository GitHub:
git clone https://github.com/terraform-google-modules/terraform-docs-samples.git --single-branch
Passa alla directory di lavoro:
cd terraform-docs-samples/gke/quickstart/autopilot
Esamina i file Terraform
La Provider Google Cloud è un plug-in che consente di gestire ed eseguire il provisioning delle risorse Google Cloud usando Terraform, lo strumento Infrastructure as Code (IaC) di HashiCorp. Serve da è un bridge tra le configurazioni Terraform e le API Google Cloud. permettendoti di definire risorse dell'infrastruttura come macchine virtuali in modo dichiarativo.
Esamina il file
cluster.tf
:cat cluster.tf
L'output è simile al seguente
In questo file vengono descritte le seguenti risorse:
- Una rete VPC con IPv6 interno abilitato. Per esporre
l'applicazione a internet, cambia
ipv6_access_type
inEXTERNAL
. Se di apportare questa modifica, è necessario rimuovere anche Annotazionenetworking.gke.io/load-balancer-type
nel fileapp.tf
nel passaggio successivo. - Una subnet a doppio stack.
- R
Cluster Autopilot a doppio stack
si trova in
us-central1
.
- Una rete VPC con IPv6 interno abilitato. Per esporre
l'applicazione a internet, cambia
Esamina il file
app.tf
:cat app.tf
L'output è simile al seguente:
In questo file vengono descritte le seguenti risorse:
- R Implementazione con un'immagine container di esempio.
- R
Servizio di tipo LoadBalancer. Il servizio espone
Deployment sulla porta 80. Per esporre la tua applicazione a internet,
e configurare un bilanciatore del carico esterno
Annotazione
networking.gke.io/load-balancer-type
.
Crea un cluster ed esegui il deployment di un'applicazione
In Cloud Shell, esegui questo comando per verificare che Terraform sia disponibile:
terraform
L'output dovrebbe essere simile al seguente:
Usage: terraform [global options] <subcommand> [args] The available commands for execution are listed below. The primary workflow commands are given first, followed by less common or more advanced commands. Main commands: init Prepare your working directory for other commands validate Check whether the configuration is valid plan Show changes required by the current configuration apply Create or update infrastructure destroy Destroy previously-created infrastructure
Inizializza Terraform:
terraform init
Pianifica la configurazione di Terraform:
terraform plan
Applica la configurazione Terraform
terraform apply
Quando richiesto, inserisci
yes
per confermare le azioni. Questo comando potrebbe richiedere diversi minuti. L'output è simile al seguente:Apply complete! Resources: 6 added, 0 changed, 0 destroyed.
Verifica che il cluster funzioni
Segui questi passaggi per confermare che il cluster sia in esecuzione correttamente:
Vai alla pagina Carichi di lavoro nella console Google Cloud:
Fai clic sul carico di lavoro
example-hello-app-deployment
. Pagina dei dettagli del pod vengono visualizzati i video. Questa pagina mostra informazioni sul pod, come annotazioni, container in esecuzione sul pod, servizi che espongono il pod e metriche tra cui utilizzo di CPU, memoria e disco.Vai alla scheda Servizi e Pagina in entrata nella console Google Cloud:
Fai clic sul servizio LoadBalancer
example-hello-app-loadbalancer
. Il Servizio viene visualizzata la pagina dei dettagli. In questa pagina vengono visualizzate informazioni sul Servizio, come come i pod associati al servizio e le porte utilizzate dal servizio.Nella sezione Endpoint esterni, fai clic sul link IPv4 o sul Link IPv6 per visualizzare il Servizio nel browser. L'output è simile a le seguenti:
Hello, world! Version: 2.0.0 Hostname: example-hello-app-deployment-5df979c4fb-kdwgr
Esegui la pulizia
Per evitare che al tuo account Google Cloud vengano addebitati costi per le risorse utilizzate in questa pagina, segui questi passaggi.
Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzati in questa pagina, procedi nel seguente modo.
In Cloud Shell, esegui questo comando per eliminare le risorse Terraform:
terraform destroy --auto-approve
Se visualizzi un messaggio di errore simile a The network resource 'projects/PROJECT_ID/global/networks/example-network' is already being used by 'projects/PROJECT_ID/global/firewalls/example-network-yqjlfql57iydmsuzd4ot6n5v'
,
segui questi passaggi:
Elimina le regole firewall:
gcloud compute firewall-rules list --filter="NETWORK:example-network" --format="table[no-heading](name)" | xargs gcloud --quiet compute firewall-rules delete
Esegui di nuovo il comando Terraform:
terraform destroy --auto-approve
Passaggi successivi
- Esplora il
google_container_cluster
egoogle_container_node_pool
di Google Cloud nella documentazione del provider Google Cloud. Queste pagine documentare argomenti e attributi per il cluster e il nodo GKE che Google supporta su Terraform. - Visualizza gli esempi di configurazione guidati nel Modulo GKE Terraform GitHub di ASL.