Panduan ini membantu Anda memahami, men-deploy, dan menggunakan Aplikasi web e-commerce yang di-deploy di Kubernetes Solusi Langsung Mulai. Solusi ini menunjukkan cara mem-build dan menjalankan aplikasi e-commerce untuk organisasi retail, dengan situs toko yang terlihat oleh publik. Panduan ini menunjukkan cara membuat aplikasi yang dapat diskalakan untuk menangani lonjakan penggunaan (misalnya, selama peristiwa skala puncak seperti promo), dan dapat mengelola permintaan berdasarkan lokasi pengunjung, sehingga membantu toko online menyediakan layanan yang konsisten untuk basis pelanggan yang tersebar secara geografis.
Aplikasi di-deploy sebagai beberapa layanan kecil, atau microservice, yang berjalan pada cluster Kubernetes yang dikelola Google di Google Cloud. Setiap layanan melakukan tugas tertentu seperti menyediakan frontend web atau mengelola keranjang belanja.
Solusi ini adalah titik awal yang baik jika Anda memerlukan konfigurasi dan fleksibilitas yang ditawarkan oleh fitur Kubernetes saat mengelola situs Anda. Arsitektur microservice seperti ini juga sangat berguna jika Anda memiliki tim engineering yang lebih besar, karena memungkinkan tim atau developer yang berbeda membuat dan mengelola berbagai bagian aplikasi secara terpisah. Jika ini bukan organisasi Anda, atau jika Anda tidak yakin, pertimbangkan juga untuk mencoba solusi Aplikasi web E-commerce yang di-deploy di Cloud Run. Cloud Run menggunakan Cloud Run untuk men-deploy aplikasi toko online serupa tanpa memerlukan Kubernetes, dan tidak menggunakan microservice.
Dokumen ini mengasumsikan bahwa Anda sudah memahami konsep dasar cloud, meskipun bukan Google Cloud. Anda akan terbantu jika Anda memiliki pengalaman dengan Terraform.
Tentang Toko Simbal
Aplikasi yang digunakan dalam solusi ini adalah toko online demo untuk jaringan retail fiktif yang disebut Cymbal Shops, dengan situs yang dapat digunakan pengunjung untuk melihat-lihat produk perusahaan, menambahkan produk ke keranjang mereka, pergi ke checkout , dan membeli produk — Anda dapat mencobanya sendiri setelah men-deploy solusi (meskipun sayangnya Anda tidak dapat membeli produk tersebut). Toko Cymbal memiliki pelanggan di AS dan Eropa, sehingga mereka membutuhkan solusi situs yang tidak lebih lambat bagi sebagian pengunjung dibandingkan yang lain. Toko Simbal juga sering mengadakan obral, dan mendapatkan banyak pembeli selama liburan, sehingga mereka membutuhkan situs mereka untuk mengatasi lonjakan traffic tanpa memperlambat atau mengalami masalah lain, dan tanpa harus menghabiskan uang untuk sumber daya {i>Cloud<i} yang sebenarnya tidak mereka butuhkan.
Produk yang digunakan
Solusi ini menggunakan produk Google Cloud berikut:
- Google Kubernetes Engine (GKE): Lingkungan terkelola untuk men-deploy, mengelola, dan menskalakan aplikasi dalam container menggunakan infrastruktur Google.
- Multi Cluster Ingress: Layanan yang dihosting Google yang mendukung deployment resource load balancing bersama di seluruh cluster dan di seluruh region.
Untuk mengetahui informasi tentang cara produk ini dikonfigurasi dan cara interaksinya, lihat bagian berikutnya.
Arsitektur
Solusi ini men-deploy aplikasi e-commerce dengan antarmuka web yang dapat diakses publik. Diagram berikut menunjukkan arsitektur resource Google Cloud yang di-deploy oleh solusi tersebut:
Alur permintaan
Berikut adalah alur pemrosesan permintaan untuk aplikasi yang di-deploy. Langkah-langkah dalam alur diberi nomor seperti yang ditunjukkan pada diagram arsitektur sebelumnya.
- Pengguna berinteraksi dengan situs Cymbal Shops di browser miliknya, yang mengirimkan permintaan HTTP ke Load Balancer Google Cloud. Ini adalah load balancer yang berada di tepi jaringan Google dan mengarahkan traffic ke tujuan yang sesuai dalam Google Cloud.
- Permintaan pengguna diarahkan ke salah satu dari dua cluster GKE tempat frontend aplikasi berjalan. Secara default, ini adalah cluster terdekat pengguna: dalam diagram sebelumnya, cluster terdekat dengan pengguna adalah di Eropa, jadi di sinilah permintaan akan berada. Anda akan mempelajari lebih lanjut cara hal ini dikonfigurasi menggunakan layanan Multi Cluster Ingress di bagian berikutnya.
- Permintaan ditangani oleh satu atau beberapa microservice backend yang membentuk aplikasi Cymbal Shops lainnya.
- Aplikasi
cartservice
ini menyimpan status keranjang belanja pengguna saat mereka mengunjungi situs, menggunakan database Redis. Satu database Redis di-deploy hanya ke cluster AS.
Komponen dan konfigurasi
Aplikasi Cymbal Shops berjalan di cluster Google Kubernetes Engine (GKE). Kubernetes adalah sistem open source untuk mengotomatiskan deployment, penskalaan, dan pengelolaan aplikasi dalam container, tempat aplikasi dikemas (atau dimasukkan dalam container) dengan dependensinya dengan cara yang tidak bergantung pada lingkungannya. Cluster Kubernetes adalah sekumpulan mesin, yang disebut node, yang Anda gunakan untuk menjalankan container. GKE dengan Autopilot adalah layanan Kubernetes yang skalabel dan sepenuhnya otomatis, dengan cluster Anda terdiri dari mesin virtual Compute Engine di Google Cloud.
Solusi Cymbal Shops mencakup komponen berikut:
- Tiga cluster GKE, sebagai berikut:
- Satu cluster, dikenal sebagai cluster konfigurasi, yang digunakan untuk mengelola layanan Multi Cluster Ingress untuk aplikasi. Multi Cluster Ingress adalah layanan yang memungkinkan Anda melakukan load balancing pada traffic di kumpulan cluster yang ditentukan, dengan satu alamat IP virtual untuk aplikasi Anda.
- Dua klaster di region berbeda untuk menjalankan microservice Cymbal Shops. Setiap cluster memiliki layanan Cymbal Shops yang identik, yang berjalan di namespace Kubernetes yang sama. Hal ini memungkinkan Multi Cluster Ingress memperlakukan kedua layanan frontend seolah-olah adalah layanan yang sama, sehingga memilih cluster untuk mengirim traffic, bergantung pada kedekatan dengan pengunjung situs. Multi Cluster Ingress juga dapat digunakan untuk memastikan traffic hanya dikirim ke cluster yang responsif, melakukan peluncuran bertahap saat mengupgrade, dan lainnya.
- Ketiga cluster GKE telah mengaktifkan Autopilot. Autopilot adalah fitur GKE yang memungkinkan Anda membuat cluster tempat Google mengelola konfigurasi cluster, termasuk node, penskalaan, keamanan, dan setelan lainnya yang telah dikonfigurasi sebelumnya. Untuk Toko Cymbal, ini berarti saat jumlah pengunjung situs lebih banyak dari biasanya, cluster dapat secara otomatis meningkatkan jumlah CPU, memori, dan penyimpanan yang digunakan berdasarkan kebutuhan aplikasi. Dengan mengaktifkan Autopilot, administrator platform Cymbal Shops tidak perlu khawatir meminta (dan membayar) resource Cloud lebih banyak daripada yang sebenarnya mereka butuhkan, atau berisiko memiliki cluster yang terlalu kekurangan resource untuk mengatasi peningkatan traffic pada hari-hari sibuk.
Biaya
Lihat halaman Aplikasi web e-commerce yang di-deploy di Kubernetes untuk mengetahui estimasi biaya bulanan berdasarkan lokasi resource default dan perkiraan waktu penggunaan. Anda dapat mencari tahu lebih lanjut tentang harga GKE, Autopilot, dan Multi Cluster Ingress di halaman harga GKE.
Sebelum memulai
Untuk men-deploy solusi ini, Anda memerlukan project Google Cloud dan beberapa izin IAM terlebih dahulu.
Membuat atau memilih project Google Cloud
Saat men-deploy solusi, Anda perlu menentukan di mana project Google Cloud resource akan di-deploy. Anda dapat membuat project baru atau menggunakan project yang ada untuk deployment.
Jika Anda ingin membuat project baru, lakukan sebelum memulai deployment. Menggunakan project dapat membantu menghindari konflik dengan resource yang telah disediakan sebelumnya, seperti resource yang digunakan untuk workload produksi.
Untuk membuat project, selesaikan langkah-langkah berikut ini:
-
Di konsol Google Cloud, buka halaman Pemilih project.
-
Untuk mulai membuat project Google Cloud, klik Buat project.
-
Beri nama project Anda. Catat project ID yang dibuat.
-
Edit kolom lain sesuai kebutuhan.
-
Untuk membuat project, klik Buat.
Mendapatkan izin IAM yang diperlukan
Untuk memulai proses deployment, Anda memerlukan izin Identity and Access Management (IAM) yang terdaftar dalam tabel berikut ini.
Jika Anda membuat project baru untuk solusi ini, Anda memiliki peran dasar roles/owner
di project tersebut dan memiliki semua izin yang diperlukan. Jika Anda tidak memiliki
peran roles/owner
, minta administrator Anda untuk memberikan izin ini (atau
peran yang menyertakan izin ini) kepada Anda.
Izin IAM diperlukan | Peran bawaan yang mencakup izin yang diperlukan |
---|---|
|
Service Usage Admin ( roles/serviceusage.serviceUsageAdmin ) |
|
Service Account Admin ( roles/iam.serviceAccountAdmin ) |
|
Project IAM Admin ( roles/resourcemanager.projectIamAdmin ) |
config.deployments.create config.deployments.list |
Cloud Infrastructure Manager Admin ( roles/config.admin ) |
iam.serviceAccount.actAs |
Service Account User ( roles/iam.serviceAccountUser ) |
Tentang izin akun layanan sementara
Jika Anda memulai proses deployment melalui konsol, Google akan membuat akun layanan untuk men-deploy solusi atas nama Anda (dan akan menghapus deployment jika Anda memilihnya). Akun layanan ini diberi izin IAM tertentu untuk sementara; yaitu, izin tersebut akan otomatis dicabut setelah operasi deployment dan penghapusan solusi selesai. Google merekomendasikan agar setelah Anda menghapus deployment, Anda harus menghapus akun layanan, seperti yang akan dijelaskan dalam panduan ini.
Melihat peran yang ditetapkan ke akun layanan
Peran-peran tersebut tercantum di sini untuk mengantisipasi jika administrator project Google Cloud atau organisasi Anda membutuhkan informasi ini.
roles/container.admin
roles/gkehub.editor
roles/compute.networkAdmin
roles/iam.serviceAccountAdmin
roles/iam.serviceAccountUser
roles/resourcemanager.projectIamAdmin
roles/serviceusage.serviceUsageAdmin
Men-deploy solusi
Untuk membantu Anda men-deploy solusi ini dengan upaya minimal, konfigurasi Terraform disediakan di GitHub. Konfigurasi Terraform menentukan semua resource Google Cloud yang diperlukan untuk solusi.
Anda dapat men-deploy solusi menggunakan salah satu dari metode berikut ini:
Melalui konsol: Gunakan metode ini jika Anda ingin mencoba solusi dengan konfigurasi default dan melihat cara kerjanya. Cloud Build men-deploy semua resource yang diperlukan untuk solusi. Jika Anda sudah tidak memerlukan solusi yang di-deploy, Anda dapat menghapusnya melalui konsol. Semua resource yang telah Anda buat setelah men-deploy solusi mungkin perlu dihapus secara terpisah.
Untuk menggunakan metode deployment ini, ikuti petunjuknya di Deploy melalui konsol.
Menggunakan Terraform CLI: Gunakan metode ini jika Anda ingin menyesuaikan solusi atau mengotomatisasi penyediaan dan pengelolaan resource menggunakan pendekatan Infrastructure as Code (IaC). Download konfigurasi Terraform melalui GitHub, sesuaikan kode secara opsional sesuai kebutuhan, kemudian deploy solusi menggunakan Terraform CLI. Setelah men-deploy solusi, Anda dapat terus menggunakan Terraform untuk mengelola solusi tersebut.
Untuk menggunakan metode deployment ini, ikuti instruksinya di Men-deploy menggunakan Terraform CLI.
Men-deploy melalui konsol
Selesaikan langkah-langkah berikut untuk men-deploy solusi yang telah terkonfigurasi.
Di katalog Solusi Praktis Google Cloud Jump Start, buka Aplikasi web e-commerce yang di-deploy di Kubernetes.
Buka aplikasi web E-commerce yang di-deploy di solusi Kubernetes
Tinjau informasi yang diberikan di halaman, seperti perkiraan biaya solusi dan perkiraan waktu deployment.
Jika sudah siap untuk mulai men-deploy solusi, klik Deploy.
Panel konfigurasi langkah demi langkah akan ditampilkan.
Selesaikan langkah-langkah di panel konfigurasi.
Catat nama yang Anda masukkan untuk deployment. Nama ini akan diperlukan saat Anda menghapus deployment.
Saat Anda mengklik Deploy, halaman Deployment solusi akan ditampilkan. Kolom Status di halaman ini menampilkan Men-deploy.
Tunggu hingga solusi berhasil di-deploy.
Jika deployment gagal, kolom Status akan menampilkan Gagal. Anda dapat menggunakan log Cloud Build untuk mendiagnosis error. Untuk informasi selengkapnya, lihat Error ketika men-deploy melalui konsol.
Setelah deployment selesai, kolom Status berubah menjadi Di-deploy.
Ketika Anda tidak lagi memerlukan solusi tersebut, Anda dapat menghapus deployment untuk menghindari penagihan berkelanjutan untuk resource Google Cloud tersebut. Untuk informasi selengkapnya, lihat Menghapus deployment.
Lanjutkan ke Menjelajahi Toko Cymbal untuk mengetahui cara menguji dan menjelajahi solusi Anda.
Men-deploy menggunakan Terraform CLI
Bagian ini menjelaskan cara menyesuaikan solusi atau mengotomatiskan penyediaan dan pengelolaan solusi menggunakan Terraform CLI. Solusi yang Anda deploy menggunakan Terraform CLI tidak ditampilkan di halaman Deployment solusi pada Konsol Google Cloud.
Jika sudah tidak memerlukan deployment, Anda dapat menghapusnya menggunakan Terraform CLI, seperti yang dijelaskan di bagian Menghapus penggunaan Terraform CLI.
Menyiapkan klien Terraform
Anda dapat menjalankan Terraform baik di Cloud Shell maupun host lokal Anda. Panduan ini menjelaskan cara menjalankan Terraform di Cloud Shell, yang telah menginstal Terraform di Cloud Shell dan dikonfigurasi untuk diautentikasi dengan Google Cloud.
Kode Terraform untuk solusi ini tersedia di repositori GitHub.
Lakukan clone repositori GitHub ke Cloud Shell.
Perintah akan ditampilkan untuk mengonfirmasi download repositori GitHub ke Cloud Shell.
Klik Confirm.
Cloud Shell diluncurkan di tab browser yang terpisah, lalu kode Terraform didownload ke direktori
$HOME/cloudshell_open
lingkungan Cloud Shell Anda.Dalam Cloud Shell, periksa apakah direktori yang sedang bekerja adalah
$HOME/cloudshell_open/terraform-ecommerce-microservices-on-gke/infra
. Ini merupakan direktori yang berisi file konfigurasi Terraform untuk solusi. Jika Anda perlu mengubah ke direktori tersebut, jalankan perintah berikut:cd $HOME/cloudshell_open/terraform-ecommerce-microservices-on-gke/infra
Lakukan inisialisasi Terraform dengan menjalankan perintah berikut:
terraform init
Tunggu hingga Anda melihat pesan berikut:
Terraform has been successfully initialized!
Mengonfigurasi variabel Terraform
Kode Terraform yang Anda download mencakup variabel yang dapat digunakan untuk menyesuaikan deployment berdasarkan persyaratan Anda. Misalnya, Anda dapat menentukan project Google Cloud dan region tempat Anda ingin men-deploy solusi.
Pastikan direktori yang sedang bekerja adalah
$HOME/cloudshell_open/terraform-ecommerce-microservices-on-gke/infra
. Jika bukan, buka direktori tersebut.Pada direktori yang sama, buatlah file teks dengan nama
terraform.tfvars
.Dalam file
terraform.tfvars
, salin cuplikan kode berikut dan tetapkan nilai untuk variabel yang diperlukan.- Ikuti petunjuk yang disediakan sebagai komentar dalam cuplikan kode.
- Cuplikan kode ini hanya mencakup variabel yang harus Anda tetapkan
nilainya. Konfigurasi Terraform mencakup variabel lain yang memiliki
nilai default. Untuk meninjau semua variabel dan nilai default, lihat
file
variables.tf
yang tersedia di direktori$HOME/cloudshell_open/terraform-ecommerce-microservices-on-gke/infra
. - Pastikan setiap nilai yang Anda tetapkan dalam file
terraform.tfvars
cocok dengan jenis variabel seperti yang dideklarasikan dalam filevariables.tf
. Misalnya, jika jenis yang ditentukan untuk variabel dalam filevariables.tf
adalah filebool
, Anda harus menentukantrue
ataufalse
sebagai nilai variabel tersebut di fileterraform.tfvars
.
# This is an example of the terraform.tfvars file.
# The values in this file must match the variable types declared in variables.tf.
# The values in this file override any defaults in variables.tf.
# ID of the project in which you want to deploy the solution
project_id = "PROJECT_ID"
Untuk mengetahui informasi tentang nilai yang dapat Anda tetapkan ke variabel project_id
, lihat Mengidentifikasi project.
Memvalidasi dan meninjau konfigurasi Terraform
Pastikan direktori yang sedang bekerja adalah
$HOME/cloudshell_open/terraform-ecommerce-microservices-on-gke/infra
. Jika bukan, buka direktori tersebut.Pastikan konfigurasi Terraform tidak terdapat error:
terraform validate
Jika perintah menunjukkan error, lakukan perbaikan yang diperlukan dalam konfigurasi kemudian jalankan kembali perintah
terraform validate
. Ulangi langkah ini hingga perintah menunjukkan pesan berikut:Success! The configuration is valid.
Tinjau resource yang ditentukan dalam konfigurasi:
terraform plan
Jika Anda tidak membuat file
terraform.tfvars
seperti yang dijelaskan sebelumnya, Terraform akan meminta Anda memasukkan nilai untuk variabel yang tidak memiliki nilai default. Masukkan nilai yang diperlukan.Output perintah
terraform plan
adalah daftar resource yang disediakan Terraform ketika Anda menerapkan konfigurasi.Jika Anda ingin melakukan perubahan, edit konfigurasi, kemudian jalankan kembali perintah
terraform validate
danterraform plan
.
Menyediakan resource
Jika tidak ada perubahan lebih lanjut yang diperlukan dalam konfigurasi Terraform, deploy resource.
Pastikan direktori yang sedang bekerja adalah
$HOME/cloudshell_open/terraform-ecommerce-microservices-on-gke/infra
. Jika bukan, buka direktori tersebut.Terapkan konfigurasi Terraform:
terraform apply
Jika Anda tidak membuat file
terraform.tfvars
seperti yang dijelaskan sebelumnya, Terraform akan meminta Anda memasukkan nilai untuk variabel yang tidak memiliki nilai default. Masukkan nilai yang diperlukan.Terraform menampilkan daftar resource yang akan dibuat.
Ketika Anda diminta untuk melakukan tindakan, masukkan
yes
.Terraform menampilkan pesan yang menunjukkan progres deployment.
Jika deployment tidak dapat diselesaikan, Terraform akan menampilkan error yang menyebabkan kegagalan. Tinjau pesan error dan update konfigurasi untuk memperbaiki error. Kemudian jalankan kembali perintah
terraform apply
. Untuk bantuan terkait pemecahan masalah error Terraform, lihat Error ketika men-deploy solusi menggunakan Terraform CLI.Setelah semua resource dibuat, Terraform akan menampilkan pesan berikut:
Apply complete!
Ketika Anda tidak lagi memerlukan solusi tersebut, Anda dapat menghapus deployment untuk menghindari penagihan berkelanjutan untuk resource Google Cloud tersebut. Untuk informasi selengkapnya, lihat Menghapus deployment.
Lanjutkan ke Menjelajahi Toko Cymbal untuk mengetahui cara menguji dan menjelajahi solusi Anda.
Jelajahi Toko Simbal
Selamat, Anda sekarang telah men-deploy situs Cymbal Shops! Anda dapat mengunjungi situs Cymbal Shops dan melihat-lihat, lalu mempelajari cara kerja solusi tersebut di konsol Google Cloud. Perhatikan bahwa setelah berhasil men-deploy aplikasi, perlu waktu sekitar lima menit agar situs muncul di alamat yang diberikan.
Kunjungi situs Cymbal Shops
Cara Anda menemukan situs Cymbal Shops bergantung pada cara Anda men-deploy solusi tersebut.
Deployment konsol
Jika Anda men-deploy solusi melalui konsol, Anda dapat mengunjungi situsnya langsung dari halaman Deployment solusi.
- Jika Anda baru saja selesai men-deploy solusi, klik Lihat aplikasi web untuk membuka situs. Jika tidak, klik menu Actions untuk deployment, lalu pilih View web app.
Deployment Terraform
Jika Anda men-deploy solusi menggunakan Terraform CLI, pertama-tama temukan alamat IP untuk frontend yang disediakan oleh Multi Cluster Ingress. Anda dapat melakukan ini dari command line menggunakan Google Cloud CLI (pendekatan paling sederhana), atau dari konsol Google Cloud.
gcloud
- Pastikan Anda menginstal Google Cloud CLI versi terbaru. Sebaiknya jalankan perintah dari Cloud Shell, tempat alat ini sudah diinstal untuk Anda.
Jalankan perintah berikut untuk mendapatkan alamat IP, dan ganti PROJECT_ID dengan ID project Google Cloud Anda:
gcloud compute addresses list \ --filter="name=('multi-cluster-ingress-ip-address-1')" \ --project=PROJECT_ID
Salin dan tempel alamat yang ditampilkan oleh perintah ke browser untuk membuka situs.
Konsol
Buka halaman Google Kubernetes Engine di Konsol Google Cloud.
Pilih Browser Objek di menu navigasi.
Dalam daftar Object Browser, luaskan bagian networking.gke.io, lalu pilih MultiClusterIngress. Anda mungkin perlu men-scroll lebih jauh untuk menemukan bagian ini.
Di halaman MultiClusterIngress, pilih frontend-multi-cluster-ingress.
Di halaman detail frontend-multi-cluster-ingress, cari alamat IP. Klik alamat ini untuk mengunjungi situs.
Jelajahi situs
Anda kini dapat berinteraksi dengan situs Cymbal Shops seperti yang akan dilihat pelanggannya, termasuk menjelajahi produk, menambahkan produk ke keranjang, dan check out sebagai tamu.
Pelajari solusi Anda
Untuk melihat resource Google Cloud yang di-deploy beserta konfigurasinya, ikuti tur interaktif.
Menghapus deployment
Jika Anda tidak lagi memerlukan deployment solusi, hapus deployment tersebut untuk menghindari penagihan berkelanjutan pada resource yang Anda buat.
Menghapus melalui konsol
Gunakan prosedur ini jika Anda men-deploy solusi melalui konsol.
Pada Konsol Google Cloud, buka halaman Deployment solusi.
Pilih project berisi deployment yang ingin Anda hapus.
Cari deployment yang ingin Anda hapus.
Di baris untuk deployment, klik
Tindakan, lalu pilih Hapus.Anda mungkin perlu men-scroll untuk melihat Tindakan di baris.
Masukkan nama deployment, lalu klik Konfirmasi.
Kolom Status menampilkan Menghapus.
Jika penghapusan gagal, lihat panduan pemecahan masalah pada bagian Error saat menghapus deployment.
Jika tidak lagi memerlukan project Google Cloud yang digunakan untuk solusi, Anda dapat menghapus project tersebut. Untuk informasi selengkapnya, lihat Opsional: Menghapus project
Menghapus menggunakan Terraform CLI
Gunakan prosedur ini jika Anda men-deploy solusi menggunakan Terraform CLI.
Di Cloud Shell, pastikan direktori kerja saat ini adalah
$HOME/cloudshell_open/terraform-ecommerce-microservices-on-gke/infra
. Jika bukan, buka direktori tersebut.Hapus resource yang disediakan oleh Terraform:
terraform destroy
Terraform menampilkan daftar resource yang akan dimusnahkan.
Ketika Anda diminta untuk melakukan tindakan, masukkan
yes
.Terraform menampilkan pesan yang menunjukkan progres. Setelah semua resource dihapus, Terraform akan menampilkan pesan berikut:
Destroy complete!
Jika penghapusan gagal, lihat panduan pemecahan masalah pada bagian Error saat menghapus deployment.
Jika tidak lagi memerlukan project Google Cloud yang digunakan untuk solusi, Anda dapat menghapus project tersebut. Untuk informasi selengkapnya, lihat Opsional: Menghapus project
Opsional: Menghapus project
Jika Anda men-deploy solusi di project Google Cloud baru, dan tidak lagi memerlukan project tersebut, hapus dengan melakukan langkah-langkah berikut:
- Pada Konsol Google Cloud, buka halaman Kelola resource
- Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Hapus.
- Pada layar perintah, ketik project ID, lalu klik Matikan.
Jika Anda memutuskan untuk mempertahankan project, hapus akun layanan yang dibuat untuk solusi ini, seperti yang akan dijelaskan pada bagian selanjutnya.
Opsional: Menghapus akun layanan
Jika Anda menghapus project yang digunakan untuk solusi tersebut, lewati bagian ini.
Seperti yang telah disebutkan dalam panduan ini, ketika men-deploy solusi, akun layanan akan dibuat atas nama Anda. Akun layanan telah diberi izin IAM tertentu untuk sementara; yaitu, izin yang otomatis dicabut setelah operasi deployment dan penghapusan solusi selesai, tetapi akun layanan tidak dihapus. Google merekomendasikan agar Anda menghapus akun layanan ini.
Jika Anda men-deploy solusi melalui Konsol Google Cloud, buka halaman Deployment solusi. (Jika Anda sudah berada di halaman tersebut, muat ulang browser.) Proses terpicu di latar belakang untuk menghapus akun layanan. Tidak ada tindakan lebih lanjut yang diperlukan.
Jika Anda men-deploy solusi menggunakan Terraform CLI, lakukan langkah-langkah berikut:
Di Konsol Google Cloud, buka halaman Service accounts.
Pilih project yang Anda gunakan untuk solusi tersebut.
Pilih akun layanan yang ingin Anda hapus.
ID email akun layanan yang digunakan untuk membuat solusi menggunakan format berikut:
goog-sc-DEPLOYMENT_NAME-NNN@PROJECT_ID.
ID email berisi nilai-nilai berikut:
- DEPLOYMENT_NAME: nama deployment.
- NNN: 3 digit angka acak.
- PROJECT_ID: ID project tempat Anda men-deploy solusi.
Klik Delete.
Mengatasi error
Tindakan yang dapat Anda lakukan untuk mendiagnosis dan mengatasi error bergantung pada metode deployment dan kompleksitas error
Error ketika men-deploy melalui konsol
Jika deployment gagal saat Anda menggunakan konsol, lakukan hal-hal berikut:
Buka halaman Deployment solusi.
Jika deployment gagal, kolom Status akan menampilkan Gagal.
Lihat detail error yang menyebabkan kegagalan:
Di baris untuk deployment, klik
Tindakan.Anda mungkin perlu men-scroll untuk melihat Tindakan di baris.
Pilih Lihat log Cloud Build.
Tinjau log Cloud Build dan ambil tindakan yang sesuai untuk menyelesaikan masalah yang menyebabkan kegagalan.
Error ketika men-deploy menggunakan Terraform CLI
Jika deployment gagal saat Anda menggunakan Terraform, output perintah terraform
apply
akan menyertakan pesan error yang dapat Anda tinjau untuk mendiagnosis
masalah.
Pada bagian berikut ditunjukkan contoh-contoh error deployment yang mungkin Anda alami ketika menggunakan Terraform.
Terjadi error saat membuat Fitur: Resource sudah ada
Jika Anda men-deploy solusi ini ke project dengan Multi Cluster Ingress sudah dikonfigurasi, Anda akan melihat error yang serupa dengan berikut:
Error: Error creating Feature: Resource already exists - apply blocked by lifecycle params: &beta.Feature{Name:(*string)(0xc0017d1d00), Labels:map[string]string{}, ResourceState:(*beta.FeatureResourceState)(0xc001b9d890), Spec:(*beta.FeatureSpec)(0xc001792f00), State:(*beta.FeatureState)(0xc001792f50), CreateTime:(*string)(0xc001792fd0), UpdateTime:(*string)(0xc001792ff0), DeleteTime:(*string)(nil), Project:(*string)(0xc0017d1d40), Location:(*string)(0xc0017d1ca0)}.
running tf apply: terraform apply failed: running terraform failed: exit status 1
Alasannya, solusi ini men-deploy cluster GKE konfigurasi baru ke dalam project yang dipilih. Project (khususnya, fleet project) hanya dapat berisi satu cluster konfigurasi untuk mengonfigurasi Multi Cluster Ingress. Untuk memperbaiki masalah ini, hapus cluster konfigurasi Multi Cluster Ingress yang ada, atau mulai lagi dalam project baru.
Error: tugas: default/kubernetes-manifests-deployer-job dalam status gagal
Terraform solusi ini men-deploy Tugas Kubernetes yang disebut kubernetes-manifests-deployer-job
. Tugas Kubernetes ini men-deploy resource Kubernetes (microservice Cymbal Shops, database Redis, dan sebagainya) yang diperlukan untuk solusi ini ke ketiga klaster.
Karena Tugas Kubernetes ini kompleks dan bergantung pada kesiapan ketiga klaster, tugas ini terkadang dapat gagal dengan pesan error yang mirip dengan:
kubernetes_job.kubernetes_manifests_deployer_job: Creation errored after 5m8s
...
Error: job: default/kubernetes-manifests-deployer-job is in failed state
Jika Anda menerima error ini, kemungkinan beberapa, atau mungkin semua, infrastruktur Google Cloud solusi tersebut sudah disediakan, meskipun seluruh deployment lainnya tidak berhasil diselesaikan. Sebaiknya hapus project agar tidak dikenai biaya untuk resource ini, dan coba lagi deployment dalam project baru yang terpisah.
Error API tidak diaktifkan
Jika Anda membuat project dan segera mencoba men-deploy solusi di project baru, deployment mungkin akan gagal dengan error seperti berikut:
Error: Error creating Network: googleapi: Error 403: Compute Engine API has not
been used in project PROJECT_ID before or it is disabled. Enable it by visiting
https://console.developers.google.com/apis/api/compute.googleapis.com/overview?project=PROJECT_ID
then retry. If you enabled this API recently, wait a few minutes for the action
to propagate to our systems and retry.
Jika terjadi error, tunggu beberapa menit, lalu jalankan kembali perintah terraform apply
.
Error ketika menghapus deployment
Dalam kasus tertentu, upaya untuk menghapus deployment mungkin akan gagal:
- Jika Anda mengubah resource yang disediakan oleh solusi setelah men-deploy solusi melalui konsol, lalu Anda mencoba menghapus deployment, penghapusan mungkin akan gagal. Kolom Status pada halaman Deployment solusi akan menampilkan Gagal, dan log Cloud Build akan menunjukkan penyebab error.
- Jika Anda mengubah resource dengan menggunakan antarmuka non-Terraform (misalnya, konsol)
setelah men-deploy solusi menggunakan
Terraform CLI, kemudian Anda mencoba menghapus deployment,
penghapusan mungkin akan gagal. Pesan dalam output perintah
terraform destroy
menunjukkan penyebab error.
Tinjau log dan pesan error serta identifikasi dan hapus resource yang menyebabkan error tersebut. Setelah itu, coba hapus kembali deployment.
Jika deployment berbasis konsol tidak dapat dihapus dan Anda tidak dapat mendiagnosis error menggunakan log Cloud Build, Anda dapat menghapus deployment tersebut menggunakan Terraform CLI yang akan dijelaskan pada bagian berikutnya.
Menghapus deployment berbasis konsol menggunakan Terraform CLI
Bagian ini menjelaskan cara menghapus deployment berbasis konsol jika terjadi error saat Anda mencoba menghapusnya melalui konsol. Dalam pendekatan ini, Anda perlu mendownload konfigurasi Terraform untuk deployment yang ingin dihapus, lalu gunakan Terraform CLI untuk menghapus deployment tersebut.
Identifikasi region tempat kode Terraform, log, dan data deployment lainnya disimpan. Region ini mungkin berbeda dari region yang Anda pilih ketika men-deploy solusi.
Pada Konsol Google Cloud, buka halaman Deployment solusi.
Pilih project berisi deployment yang ingin Anda hapus.
Dalam daftar deployment, identifikasi baris deployment yang ingin Anda hapus.
Klik
Lihat semua konten baris.Pada kolom Lokasi, catat lokasi kedua seperti yang ditandai dalam contoh berikut:
Di konsol Google Cloud, aktifkan Cloud Shell.
Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.
Membuat variabel lingkungan untuk project ID, region, dan nama deployment yang ingin Anda hapus:
export REGION="REGION" export PROJECT_ID="PROJECT_ID" export DEPLOYMENT_NAME="DEPLOYMENT_NAME"
Dalam perintah ini, ganti kode berikut:
- REGION: lokasi yang Anda catat sebelumnya dalam prosedur ini.
- PROJECT_ID: ID project tempat Anda men-deploy solusi.
- DEPLOYMENT_NAME: nama deployment yang ingin Anda hapus.
Dapatkan ID revisi deployment terbaru yang ingin Anda hapus:
export REVISION_ID=$(curl \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://config.googleapis.com/v1alpha2/projects/${PROJECT_ID}/locations/${REGION}/deployments/${DEPLOYMENT_NAME}" \ | jq .latestRevision -r) echo $REVISION_ID
Outputnya mirip dengan yang berikut ini:
projects/PROJECT_ID/locations/REGION/deployments/DEPLOYMENT_NAME/revisions/r-0
Dapatkan lokasi Cloud Storage dari konfigurasi Terraform untuk deployment:
export CONTENT_PATH=$(curl \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://config.googleapis.com/v1alpha2/${REVISION_ID}" \ | jq .applyResults.content -r) echo $CONTENT_PATH
Berikut adalah contoh output dari perintah ini:
gs://PROJECT_ID-REGION-blueprint-config/DEPLOYMENT_NAME/r-0/apply_results/content
Download konfigurasi Terraform dari Cloud Storage ke Cloud Shell:
gcloud storage cp $CONTENT_PATH $HOME --recursive cd $HOME/content/infra
Tunggu hingga pesan
Operation completed
ditampilkan, seperti yang ditunjukkan dalam contoh berikut:Operation completed over 45 objects/268.5 KiB
Lakukan inisialisasi Terraform:
terraform init
Tunggu hingga Anda melihat pesan berikut:
Terraform has been successfully initialized!
Menghapus resource yang di-deploy:
terraform destroy
Terraform menampilkan daftar resource yang akan dimusnahkan.
Jika muncul peringatan tentang variabel yang tidak dideklarasikan, abaikan peringatan tersebut.
Ketika Anda diminta untuk melakukan tindakan, masukkan
yes
.Terraform menampilkan pesan yang menunjukkan progres. Setelah semua resource dihapus, Terraform akan menampilkan pesan berikut:
Destroy complete!
Menghapus artefak deployment:
curl -X DELETE \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://config.googleapis.com/v1alpha2/projects/${PROJECT_ID}/locations/${REGION}/deployments/${DEPLOYMENT_NAME}?force=true&delete_policy=abandon"
Tunggu beberapa detik, lalu verifikasi bahwa artefak deployment telah dihapus:
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://config.googleapis.com/v1alpha2/projects/${PROJECT_ID}/locations/${REGION}/deployments/${DEPLOYMENT_NAME}" \ | jq .error.message
Jika output menampilkan
null
, tunggu beberapa detik, lalu jalankan kembali perintah.Setelah artefak deployment dihapus, pesan seperti yang ditunjukkan pada contoh yang ditampilkan berikut ini:
Resource 'projects/PROJECT_ID/locations/REGION/deployments/DEPLOYMENT_NAME' was not found
Mengirim masukan
Solusi Praktis hanya untuk keperluan informasi dan bukan produk yang didukung secara resmi. Google dapat mengubah atau menghapus solusi tanpa pemberitahuan.
Untuk mengatasi error, tinjau log Cloud Build dan output Terraform.
Untuk mengirim masukan, lakukan hal-hal berikut:
- Untuk dokumentasi, tutorial dalam konsol, atau solusi, gunakan tombol Kirim Masukan pada halaman tersebut.
- Untuk kode Terraform yang tidak dimodifikasi, buat laporan masalah di Repositori GitHub. Laporan masalah pada GitHub ditinjau berdasarkan upaya terbaik dan tidak ditujukan untuk pertanyaan umum.
Untuk masalah terkait produk yang digunakan dalam solusi, hubungi Cloud Customer Care.
Sebaiknya Anda juga meninjau daftar masalah (baik terbuka maupun tertutup) di repositori GitHub solusi.
Langkah selanjutnya
- Jika Anda baru mengenal container dan Kubernetes:
- Coba tutorial ini. Layanan ini ditujukan bagi pengguna Cloud Service Mesh, tetapi berguna bagi siapa saja yang ingin melihat cara beralih dari kode sumber ke container yang berjalan di GKE.
- Baca komik Kubernetes!
- Kunjungi situs dokumentasi Kubernetes.
- Pelajari GKE
- Pelajari Autopilot
- Pelajari Multi Cluster Ingress