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 konsol Google Cloud 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 beban kerja contoh di konsol Google Cloud , lihat Membuat cluster di konsol Google Cloud .
Sebelum memulai
Lakukan langkah-langkah berikut untuk mengaktifkan Kubernetes Engine API:
- Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
-
Instal Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:
gcloud init -
Buat atau pilih Google Cloud project.
Peran yang diperlukan untuk memilih atau membuat project
- Pilih project: Memilih project tidak memerlukan peran IAM tertentu—Anda dapat memilih project mana pun yang telah diberi peran.
-
Membuat project: Untuk membuat project, Anda memerlukan peran Project Creator
(
roles/resourcemanager.projectCreator), yang berisi izinresourcemanager.projects.create. Pelajari cara memberikan peran.
-
Buat Google Cloud project:
gcloud projects create PROJECT_ID
Ganti
PROJECT_IDdengan nama untuk Google Cloud project yang Anda buat. -
Pilih project Google Cloud yang Anda buat:
gcloud config set project PROJECT_ID
Ganti
PROJECT_IDdengan nama project Google Cloud Anda.
-
Verifikasi bahwa penagihan diaktifkan untuk project Google Cloud Anda.
Aktifkan GKE API:
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan izin
serviceusage.services.enable. Jika Anda membuat project, kemungkinan Anda sudah memiliki izin ini melalui peran Pemilik (roles/owner). Jika tidak, Anda bisa mendapatkan izin ini melalui peran Admin Penggunaan Layanan (roles/serviceusage.serviceUsageAdmin). Pelajari cara memberikan peran.gcloud services enable container.googleapis.com
-
Instal Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:
gcloud init -
Buat atau pilih Google Cloud project.
Peran yang diperlukan untuk memilih atau membuat project
- Pilih project: Memilih project tidak memerlukan peran IAM tertentu—Anda dapat memilih project mana pun yang telah diberi peran.
-
Membuat project: Untuk membuat project, Anda memerlukan peran Project Creator
(
roles/resourcemanager.projectCreator), yang berisi izinresourcemanager.projects.create. Pelajari cara memberikan peran.
-
Buat Google Cloud project:
gcloud projects create PROJECT_ID
Ganti
PROJECT_IDdengan nama untuk Google Cloud project yang Anda buat. -
Pilih project Google Cloud yang Anda buat:
gcloud config set project PROJECT_ID
Ganti
PROJECT_IDdengan nama project Google Cloud Anda.
-
Verifikasi bahwa penagihan diaktifkan untuk project Google Cloud Anda.
Aktifkan GKE API:
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan izin
serviceusage.services.enable. Jika Anda membuat project, kemungkinan Anda sudah memiliki izin ini melalui peran Pemilik (roles/owner). Jika tidak, Anda bisa mendapatkan izin ini melalui peran Admin Penggunaan Layanan (roles/serviceusage.serviceUsageAdmin). Pelajari cara memberikan peran.gcloud services enable container.googleapis.com
-
Memberikan peran ke akun pengguna Anda. Jalankan perintah berikut satu kali untuk setiap peran IAM berikut:
roles/container.admin, roles/compute.networkAdmin, roles/iam.serviceAccountUsergcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
Ganti kode berikut:
PROJECT_ID: Project ID Anda.USER_IDENTIFIER: ID untuk akun pengguna Anda. Misalnya,myemail@example.com.ROLE: Peran IAM yang Anda berikan ke akun pengguna Anda.
Menyiapkan lingkungan
Dalam tutorial ini, Anda akan menggunakan Cloud Shell untuk mengelola resource yang dihosting di
Google Cloud. Cloud Shell telah diinstal sebelumnya dengan software yang Anda perlukan untuk tutorial ini, termasuk Terraform, kubectl, dan Google Cloud CLI.
Luncurkan sesi Cloud Shell dari Google Cloud konsol, dengan mengklik ikon aktivasi Cloud Shell Activate Cloud Shell
. Tindakan ini akan meluncurkan sesi di panel bawah konsol Google Cloud .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/autopilot
Meninjau file Terraform
Google Cloud Provider adalah plugin yang memungkinkan Anda mengelola dan menyediakan resource Google Cloud menggunakan Terraform. Config Connector berfungsi sebagai jembatan antara konfigurasi Terraform dan Google Cloud API, sehingga memungkinkan Anda menentukan resource infrastruktur secara deklaratif, seperti virtual machine dan jaringan.
Cluster dan aplikasi contoh untuk tutorial ini ditentukan dalam dua file Terraform yang menggunakan penyedia Google Cloud dan Kubernetes.
Tinjau file
cluster.tf:cat cluster.tfOutputnya mirip dengan 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.
(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:
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 }
Membuat cluster dan men-deploy aplikasi
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.
Memverifikasi bahwa cluster berfungsi
Lakukan hal berikut untuk mengonfirmasi bahwa cluster Anda berjalan dengan benar:
Buka halaman Workloads di konsol Google Cloud :
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 Google Cloud :
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 External endpoints, 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-kdwgr
Pembersihan
Agar akun Google Cloud Anda tidak dikenai biaya untuk resource yang digunakan pada halaman ini, hapus project Google Cloud 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.
Di Cloud Shell, jalankan perintah berikut untuk menghapus resource Terraform:
terraform destroy --auto-approve
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:
Hapus 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-approve
Langkah berikutnya
Jelajahi cluster dan workload Anda di konsol Google Cloud 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 memulai administrasi cluster dalam kehidupan nyata di Ringkasan administrasi cluster kami.