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 Google Cloud 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 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.
-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the GKE API:
gcloud services enable container.googleapis.com
-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the GKE API:
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.serviceAccountUser
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
- Replace
PROJECT_ID
with your project ID. -
Replace
USER_IDENTIFIER
with the identifier for your user account. For example,user:myemail@example.com
. - Replace
ROLE
with each individual role.
- Replace
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 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_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
PenyediaGoogle Cloud adalah plugin yang memungkinkan Anda mengelola dan menyediakan resource Google Cloud menggunakan Terraform. Provider ini berfungsi sebagai jembatan antara konfigurasi Terraform dan API, sehingga Anda dapat menentukan resource infrastruktur secara deklaratif, seperti mesin virtual dan jaringan. Google Cloud
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:
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_protection
mengontrol apakah Anda dapat menggunakan Terraform untuk menghapus cluster ini. Jika Anda menetapkan nilai di kolomdeletion_protection
kefalse
, Terraform dapat menghapus cluster. Untuk mengetahui detailnya, lihat referensigoogle_container_cluster
.
Tinjau file
app.tf
:cat app.tf
Outputnya 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 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
, 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 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, 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 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 di 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 delete
Jalankan 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 mulai menggunakan administrasi cluster dalam kehidupan nyata di Ringkasan administrasi cluster kami.