Membuat cluster dan men-deploy workload menggunakan Terraform
Cluster Kubernetes menyediakan layanan komputasi, penyimpanan, jaringan, dan lainnya untuk aplikasi, mirip dengan pusat data virtual. Aplikasi dan layanan terkait yang berjalan di Kubernetes disebut workload.
Tutorial ini memungkinkan Anda melihat cluster Google Kubernetes Engine yang sedang berjalan dan contoh beban kerja dengan cepat, yang semuanya disiapkan menggunakan Terraform. Kemudian, Anda dapat menjelajahi beban kerja di konsol Google Cloud sebelum melanjutkan ke jalur pembelajaran yang lebih mendalam, atau untuk mulai merencanakan dan membuat cluster siap produksi Anda sendiri. Tutorial ini mengasumsikan bahwa Anda sudah memahami Terraform.
Jika Anda lebih memilih untuk 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:
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the GKE API.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the GKE API.
-
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.
Buka IAM - Pilih project.
- Klik Berikan akses.
-
Di kolom New principals, masukkan ID pengguna Anda. Ini biasanya adalah alamat email untuk Akun Google.
- Di daftar Pilih peran, pilih peran.
- Untuk memberikan peran tambahan, klik Tambahkan peran lain, lalu tambahkan setiap peran tambahan.
- Klik Simpan.
-
Menyiapkan lingkungan
Dalam tutorial ini, Anda akan menggunakan Cloud Shell untuk mengelola resource yang dihosting di Google Cloud. Cloud Shell telah diinstal dengan software yang Anda perlukan untuk tutorial ini, termasuk Terraform, kubectl
, dan Google Cloud CLI.
Luncurkan sesi Cloud Shell dari konsol Google Cloud, 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_ID
Ganti
PROJECT_ID
dengan project ID Anda.Buat clone repositori GitHub:
git clone https://github.com/terraform-google-modules/terraform-docs-samples.git --single-branch
Ubah ke direktori kerja:
cd terraform-docs-samples/gke/quickstart/autopilot
Meninjau file Terraform
Penyedia Google Cloud adalah plugin yang memungkinkan Anda mengelola dan menyediakan resource Google Cloud menggunakan Terraform. Terraform berfungsi sebagai jembatan antara konfigurasi Terraform dan Google Cloud API, sehingga Anda dapat 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.tf
Outputnya mirip dengan yang berikut ini
File ini menjelaskan resource berikut:
- Jaringan VPC dengan IPv6 internal diaktifkan.
- Subnet stack ganda.
- Cluster Autopilot stack ganda yang terletak di
us-central1
.
Tinjau file
app.tf
:cat app.tf
Outputnya mirip dengan hal berikut ini:
File ini menjelaskan resource berikut:
- Deployment dengan contoh image container.
- Service jenis LoadBalancer. Layanan 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), ubah file Terraform untuk membuat alamat IP publik sebelum membuat cluster. Anda dapat melakukannya menggunakan editor teks langsung di Cloud Shell atau menggunakan Cloud Shell Editor.
Untuk mengekspos aplikasi demo ke internet:
Di
cluster.tf
, ubahipv6_access_type
dariINTERNAL
menjadiEXTERNAL
.ipv6_access_type = "EXTERNAL"
Di
app.tf
, konfigurasikan 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 tersedia:
terraform
Outputnya 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 infrastructure
Lakukan inisialisasi Terraform:
terraform init
Rencanakan konfigurasi Terraform:
terraform plan
Menerapkan konfigurasi Terraform
terraform apply
Saat diminta, masukkan
yes
untuk 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, penampung 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 Layanan, seperti Pod yang terkait dengan Layanan, dan Port yang digunakan Layanan.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-kdwgr
Pembersihan
Agar tidak menimbulkan biaya pada akun Google Cloud Anda untuk resource yang digunakan pada halaman ini, ikuti langkah-langkah berikut.
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 tindakan berikut:
Hapus aturan Firewall:
gcloud compute firewall-rules list --filter="NETWORK:example-network" --format="table[no-heading](name)" | xargs gcloud --quiet compute firewall-rules delete
Jalankan kembali perintah Terraform:
terraform destroy --auto-approve
Langkah selanjutnya
Jelajahi cluster dan beban kerja Anda di konsol Google Cloud untuk mempelajari beberapa setelan dan resource utama beban kerja yang Anda deploy.
Pelajari lebih lanjut cara menyiapkan dan menggunakan Terraform dengan GKE di Dukungan Terraform untuk GKE.
Coba Pembelajaran jalur: Aplikasi skalabel yang lebih mendalam.
Pelajari cara memulai administrasi cluster di dunia nyata dalam Ringkasan administrasi cluster.