Membuat cluster dan men-deploy workload menggunakan Terraform
Cluster Kubernetes menyediakan komputasi, penyimpanan, jaringan, dan layanan lainnya untuk aplikasi, mirip dengan pusat data virtual. Aplikasi dan layanan terkait yang berjalan di Kubernetes disebut workload.
Tutorial ini memungkinkan Anda melihat dengan cepat cluster Google Kubernetes Engine dan contoh beban kerja yang sedang berjalan, yang semuanya disiapkan menggunakan Terraform. Kemudian, Anda dapat menjelajahi beban kerja di Cloud de Confiance konsol sebelum melanjutkan ke jalur pembelajaran yang lebih mendalam, atau mulai merencanakan dan membuat cluster siap produksi Anda sendiri. Tutorial ini mengasumsikan bahwa Anda sudah memahami Terraform.
Jika Anda lebih suka menyiapkan cluster dan workload contoh di konsol Cloud de Confiance , lihat Membuat cluster di konsol Cloud de Confiance .
Sebelum memulai
Lakukan langkah-langkah berikut untuk mengaktifkan Kubernetes Engine API:
-
Install the Google Cloud CLI.
-
Konfigurasi gcloud CLI untuk menggunakan identitas gabungan Anda.
Untuk mengetahui informasi selengkapnya, lihat Login ke gcloud CLI dengan identitas gabungan Anda.
-
Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:
gcloud init -
Create or select a Cloud de Confiance project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Create a Cloud de Confiance project:
gcloud projects create PROJECT_ID
Replace
PROJECT_IDwith a name for the Cloud de Confiance project you are creating. -
Select the Cloud de Confiance project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_IDwith your Cloud de Confiance project name.
-
Verify that billing is enabled for your Cloud de Confiance project.
-
Enable the GKE API:
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.gcloud services enable container.googleapis.com
-
Grant roles to your user account. Run the following command once for each of the following IAM roles:
roles/container.admin, roles/compute.networkAdmin, roles/iam.serviceAccountUsergcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
Replace the following:
PROJECT_ID: Your project ID.USER_IDENTIFIER: The identifier for your user account. For examples, see Represent workforce pool users in IAM policies.ROLE: The IAM role that you grant to your user account.
Luncurkan sesi Cloud Shell dari konsol Cloud de Confiance , dengan mengklik ikon aktivasi Cloud Shell Activate Cloud Shell
. Tindakan ini akan meluncurkan sesi di panel bawah konsol Cloud de Confiance .Kredensial layanan yang terkait dengan virtual machine ini bersifat otomatis, sehingga Anda tidak perlu menyiapkan atau mendownload kunci akun layanan.
Sebelum menjalankan perintah, tetapkan project default Anda di gcloud CLI menggunakan perintah berikut:
gcloud config set project PROJECT_IDGanti
PROJECT_IDdengan project ID Anda.Buat clone repositori GitHub:
git clone https://github.com/terraform-google-modules/terraform-docs-samples.git --single-branchUbah ke direktori kerja:
cd terraform-docs-samples/gke/quickstart/autopilotTinjau file
cluster.tf:cat cluster.tfOutputnya mirip dengan yang berikut ini
File ini menjelaskan resource berikut:
google_compute_network: jaringan VPC dengan IPv6 internal diaktifkan.google_compute_subnetwork: subnetwork dual-stack.google_container_cluster: cluster mode Autopilot dual-stack yang berada dius-central1. Setelandeletion_protectionmengontrol apakah Anda dapat menggunakan Terraform untuk menghapus cluster ini. Jika Anda menetapkan nilai di kolomdeletion_protectionkefalse, Terraform dapat menghapus cluster. Untuk mengetahui detailnya, lihat referensigoogle_container_cluster.
Tinjau file
app.tf:cat app.tfOutputnya mirip dengan hal berikut ini:
File ini menjelaskan resource berikut:
- Deployment dengan image container contoh.
- Service jenis LoadBalancer. Service mengekspos Deployment di port 80.
Di
cluster.tf, ubahipv6_access_typedariINTERNALmenjadiEXTERNAL.ipv6_access_type = "EXTERNAL"Di
app.tf, konfigurasi load balancer eksternal dengan menghapus anotasinetworking.gke.io/load-balancer-type.annotations = { "networking.gke.io/load-balancer-type" = "Internal" # Remove this line }Di Cloud Shell, jalankan perintah ini untuk memverifikasi bahwa Terraform sudah tersedia:
terraformOutputnya akan mirip dengan berikut ini:
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 infrastructureLakukan inisialisasi Terraform:
terraform initRencanakan konfigurasi Terraform:
terraform planMenerapkan konfigurasi Terraform
terraform applySaat diminta, masukkan
yesuntuk mengonfirmasi tindakan. Pemrosesan perintah ini mungkin memerlukan waktu beberapa menit. Outputnya mirip dengan hal berikut ini:Apply complete! Resources: 6 added, 0 changed, 0 destroyed.Buka halaman Workloads di konsol Cloud de Confiance :
Klik workload
example-hello-app-deployment. Halaman Detail pod akan ditampilkan. Halaman ini menampilkan informasi tentang Pod, seperti anotasi, container yang berjalan di Pod, Layanan yang mengekspos Pod, dan metrik termasuk penggunaan CPU, Memori, dan Disk.Buka halaman Services & Ingress di konsol Cloud de Confiance :
Klik Layanan LoadBalancer
example-hello-app-loadbalancer. Halaman detail layanan akan ditampilkan. Halaman ini menampilkan informasi tentang Service, seperti Pod yang terkait dengan Service, dan Port yang digunakan Service.Di bagian Endpoint eksternal, klik link IPv4 atau link IPv6 untuk melihat Layanan Anda di browser. Outputnya mirip dengan hal berikut ini:
Hello, world! Version: 2.0.0 Hostname: example-hello-app-deployment-5df979c4fb-kdwgrDi Cloud Shell, jalankan perintah berikut untuk menghapus resource Terraform:
terraform destroy --auto-approveHapus aturan Firewall:
gcloud compute firewall-rules list --filter="NETWORK:example-network" --format="table[no-heading](name)" | xargs gcloud --quiet compute firewall-rules deleteJalankan kembali perintah Terraform:
terraform destroy --auto-approveJelajahi cluster dan workload Anda di konsol Cloud de Confiance untuk mempelajari beberapa setelan dan resource workload utama yang Anda deploy.
Pelajari lebih lanjut cara menyiapkan dan menggunakan Terraform dengan GKE di Dukungan Terraform untuk GKE.
Coba Jalur pembelajaran: Aplikasi yang skalabel kami yang lebih mendalam.
Pelajari cara mulai menggunakan administrasi cluster dalam kehidupan nyata di Ringkasan administrasi cluster kami.
Menyiapkan lingkungan
Dalam tutorial ini, Anda akan menggunakan Cloud Shell untuk mengelola resource yang dihosting di
Cloud de Confiance by S3NS. Cloud Shell telah diinstal dengan software yang Anda perlukan untuk tutorial ini, termasuk Terraform, kubectl, dan Google Cloud CLI.
Meninjau file Terraform
Cloud de Confiance by S3NS Provider adalah plugin yang memungkinkan Anda mengelola dan menyediakan Cloud de Confiance resource menggunakan Terraform. Provider ini berfungsi sebagai jembatan antara konfigurasi Terraform dan API, sehingga Anda dapat menentukan resource infrastruktur secara deklaratif, seperti virtual machine dan jaringan. Cloud de Confiance
Cluster dan aplikasi contoh untuk tutorial ini ditentukan dalam dua file Terraform yang menggunakan penyedia Cloud de Confiance by S3NS dan Kubernetes.
(Opsional) Mengekspos aplikasi ke internet
File Terraform untuk contoh ini menjelaskan aplikasi dengan alamat IP internal, yang hanya dapat diakses dari Virtual Private Cloud (VPC) yang sama dengan aplikasi contoh. Jika Anda ingin mengakses antarmuka web aplikasi demo yang sedang berjalan dari internet (misalnya, dari laptop Anda), ubah file Terraform untuk membuat alamat IP publik sebelum Anda membuat cluster. Anda dapat melakukannya menggunakan editor teks langsung di Cloud Shell atau dengan menggunakan Cloud Shell Editor.
Untuk mengekspos aplikasi demo ke internet:
Membuat cluster dan men-deploy aplikasi
Memverifikasi bahwa cluster berfungsi
Lakukan hal berikut untuk mengonfirmasi bahwa cluster Anda berjalan dengan benar:
Pembersihan
Agar tidak menimbulkan biaya pada akun Cloud de Confiance Anda untuk resource yang digunakan di halaman ini, hapus project Cloud de Confiance yang berisi resource tersebut.
Jika Anda berencana untuk mengikuti tutorial tambahan atau menjelajahi sampel lebih lanjut, tunggu hingga Anda selesai untuk melakukan langkah pembersihan ini.
Memecahkan masalah error pembersihan
Jika Anda melihat pesan error yang mirip dengan The network resource 'projects/PROJECT_ID/global/networks/example-network' is already being used by 'projects/PROJECT_ID/global/firewalls/example-network-yqjlfql57iydmsuzd4ot6n5v',
lakukan hal berikut: