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 cluster Google Kubernetes Engine dan workload contoh yang berjalan dengan cepat, yang semuanya disiapkan menggunakan Terraform. Kemudian, Anda dapat menjelajahi workload 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 Cloud de Confiance konsol, lihat Membuat cluster di Cloud de Confiance konsol.
Sebelum memulai
Lakukan langkah-langkah berikut untuk mengaktifkan Kubernetes Engine API:
-
Instal Google Cloud CLI.
-
Konfigurasi gcloud CLI agar 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 -
Buat atau pilih Cloud de Confiance project.
Peran yang diperlukan untuk memilih atau membuat project
- Memilih 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 Pembuat Project
(
roles/resourcemanager.projectCreator), yang berisi izinresourcemanager.projects.create. Pelajari cara memberikan peran.
-
Buat Cloud de Confiance project:
gcloud projects create PROJECT_ID
Ganti
PROJECT_IDdengan nama untuk Cloud de Confiance project yang Anda buat. -
Pilih Cloud de Confiance project yang Anda buat:
gcloud config set project PROJECT_ID
Ganti
PROJECT_IDdengan nama Cloud de Confiance project Anda.
-
Pastikan penagihan diaktifkan untuk Cloud de Confiance project Anda.
Aktifkan GKE API:
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan peran IAM Service Usage Admin (
roles/serviceusage.serviceUsageAdmin), yang berisi izinserviceusage.services.enable. Pelajari cara memberikan peran.gcloud services enable container.googleapis.com
-
Berikan 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. akun. Untuk contohnya, lihat Merepresentasikan pengguna workforce pool dalam kebijakan IAM.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
Cloud de Confiance by S3NS. Cloud Shell diprainstal dengan
software yang Anda perlukan untuk tutorial ini, termasuk Terraform,
kubectl, dan
Google Cloud CLI.
Luncurkan sesi Cloud Shell dari Cloud de Confiance konsol, dengan mengklik ikon aktivasi Cloud Shell Aktifkan Cloud Shell
. Tindakan ini akan
meluncurkan sesi di panel bawah Cloud de Confiance konsol.Kredensial layanan yang terkait dengan mesin virtual 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_IDBuat 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
Provider adalah plugin yang memungkinkan Anda mengelola dan menyediakan Cloud de Confiance resource menggunakan Terraform.Cloud de Confiance by S3NS Plugin ini berfungsi sebagai jembatan antara konfigurasi Terraform dan Cloud de Confiance API, sehingga Anda dapat menentukan resource infrastruktur secara deklaratif, seperti mesin virtual dan jaringan.
Cluster dan aplikasi contoh untuk tutorial ini ditentukan dalam dua file Terraform yang menggunakan Cloud de Confiance by S3NS provider dan Kubernetes.
Tinjau file
cluster.tf:cat cluster.tfOutputnya mirip dengan hal berikut
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 berlokasi 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:
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 ingin mengakses antarmuka web aplikasi demo yang berjalan dari internet (misalnya, dari laptop Anda), ubah file Terraform untuk membuat alamat IP publik terlebih dahulu 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_typedariINTERNALmenjadiEXTERNAL.ipv6_access_type = "EXTERNAL"Di
app.tf, konfigurasi load balancer eksternal dengan menghapusnetworking.gke.io/load-balancer-typeanotasi.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 planTerapkan konfigurasi Terraform
terraform applySaat diminta, masukkan
yesuntuk mengonfirmasi tindakan. Perintah ini mungkin memerlukan waktu beberapa menit untuk diselesaikan. 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 Cloud de Confiance konsol:
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 Cloud de Confiance konsol:
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 External endpoints, klik IPv4 link atau IPv6 link untuk melihat Layanan Anda di browser. Outputnya mirip dengan hal berikut:
Hello, world! Version: 2.0.0 Hostname: example-hello-app-deployment-5df979c4fb-kdwgr
Pembersihan
Agar akun Anda tidak dikenai biaya untuk resource yang digunakan pada halaman ini, hapus project yang berisi resource tersebut. Cloud de Confiance Cloud de Confiance
Jika Anda berencana mengikuti tutorial tambahan atau untuk menjelajahi contoh lebih lanjut, tunggu hingga 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 Cloud de Confiance konsol 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 yang lebih mendalam: Aplikasi yang skalabel.
Pelajari cara memulai administrasi cluster di dunia nyata di Ringkasan administrasi cluster.