Membuat cluster GKE dan men-deploy beban kerja menggunakan Terraform
Dalam panduan memulai ini, Anda akan mempelajari cara membuat cluster Autopilot Google Kubernetes Engine (GKE) dan men-deploy beban kerja menggunakan Terraform.
Infrastructure as Code (IaC) adalah praktik mengelola dan menyediakan resource infrastruktur software menggunakan kode. Terraform adalah alat IaC open source populer yang mendukung berbagai layanan Cloud, termasuk GKE. Sebagai administrator platform GKE, Anda dapat menggunakan Terraform untuk menstandarkan konfigurasi cluster Kubernetes dan menyederhanakan alur kerja DevOps Anda. Untuk mempelajari lebih lanjut, lihat Dukungan Terraform untuk GKE.
Tujuan
- Membuat jaringan Virtual Private Cloud (VPC) IPv6
- Membuat cluster GKE Autopilot
- Men-deploy beban kerja di cluster Anda
- Mengekspos beban kerja menggunakan Layanan
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.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API GKE.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API GKE.
-
Pastikan Anda memiliki peran berikut di project: roles/container.admin, roles/compute.networkAdmin, roles/iam.serviceAccountUser
Memeriksa peran
-
Di konsol Google Cloud, buka halaman IAM.
Buka IAM - Pilih project.
-
Di kolom Akun utama, cari baris yang berisi alamat email Anda.
Jika alamat email Anda tidak ada di kolom tersebut, berarti Anda tidak memiliki peran apa pun.
- Di kolom Peran untuk baris yang berisi alamat email Anda, periksa apakah daftar peran menyertakan peran yang diperlukan.
Memberikan peran
-
Di konsol Google Cloud, buka halaman IAM.
Buka IAM - Pilih project.
- Klik Berikan akses.
- Di kolom Akun utama baru, masukkan alamat email Anda.
- Di daftar Pilih peran, pilih peran.
- Untuk memberikan peran tambahan, klik Tambahkan peran lain, lalu tambahkan setiap peran tambahan.
- Klik Simpan.
-
Anda harus memahami dasar-dasar Terraform. Anda dapat menggunakan referensi berikut:
Menyiapkan lingkungan
Dalam tutorial ini, Anda 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, jadi 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 dapat Anda gunakan untuk mengelola dan menyediakan resource Google Cloud menggunakan Terraform, alat Infrastructure as Code (IaC) HashiCorp. Library ini berfungsi sebagai penghubung antara konfigurasi Terraform dan Google Cloud API, sehingga Anda dapat menentukan resource infrastruktur, seperti virtual machine dan jaringan, secara deklaratif.
Tinjau file
cluster.tf
:cat cluster.tf
Outputnya mirip dengan berikut ini
File ini menjelaskan sumber daya berikut:
- Jaringan VPC dengan IPv6 internal aktif.
- Subnetwork stack ganda.
- Cluster Autopilot dual stack
yang terletak di
us-central1
.
Tinjau file
app.tf
:cat app.tf
Outputnya mirip dengan hal berikut ini:
File ini menjelaskan sumber daya berikut:
- Deployment dengan contoh image container.
- Service jenis LoadBalancer. Layanan mengekspos
Deployment pada port 80. Untuk mengekspos aplikasi Anda ke internet,
konfigurasikan load balancer eksternal dengan menghapus
anotasi
networking.gke.io/load-balancer-type
.
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
Jika diminta, masukkan
yes
untuk mengonfirmasi tindakan. Perintah ini mungkin memakan waktu beberapa menit untuk diselesaikan. Outputnya mirip dengan hal berikut ini:Apply complete! Resources: 6 added, 0 changed, 0 destroyed.
Memastikan cluster berfungsi
Lakukan hal berikut untuk mengonfirmasi cluster Anda berjalan dengan benar:
Buka halaman Workloads di konsol Google Cloud:
Klik beban kerja
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
example-hello-app-loadbalancer
LoadBalancer Service. 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 endpoint, klik link IPv4 atau IPv6 link untuk melihat Service 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 dikenakan biaya untuk resource yang digunakan pada halaman ini, ikuti langkah-langkah berikut.
Agar tidak menimbulkan biaya pada akun Google Cloud Anda untuk resource yang digunakan pada halaman ini, ikuti langkah-langkah berikut.
Di Cloud Shell, jalankan perintah berikut untuk menghapus resource Terraform:
terraform destroy --auto-approve
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 langkah 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
- Pelajari referensi
google_container_cluster
dangoogle_container_node_pool
dalam dokumentasi Penyedia Google Cloud. Halaman ini mendokumentasikan argumen dan atribut untuk cluster GKE dan konfigurasi node pool yang didukung Google di Terraform. - Lihat contoh konfigurasi opini di repositori GitHub modul GKE Terraform.