Membuat cluster multi-tenant menggunakan Terraform
Cluster multi-tenant di Google Kubernetes Engine adalah cluster Kubernetes yang digunakan bersama oleh beberapa tim atau pengguna yang berbeda, yang dikenal sebagai tenant. Setiap tenant biasanya memiliki kumpulan resource dan aplikasi sendiri dalam cluster.
Tutorial Terraform ini memungkinkan Anda membuat cluster GKE yang digunakan bersama oleh dua tim, backend dan frontend, yang dapat men-deploy workload khusus tim di cluster dengan cepat. Tutorial ini mengasumsikan bahwa Anda sudah memahami Terraform. Jika belum, Anda dapat menggunakan resource berikut untuk memahami dasar-dasar Terraform:
- Memulai Terraform (video)
- Perintah Terraform
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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the GKE, GKE GKE Fleet, Cloud SQL, Resource Manager, IAM, Connect gateway APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the GKE, GKE GKE Fleet, Cloud SQL, Resource Manager, IAM, Connect gateway APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Pastikan Anda memiliki peran berikut di project: roles/owner, roles/iam.serviceAccountTokenCreator
Memeriksa peran
-
Di Google Cloud konsol, buka halaman IAM.
Buka IAM - Pilih project.
-
Di kolom Akun utama, temukan semua baris yang mengidentifikasi Anda atau grup yang Anda ikuti. Untuk mengetahui grup mana yang Anda ikuti, hubungi administrator Anda.
- Untuk semua baris yang menentukan atau menyertakan Anda, periksa kolom Peran untuk melihat apakah daftar peran menyertakan peran yang diperlukan.
Memberikan peran
-
Di Google Cloud konsol, buka halaman IAM.
Buka IAM - Pilih project.
- Klik Grant access.
-
Di kolom New principals, masukkan ID pengguna Anda. Biasanya, ini adalah alamat email untuk Akun Google.
- Klik Select a role, lalu telusuri peran.
- Untuk memberikan peran tambahan, klik Add another role , lalu tambahkan tiap peran tambahan.
- Klik Save.
-
Menyiapkan lingkungan
Dalam tutorial ini, Anda akan menggunakan Cloud Shell untuk mengelola resource yang dihosting di
Google Cloud. Cloud Shell diprainstal 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 Aktifkan Cloud Shell
. Tindakan ini akan
meluncurkan sesi di panel bawah Google Cloud 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/multitenant
Meninjau file Terraform
Penyedia adalah plugin yang memungkinkan Anda mengelola dan menyediakanresource menggunakan Terraform.Google Cloud Google Cloud Plugin ini berfungsi sebagai jembatan antara konfigurasi Terraform dan Google Cloud API, sehingga Anda dapat menentukan resource infrastruktur secara deklaratif, seperti mesin virtual dan jaringan.
Tinjau file
main.tf, yang menjelaskan resource cluster GKE:cat main.tfOutputnya mirip dengan hal berikut ini:
Membuat cluster dan database SQL
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 initOpsional: Rencanakan konfigurasi Terraform:
terraform planTerapkan konfigurasi Terraform
terraform applySaat diminta, masukkan
yesuntuk mengonfirmasi tindakan. Pemrosesan perintah ini mungkin membutuhkan waktu beberapa menit. Outputnya mirip dengan hal berikut ini:Apply complete! Resources: 23 added, 0 changed, 0 destroyed.
Men-deploy aplikasi tim backend
Tinjau file Terraform berikut:
cat backend.yamlOutputnya akan mirip dengan berikut ini:
File ini menjelaskan resource berikut:
- Deployment dengan aplikasi contoh.
- Service jenis LoadBalancer.
Service mengekspos Deployment di port 80. Untuk mengekspos aplikasi Anda ke internet, konfigurasi load balancer eksternal dengan menghapus anotasi
networking.gke.io/load-balancer-type.
Di Cloud Shell, jalankan perintah berikut untuk meniru akun layanan tim backend:
gcloud config set auth/impersonate_service_account backend@PROJECT_ID.iam.gserviceaccount.comAmbil kredensial cluster:
gcloud container fleet memberships get-credentials gke-enterprise-cluster --location us-central1Terapkan manifes tim backend ke cluster:
kubectl apply -f backend.yaml
Memverifikasi bahwa aplikasi backend berfungsi
Lakukan hal berikut untuk mengonfirmasi bahwa cluster Anda berjalan dengan benar:
Buka halaman Workloads di Google Cloud konsol:
Klik workload
backend. 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.Klik Layanan LoadBalancer
backend. Halaman detail Layanan akan ditampilkan. Halaman ini menampilkan informasi tentang Layanan, seperti Pod yang terkait dengan Layanan, dan port yang digunakan Layanan.Di bagian Endpoints, klik IPv4 link untuk melihat Layanan Anda di browser. Outputnya mirip dengan hal berikut ini:
Backend! Hostname: backendweb-765f6c4fc9-cl7jx Set Color: greenSetiap kali pengguna mengakses endpoint backend, Layanan akan memilih dan menyimpan warna secara acak dari merah, hijau, atau biru di database bersama.
Men-deploy aplikasi tim frontend
Tinjau file Terraform berikut:
cat frontend.yamlOutputnya akan mirip dengan berikut ini:
File ini menjelaskan resource berikut:
- Deployment dengan aplikasi contoh.
- Service jenis LoadBalancer.
Service mengekspos Deployment di port 80. Untuk mengekspos aplikasi Anda ke internet, konfigurasi load balancer eksternal dengan menghapus anotasi
networking.gke.io/load-balancer-type.
Di Cloud Shell, jalankan perintah berikut untuk meniru akun layanan tim frontend:
gcloud config set auth/impersonate_service_account frontend@PROJECT_ID.iam.gserviceaccount.comAmbil kredensial cluster:
gcloud container fleet memberships get-credentials gke-enterprise-cluster --location us-central1Terapkan manifes tim frontend ke cluster:
kubectl apply -f frontend.yaml
Memverifikasi bahwa aplikasi frontend berfungsi
Lakukan hal berikut untuk mengonfirmasi bahwa cluster Anda berjalan dengan benar:
Buka halaman Workloads di Google Cloud konsol:
Klik workload
frontend. 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.Klik Layanan LoadBalancer
frontend. Halaman detail Layanan akan ditampilkan. Halaman ini menampilkan informasi tentang Layanan, seperti Pod yang terkait dengan Layanan, dan port yang digunakan Layanan.Di bagian Endpoints, klik IPv4 link untuk melihat Layanan Anda di browser. Outputnya mirip dengan hal berikut ini:
Frontend! Hostname: frontendweb-5cd888d88f-gwwtc Got Color: green
Pembersihan
Agar akunAnda tidak dikenai biaya untuk resource yang digunakan pada halaman ini, ikuti langkah-langkah berikut. Google Cloud
Di Cloud Shell, jalankan perintah ini untuk membatalkan peniruan akun layanan:
gcloud config unset auth/impersonate_service_accountJalankan perintah berikut untuk menghapus resource Terraform:
terraform destroy --auto-approve
Langkah berikutnya
Pelajari resource Terraform untuk GKE.
Pelajari contoh konfigurasi yang direkomendasikan di repositori GitHub modul Terraform GKE.