GSP654
Ringkasan
Istio adalah framework open source untuk menghubungkan, mengamankan, dan mengelola microservice. Framework ini dapat digunakan dengan layanan apa pun, termasuk tetapi tidak terbatas pada layanan yang dihosting di cluster Kubernetes. Istio memungkinkan Anda membuat jaringan layanan yang di-deploy dengan load balancing, autentikasi layanan ke layanan, pemantauan, dan lainnya, tanpa memerlukan perubahan apa pun dalam kode layanan.
Sebagai contoh, dalam sistem terdistribusi yang andal, sistem biasanya ingin mencoba ulang permintaan setelah terjadi kegagalan, mungkin dengan penundaan backoff eksponensial. Ada library untuk Java, Golang, dan NodeJS yang melakukan hal ini. Namun, jika menggunakannya dalam aplikasi, setiap aplikasi yang berbeda perlu menyelesaikan masalah tersebut secara mandiri. Sidecar Istio dapat melakukan hal ini untuk aplikasi secara otomatis.
Cloud Service Mesh
Cloud Service Mesh (ASM) didukung oleh Istio. Dengan Cloud Service Mesh, Anda mendapatkan distribusi Istio yang telah diuji oleh perusahaan dan didukung sepenuhnya, sehingga Anda dapat membuat dan men-deploy mesh layanan dengan GKE Enterprise, baik cluster Anda beroperasi di Google Cloud maupun di infrastruktur lokal.
Anda dapat menggunakan profil konfigurasi yang disertakan dengan setelan yang direkomendasikan dan disesuaikan untuk Google Kubernetes Engine atau GKE on Bare Metal.
Terakhir, Cloud Service Mesh memiliki serangkaian fitur dan alat tambahan yang membantu Anda mengamati dan mengelola layanan yang aman dan andal secara terpadu:
-
Metrik dan log layanan untuk traffic HTTP(S) dalam cluster GKE mesh Anda secara otomatis diserap ke Google Cloud.
-
Dasbor layanan yang telah dikonfigurasi sebelumnya memberi Anda informasi yang diperlukan untuk memahami layanan Anda.
-
Telemetri mendalam memungkinkan Anda mempelajari metrik dan log secara mendalam, memfilter, dan memilah data Anda berdasarkan berbagai atribut.
-
Hubungan layanan-ke-layanan secara sekilas membantu Anda memahami siapa yang terhubung ke layanan mana dan layanan yang menjadi dependensi setiap layanan.
-
Tujuan Tingkat Layanan (SLO) memberikan insight tentang kondisi layanan Anda. Anda dapat dengan mudah menentukan SLO dan pemberitahuan berdasarkan standar kondisi layanan Anda sendiri.
Cloud Service Mesh adalah cara termudah dan terlengkap untuk mengimplementasikan mesh layanan berbasis Istio di cluster GKE Enterprise Anda.
Di lab ini, Anda akan menginstal Cloud Service Mesh di cluster GKE.
Yang akan Anda pelajari
Di lab ini, Anda akan mempelajari cara melakukan tugas berikut:
- Menyediakan cluster di Google Kubernetes Engine (GKE)
- Menginstal dan mengonfigurasi Cloud Service Mesh
- Men-deploy Bookinfo, aplikasi multi-layanan yang mendukung Istio
- Mengaktifkan akses eksternal menggunakan Gateway Ingress Istio
- Menggunakan aplikasi Bookinfo
- Memantau performa layanan dengan Dasbor Cloud Service Mesh
Penyiapan dan persyaratan
Sebelum mengklik tombol Start Lab
Baca petunjuk ini. Lab memiliki timer dan Anda tidak dapat menjedanya. Timer yang dimulai saat Anda mengklik Start Lab akan menampilkan durasi ketersediaan resource Google Cloud untuk Anda.
Lab interaktif ini dapat Anda gunakan untuk melakukan aktivitas lab di lingkungan cloud sungguhan, bukan di lingkungan demo atau simulasi. Untuk mengakses lab ini, Anda akan diberi kredensial baru yang bersifat sementara dan dapat digunakan untuk login serta mengakses Google Cloud selama durasi lab.
Untuk menyelesaikan lab ini, Anda memerlukan:
- Akses ke browser internet standar (disarankan browser Chrome).
Catatan: Gunakan jendela Samaran (direkomendasikan) atau browser pribadi untuk menjalankan lab ini. Hal ini akan mencegah konflik antara akun pribadi Anda dan akun siswa yang dapat menyebabkan tagihan ekstra pada akun pribadi Anda.
- Waktu untuk menyelesaikan lab. Ingat, setelah dimulai, lab tidak dapat dijeda.
Catatan: Hanya gunakan akun siswa untuk lab ini. Jika Anda menggunakan akun Google Cloud yang berbeda, Anda mungkin akan dikenai tagihan ke akun tersebut.
Cara memulai lab dan login ke Konsol Google Cloud
-
Klik tombol Start Lab. Jika Anda perlu membayar lab, dialog akan terbuka untuk memilih metode pembayaran.
Di sebelah kanan terdapat panel Lab setup and access yang berisi hal-hal berikut:
- Tombol Open Google Cloud console
- Kredensial sementara (nama pengguna dan sandi) yang harus Anda gunakan untuk lab ini
- Informasi lain, jika diperlukan, untuk menyelesaikan lab ini
Perhatikan bahwa timer lab terletak di dekat bagian atas halaman, yang menampilkan waktu yang tersisa.
-
Klik Open Google Cloud console (atau klik kanan dan pilih Open Link in Incognito Window jika Anda menjalankan browser Chrome).
Lab akan menjalankan resource, lalu membuka tab lain yang menampilkan halaman Sign in.
Tips: Atur tab di jendela terpisah secara berdampingan.
Catatan: Jika Anda melihat dialog Choose an account, klik Use Another Account.
-
Jika perlu, salin Username di bawah dan tempel ke dialog Sign in.
{{{user_0.username | "Username"}}}
Anda juga dapat menemukan Username di panel Lab setup and access.
-
Klik Next.
-
Salin Password di bawah dan tempel ke dialog Welcome.
{{{user_0.password | "Password"}}}
Anda juga dapat menemukan Password di panel Lab setup and access.
-
Klik Next.
Penting: Anda harus menggunakan kredensial yang diberikan lab. Jangan menggunakan kredensial akun Google Cloud Anda.
Catatan: Penggunaan akun Google Cloud sendiri untuk lab ini mungkin dikenai biaya tambahan.
-
Klik untuk melanjutkan ke halaman berikutnya:
- Setujui persyaratan dan ketentuan.
- Jangan tambahkan opsi pemulihan atau autentikasi 2 langkah (karena ini akun sementara).
- Jangan daftar uji coba gratis.
Setelah beberapa saat, Konsol Google Cloud akan terbuka di tab ini.
Catatan: Untuk mengakses produk dan layanan Google Cloud, klik Navigation menu atau ketik nama layanan atau produk di kolom Search.
Mengaktifkan Cloud Shell
Cloud Shell adalah mesin virtual yang dilengkapi dengan berbagai alat pengembangan. Mesin virtual ini menawarkan direktori beranda persisten berkapasitas 5 GB dan berjalan di Google Cloud. Cloud Shell menyediakan akses command-line untuk resource Google Cloud Anda.
-
Klik Activate Cloud Shell
di bagian atas Konsol Google Cloud.
-
Klik jendela berikut:
- Lanjutkan melalui jendela informasi Cloud Shell.
- Beri otorisasi ke Cloud Shell untuk menggunakan kredensial Anda guna melakukan panggilan Google Cloud API.
Setelah terhubung, Anda sudah diautentikasi, dan project ditetapkan ke Project_ID, . Output berisi baris yang mendeklarasikan Project_ID untuk sesi ini:
Project Cloud Platform Anda dalam sesi ini disetel ke {{{project_0.project_id | "PROJECT_ID"}}}
gcloud adalah alat command line untuk Google Cloud. Alat ini sudah terinstal di Cloud Shell dan mendukung pelengkapan command line.
- (Opsional) Anda dapat menampilkan daftar nama akun yang aktif dengan perintah ini:
gcloud auth list
- Klik Authorize.
Output:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
Untuk menetapkan akun aktif, jalankan:
$ gcloud config set account `ACCOUNT`
- (Opsional) Anda dapat menampilkan daftar ID project dengan perintah ini:
gcloud config list project
Output:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
Catatan: Untuk mendapatkan dokumentasi gcloud yang lengkap di Google Cloud, baca panduan ringkasan gcloud CLI.
Tugas 1. Menyiapkan project
Memverifikasi konfigurasi SDK
-
Di Cloud Shell, pastikan bahwa akun default Anda telah dikonfigurasi.
Pastikan Cloud SDK dikonfigurasi untuk menggunakan akun pengguna yang dibuat Qwiklabs.
gcloud config list
Output:
[component_manager]
disable_update_check = True
[compute]
gce_metadata_read_timeout_sec = 5
[core]
account = student-xx-xxxx@qwiklabs.net
disable_usage_reporting = False
project = qwiklabs-gcp-yy-####
[metrics]
environment = devshell
Your active configuration is: [cloudshell-#####]
-
Perbarui konfigurasi project jika diperlukan.
Jika SDK tidak memiliki project default yang ditetapkan dengan benar, perbarui konfigurasinya. Ganti [project_id] dengan nama project yang disediakan di bagian credential pada halaman petunjuk Qwiklabs:
gcloud config set project [project_id]
Mengonfigurasi variabel lingkungan
- Konfigurasi variabel lingkungan yang akan digunakan dalam perintah penyiapan dan penginstalan:
export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe ${PROJECT_ID} \
--format="value(projectNumber)")
export CLUSTER_NAME=central
export CLUSTER_ZONE={{{project_0.default_zone | zone}}}
export WORKLOAD_POOL=${PROJECT_ID}.svc.id.goog
export MESH_ID="proj-${PROJECT_NUMBER}"
Catatan:
-
WORKLOAD_POOL akan digunakan untuk mengaktifkan Workload Identity, yang merupakan cara
yang direkomendasikan untuk mengakses
layanan Google Cloud dengan aman
dari aplikasi GKE.
-
MESH_ID akan digunakan untuk
menetapkan label mesh_id pada cluster, yang diperlukan
agar metrik ditampilkan di Dasbor
Cloud Service Mesh di Konsol Cloud.
Memverifikasi izin yang memadai
- Di Cloud Shell, pastikan bahwa akun pengguna Anda memiliki peran Owner yang ditetapkan:
gcloud projects get-iam-policy $PROJECT_ID \
--flatten="bindings[].members" \
--filter="bindings.members:user:$(gcloud config get-value core/account 2>/dev/null)"
Output:
bindings:
members: user:student-xx-xxxx@qwiklabs.net
role: roles/owner
...
Catatan: Pengguna siswa Anda juga memiliki hak istimewa viewer.
Catatan: Untuk menyelesaikan penyiapan, Anda memerlukan izin yang terkait dengan peran berikut:
- Project Editor
- Kubernetes Engine Admin
- Project IAM Admin
- GKE Hub Admin
- Service Account Admin
- Service Account key Admin
Jika Anda memiliki peran Owner, Anda memiliki semua izin ini dan lainnya,
sehingga Anda siap untuk melanjutkan.
Tugas 2. Menyiapkan cluster GKE
Membuat cluster
- Jalankan perintah berikut di Cloud Shell untuk membuat cluster Kubernetes
central:
gcloud config set compute/zone ${CLUSTER_ZONE}
gcloud container clusters create ${CLUSTER_NAME} \
--machine-type=e2-standard-4 \
--num-nodes=4 \
--subnetwork=default \
--release-channel=regular \
--labels mesh_id=${MESH_ID} \
--workload-pool=${WORKLOAD_POOL} \
--logging=SYSTEM,WORKLOAD
Output:
NAME: central
LOCATION: {{{project0.default_zone | zone}}}
MASTER_VERSION: 1.35.3-gke.2190000
MASTER_IP: 35.245.2.147
MACHINE_TYPE: e2-standard-4
NODE_VERSION: 1.35.3-gke.2190000
NUM_NODES: 4
STATUS: RUNNING
Proses pembuatan cluster akan memakan waktu beberapa menit.
- Setelah pembuatan cluster selesai, jalankan urutan perintah ini untuk mengaktifkan
mesh layanan fleet, mengonfigurasi izin administrator, dan menyiapkan namespace istio-system.
gcloud container fleet mesh enable
kubectl create clusterrolebinding cluster-admin-binding \
--clusterrole=cluster-admin \
--user=$(gcloud config get-value account)
kubectl create namespace istio-system
- Konfigurasi kubectl untuk mengarah ke cluster.
gcloud container clusters get-credentials ${CLUSTER_NAME} \
--zone $CLUSTER_ZONE \
--project $PROJECT_ID
Tugas 3. Bersiap menginstal Cloud Service Mesh
Google menyediakan alat, asmcli, yang memungkinkan Anda menginstal atau mengupgrade Cloud Service Mesh. Jika Anda mengizinkannya, asmcli akan mengonfigurasi project dan cluster Anda sebagai berikut:
- Memberi Anda izin Identity and Access Management (IAM) yang diperlukan di project Google Cloud Anda.
- Mengaktifkan Google API yang diperlukan di project Cloud Anda.
- Menetapkan label pada cluster yang mengidentifikasi mesh.
- Membuat akun layanan yang memungkinkan komponen bidang data, seperti proxy sidecar, mengakses data dan resource project Anda dengan aman.
- Mendaftarkan cluster ke fleet jika belum terdaftar.
Anda akan menggunakan asmcli untuk menginstal Cloud Service Mesh di cluster Anda.
- Download versi yang menginstal Cloud Service Mesh 1.28 ke direktori kerja saat ini:
curl https://storage.googleapis.com/csm-artifacts/asm/asmcli_1.28 > asmcli
- Buat agar skrip dapat dieksekusi:
chmod +x asmcli
- Aktifkan Service Mesh API:
gcloud services enable mesh.googleapis.com
Tugas 4. Memvalidasi Cloud Service Mesh
Anda dapat menjalankan asmcli validate untuk memastikan bahwa project dan cluster Anda telah disiapkan sebagaimana diperlukan untuk menginstal Cloud Service Mesh. Dengan opsi ini, asmcli tidak membuat perubahan apa pun pada project atau cluster Anda, dan tidak menginstal Cloud Service Mesh.
asmcli memvalidasi bahwa:
- Lingkungan Anda memiliki alat yang diperlukan.
- Cluster memenuhi persyaratan minimum.
- Anda memiliki izin yang diperlukan pada project yang ditentukan.
- Project ini telah mengaktifkan semua Google API yang diperlukan.
- Jalankan perintah berikut untuk memvalidasi konfigurasi Anda dan mendownload file penginstalan serta paket
asm ke direktori OUTPUT_DIR:
./asmcli validate \
--project_id $PROJECT_ID \
--cluster_name $CLUSTER_NAME \
--cluster_location $CLUSTER_ZONE \
--fleet_id $PROJECT_ID \
--output_dir ./asm_output
Catatan: Harap abaikan error validasi apa pun karena dalam kasus ini, validasi mengonfirmasi bahwa cluster memiliki semua komponen yang diperlukan untuk menginstal ASM, bukan bahwa ASM telah diinstal dengan benar.
Jika berhasil, Anda akan melihat output seperti berikut:
asmcli: Setting up necessary files...
asmcli: Using asm_kubeconfig as the kubeconfig...
asmcli: Checking installation tool dependencies...
asmcli: Fetching/writing GCP credentials to kubeconfig file...
asmcli: Verifying connectivity (10s)...
asmcli: kubeconfig set to asm_kubeconfig
asmcli: using context gke_example-project-12345_us-west1_cluster-2
asmcli: Getting account information...
asmcli: Downloading ASM..
asmcli: Downloading ASM kpt package...
fetching package "/asm" from "https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages" to "asm"
asmcli: Checking required APIs...
asmcli: Checking for project example-project-12345...
asmcli: Reading labels for us-west1/cluster-2...
asmcli: Checking for istio-system namespace...
asmcli: Confirming node pool requirements for example-project-12345/us-west1/cluster-2...
asmcli: Checking Istio installations...
asmcli: [WARNING]: There is no way to validate that the meshconfig API has been initialized.
asmcli: [WARNING]: This needs to happen once per GCP project. If the API has not been initialized
asmcli: [WARNING]: for example-project-12345, please re-run this tool with the --enable_gcp_components
asmcli: [WARNING]: flag. Otherwise, installation will succeed but Cloud Service Mesh
asmcli: [WARNING]: will not function correctly.
asmcli: Successfully validated all requirements to install ASM.
Catatan: Lab ini akan menyediakan flag yang diperlukan untuk menangani peringatan dari perintah validasi.
Tugas 5. Menginstal Cloud Service Mesh
Perintah berikut akan menginstal Cloud Service Mesh. Flag --enable_all memungkinkan skrip mengaktifkan Google API yang diperlukan, menetapkan izin Identity and Access Management, dan melakukan update yang diperlukan pada cluster Anda, yang mencakup pengaktifan Workload Identity GKE.
- Jalankan perintah berikut untuk menginstal Cloud Service Mesh:
./asmcli install \
--project_id $PROJECT_ID \
--cluster_name $CLUSTER_NAME \
--cluster_location $CLUSTER_ZONE \
--fleet_id $PROJECT_ID \
--output_dir ./asm_output \
--enable_all \
--option legacy-default-ingressgateway \
--ca mesh_ca \
--enable_gcp_components
Anda akan melihat output yang mirip dengan contoh berikut:
asmcli: *****************************
asmcli: Successfully installed ASM.
Klik Periksa progres saya untuk memverifikasi tujuan. Menginstal Cloud Service Mesh
Menginstal gateway ingress
Cloud Service Mesh memberi Anda opsi untuk men-deploy dan mengelola gateway sebagai bagian dari mesh layanan Anda. Gateway menjelaskan load balancer yang beroperasi di edge mesh yang menerima koneksi HTTP/TCP masuk atau keluar. Gateway adalah proxy Envoy yang memberi Anda kontrol terperinci atas traffic yang masuk dan keluar dari mesh.
- Buat namespace untuk gateway ingress jika Anda belum memilikinya. Gateway adalah workload pengguna, dan sebagai praktik terbaik, gateway tidak boleh di-deploy di namespace bidang kontrol.
GATEWAY_NS=istio-gateway
kubectl create namespace $GATEWAY_NS
-
Aktifkan injeksi otomatis di gateway dengan menerapkan label revisi pada namespace gateway. Label revisi digunakan oleh webhook injektor sidecar untuk mengaitkan proxy yang diinjeksi dengan revisi bidang kontrol tertentu.
- Gunakan perintah berikut untuk menemukan label revisi pada
istiod:
kubectl get deploy -n istio-system -l app=istiod -o \
jsonpath={.items[*].metadata.labels.'istio\.io\/rev'}'{"\n"}'
- Simpan nilai tersebut dalam variabel lingkungan:
REVISION=$(kubectl get deploy -n istio-system -l app=istiod -o \
jsonpath={.items[*].metadata.labels.'istio\.io\/rev'}'{"\n"}')
- Terapkan label revisi ke namespace. Dalam perintah berikut, REVISION adalah nilai label revisi istiod yang Anda catat di langkah sebelumnya:
kubectl label namespace $GATEWAY_NS \
istio.io/rev=$REVISION --overwrite
- Aktifkan injeksi proxy Istio
kubectl label namespace default istio-injection=enabled
kubectl label namespace $GATEWAY_NS istio-injection=enabled
-
Ubah ke direktori yang Anda tentukan di --output_dir:
cd ~/asm_output
- Anda dapat men-deploy contoh konfigurasi gateway ingress yang terletak di direktori
samples/gateways/istio-ingressgateway/ sebagaimana adanya, atau memodifikasinya sesuai kebutuhan:
kubectl apply -n $GATEWAY_NS \
-f samples/gateways/istio-ingressgateway
Mengaktifkan injeksi sidecar
Cloud Service Mesh menggunakan proxy sidecar untuk meningkatkan keamanan, keandalan, dan kemampuan observasi jaringan. Dengan Cloud Service Mesh, fungsi-fungsi ini diabstraksikan dari container utama aplikasi dan diimplementasikan dalam proxy di luar proses umum yang dikirimkan sebagai container terpisah dalam Pod yang sama.
-
Sebelum men-deploy workload, pastikan untuk mengonfigurasi injeksi proxy sidecar agar Cloud Service Mesh dapat memantau dan mengamankan traffic.
-
Untuk mengaktifkan injeksi otomatis, terapkan label revisi dan hapus label injeksi istio jika ada.
-
Dalam perintah berikut, Anda menentukan namespace, default, tempat Anda ingin mengaktifkan injeksi otomatis, dan REVISION adalah label revisi yang Anda catat di langkah sebelumnya:
kubectl label namespace default istio-injection-istio.io/rev=$REVISION --overwrite
Catatan: Anda dapat mengabaikan pesan "istio-injection" not found dalam output. Artinya, namespace tersebut sebelumnya tidak memiliki label injeksi istio, yang seharusnya Anda harapkan dalam penginstalan baru Cloud Service Mesh atau deployment baru.
Catatan: Injeksi proxy sidecar kini diaktifkan untuk workload mendatang.
Jika cluster ini sudah menjalankan workload, Anda perlu memulai ulang pod untuk memicu ulang injeksi otomatis.
Tugas 6. Men-deploy Bookinfo, aplikasi multi-layanan yang mendukung Istio
Dalam tugas ini, Anda akan menyiapkan contoh aplikasi microservice, yaitu Bookinfo, dan menjelajahi aplikasi tersebut.
Ringkasan Bookinfo
Setelah ASM dikonfigurasi dan diverifikasi, Anda dapat men-deploy salah satu contoh aplikasi yang disediakan bersama penginstalannya — BookInfo. Ini adalah aplikasi toko buku tiruan sederhana yang terdiri dari empat microservice, dan semuanya dikelola menggunakan Istio. Setiap microservice ditulis dalam bahasa yang berbeda, untuk menunjukkan cara menggunakan Istio di lingkungan multibahasa, tanpa perubahan apa pun pada kode.
Berikut adalah keempat microservice tersebut:
-
productpage: memanggil microservice details dan reviews untuk mengisi halaman.
-
details: berisi informasi buku.
-
reviews: berisi ulasan buku. Microservice ini juga memanggil microservice ratings.
-
ratings: berisi informasi peringkat buku yang menyertai ulasan buku.
Ada 3 versi microservice reviews:
- Reviews v1 tidak memanggil layanan rating.
- Reviews v2 memanggil layanan rating dan menampilkan setiap rating sebagai 1–5 bintang berwarna hitam.
- Reviews v3 memanggil layanan rating dan menampilkan setiap rating sebagai 1–5 bintang berwarna merah.
Arsitektur end-to-end aplikasi terlihat seperti ini:

Anda dapat menemukan kode sumber dan semua file lain yang digunakan dalam contoh ini di direktori samples/bookinfo Istio.
Men-deploy Bookinfo
-
Lihat .yaml yang menjelaskan aplikasi Bookinfo:
istio_dir=$(ls -d istio-* | tail -n 1)
cd $istio_dir
cat samples/bookinfo/platform/kube/bookinfo.yaml
Cari containers untuk melihat bahwa setiap deployment memiliki satu container, untuk setiap versi dari setiap layanan di aplikasi Bookinfo.
-
Di Cloud Shell, gunakan perintah berikut untuk memasukkan sidecar proxy bersama dengan setiap Pod aplikasi yang di-deploy:
kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
Catatan: Istio menggunakan versi lanjutan dari proxy Envoy open source, yaitu proxy berperforma tinggi yang dikembangkan dalam C++, untuk memediasi semua traffic masuk dan keluar untuk semua layanan di mesh layanan.
Istio memanfaatkan banyak fitur bawaan Envoy, termasuk penemuan layanan dinamis, load balancing, TLS termination, proxy HTTP/2 & gRPC, pemutus arus listrik, health check, peluncuran bertahap dengan pemisahan traffic berbasis %, injeksi kesalahan, dan metrik yang beragam.
Output:
service/details created
serviceaccount/bookinfo-details created
deployment.apps/details-v1 created
service/ratings created
serviceaccount/bookinfo-ratings created
deployment.apps/ratings-v1 created
service/reviews created
serviceaccount/bookinfo-reviews created
deployment.apps/reviews-v1 created
deployment.apps/reviews-v2 created
deployment.apps/reviews-v3 created
service/productpage created
serviceaccount/bookinfo-productpage created
deployment.apps/productpage-v1 created
Klik Periksa progres saya untuk memverifikasi tujuan. Men-deploy aplikasi BookInfo
Mengaktifkan akses eksternal menggunakan Gateway Ingress Istio
Setelah layanan Bookinfo aktif dan berjalan, Anda harus membuat aplikasi dapat diakses dari luar cluster Kubernetes, misalnya dari browser. Gateway Istio digunakan untuk tujuan ini.
-
Lihat .yaml yang menjelaskan konfigurasi untuk gateway ingress aplikasi:
cat samples/bookinfo/networking/bookinfo-gateway.yaml
Cari resource mesh Gateway dan VirtualService yang di-deploy. Gateway mengekspos layanan kepada pengguna di luar mesh layanan, dan memungkinkan fitur Istio seperti pemantauan dan aturan rute diterapkan ke traffic yang memasuki cluster.
-
Konfigurasi gateway ingress untuk aplikasi, yang mengekspos IP eksternal yang akan Anda gunakan nanti:
kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml
Output:
gateway.networking.istio.io/bookinfo-gateway created
virtualservice.networking.istio.io/bookinfo created
Memverifikasi deployment Bookinfo
-
Pastikan aplikasi telah di-deploy dengan benar, tinjau layanan, pod, dan gateway ingress:
kubectl get services
Output:
NAME TYPE ...
details ClusterIP ...
kubernetes ClusterIP ...
productpage ClusterIP ...
ratings ClusterIP ...
reviews ClusterIP ...
-
Tinjau pod aplikasi yang berjalan:
kubectl get pods
Output:
NAME READY STATUS RESTARTS AGE
details-v1-79f774bdb9-6l54w 2/2 Running 0 101s
productpage-v1-6b746f74dc-4xccm 2/2 Running 0 100s
ratings-v1-b6994bb9-7g4z2 2/2 Running 0 100s
reviews-v1-545db77b95-hkh9p 2/2 Running 0 100s
reviews-v2-7bf8c9648f-cmsxj 2/2 Running 0 100s
reviews-v3-84779c7bbc-8b8qp 2/2 Running 0 100s
Anda mungkin perlu menjalankan kembali perintah ini hingga Anda melihat bahwa keenam pod tersebut berstatus Running.
-
Pastikan bahwa aplikasi Bookinfo berjalan dengan mengirimkan permintaan curl ke aplikasi tersebut dari beberapa Pod, dalam cluster, misalnya dari ratings:
kubectl exec -it $(kubectl get pod -l app=ratings \
-o jsonpath='{.items[0].metadata.name}') \
-c ratings -- curl productpage:9080/productpage | grep -o "<title>.*</title>"
Output:
Aplikasi Toko Buku Sederhana
-
Pastikan gateway ingress telah dibuat:
kubectl get gateway
Output:
NAME AGE
bookinfo-gateway 20m
-
Dapatkan alamat IP eksternal dari gateway ingress:
kubectl get svc istio-ingressgateway -n istio-system
Output:
NAME TYPE ... EXTERNAL-IP ...
istio-ingressgateway LoadBalancer ... 34.72.220.30 ...
Dalam contoh ini, IP eksternal gateway ingress adalah 34.72.220.30.
-
Sekarang jalankan perintah berikut, ganti [EXTERNAL-IP] dengan IP eksternal yang dihasilkan dari perintah sebelumnya:
export GATEWAY_URL=[EXTERNAL-IP]
-
Periksa apakah aplikasi Bookinfo berjalan dengan mengirimkan permintaan curl ke aplikasi tersebut dari luar cluster:
curl -I http://${GATEWAY_URL}/productpage
Output:
HTTP/1.1 200 OK
content-type: text/html; charset=utf-8
content-length: 4183
server: istio-envoy
...
Tugas 7. Menggunakan aplikasi Bookinfo
Mencoba aplikasi di browser Web Anda
-
Arahkan browser Anda ke http://[$GATEWAY_URL]/productpage untuk melihat halaman web BookInfo. Jangan lupa untuk mengganti [$GATEWAY_URL] dengan alamat IP eksternal Anda yang berfungsi.

-
Muat ulang halaman beberapa kali.
Perhatikan bagaimana Anda melihat tiga versi ulasan yang berbeda, karena kita belum menggunakan Istio untuk mengontrol perutean versi.
Ada tiga layanan ulasan buku yang berbeda yang dipanggil dengan gaya round-robin:
- tanpa bintang
- bintang berwarna hitam
- bintang berwarna merah
Beralih di antara ketiga bintang tersebut adalah perilaku perutean/penyeimbangan Kubernetes yang normal.
Menghasilkan beban latar belakang yang stabil
Jalankan utilitas siege untuk menyimulasikan traffic ke Bookinfo.
-
Di Cloud Shell, instal siege:
Siege adalah aplikasi utilitas untuk membuat beban terhadap situs Web.
sudo apt install siege
-
Gunakan siege untuk membuat traffic ke layanan Anda:
siege http://${GATEWAY_URL}/productpage
Tugas 8. Mengevaluasi performa layanan menggunakan dasbor Cloud Service Mesh
Mengumpulkan data dari tampilan tabel Services.
- Di Konsol, buka Navigation menu > Kubernetes Engine > Service Mesh.
Jika diminta, klik Enable untuk mengaktifkan Service Mesh API.
-
Lihat bagian Service.
Berapa banyak layanan yang tercantum?
-
Klik layanan productpage untuk melihat perincian dan detail selengkapnya.

Perhatikan ringkasan di bagian atas yang menjelaskan permintaan/detik, tingkat error, latensi, dan penggunaan resource saat ini.
Jika Anda tidak melihat Requests > 0, coba keluar dan masuk kembali ke layanan productpage setelah beberapa menit.
-
Klik opsi Metrics. Pelajari berbagai grafik dan opsi perinciannya.
- Berapa tingkat permintaan saat ini, dan bagaimana perubahannya dari waktu ke waktu?
- Berapa tingkat error saat ini, dan bagaimana perubahannya dari waktu ke waktu?
- Latensi apa yang Anda lihat dalam diagram?
- Berapa ukuran permintaan median?
- Apa yang dimaksud dengan ukuran respons median?
- Berapa penggunaan CPU agregatnya?
-
Klik opsi Connected Services.
Opsi ini mencantumkan layanan lain yang membuat permintaan masuk ke productpage, dan layanan yang menerima permintaan keluar dari productpage.
- Layanan apa yang melakukan panggilan ke layanan productpage?
- Layanan apa yang dipanggil oleh layanan productpage?
- Apakah mTLS diterapkan pada panggilan antarlayanan?
Catatan: Layanan ratings biasanya tidak mengirimkan permintaan
ke layanan productpage. Layanan ratings ditampilkan di sini karena Anda
menggunakan layanan tersebut untuk mengeluarkan permintaan pengujian sebagai bagian dari lab ini.
-
Kembali ke dasbor Cloud Service Mesh dengan mengklik logo Cloud Service Mesh di pojok kiri atas.
Pada saat ini, Anda dapat menjelajahi atau mempelajari layanan lainnya.
Catatan: Bagian atas dasbor menampilkan informasi tentang Tujuan Tingkat Layanan (SLO) dan Pemberitahuan.
SLO adalah target untuk Indikator Tingkat Layanan (SLI); SLO mencerminkan
definisi Anda tentang seberapa baik performa layanan. Contoh SLO adalah 99,9%
permintaan per jam menampilkan respons 200. Anda dapat menentukan kebijakan pemberitahuan yang akan menghubungi staf yang sedang bertugas saat layanan Anda gagal memenuhi SLO-nya.
Cari lab lain yang memungkinkan Anda menentukan dan menguji SLO.
Menggunakan tampilan Topologi untuk memvisualisasikan mesh Anda dengan lebih baik
-
Di dasbor Cloud Service Mesh, lihat topologinya.
Di sini, Anda mungkin perlu menunggu beberapa menit agar grafik topologi muncul.
-
Atur ulang node dalam grafik hingga Anda dapat dengan mudah memvisualisasikan hubungan antara layanan dan workload.
Ingat, permintaan eksternal dimulai di productpage. Anda dapat men-scroll kembali dan mempelajari diagram arsitektur Bookinfo di Ringkasan Bookinfo.
Gambar Anda mungkin terlihat seperti ini:

Catatan: Anda mungkin perlu mengklik Expand untuk melihat semua node.
-
Klik node layanan productpage.
Anda akan melihat kartu detail layanan:

- Berapa banyak permintaan per detik yang diterima layanan ini?
- Berapa latensi median dan 99%?
-
Sekarang, arahkan kursor ke setiap node layanan dan perhatikan statistik edge.
- Berapa banyak permintaan/detik yang diterima layanan productpage,
dan dari mana?
- Berapa banyak permintaan per detik yang diteruskan layanan ke workload
productpage-v1?
Anda akan melihat detail traffic seperti ini:

-
Lihat perincian salah satu workload hingga Anda dapat melihat deployment, set replika, dan Pod.
Hasilnya akan terlihat seperti ini:

Selamat!
Di lab ini, Anda telah men-deploy cluster GKE, Cloud Service Mesh, dan aplikasi yang mendukung Istio. Anda juga menggunakan dasbor Cloud Service Mesh untuk lebih memahami performa layanan dan topologi aplikasi Anda.
Langkah berikutnya/Pelajari lebih lanjut
Sertifikasi dan pelatihan Google Cloud
...membantu Anda mengoptimalkan teknologi Google Cloud. Kelas kami mencakup keterampilan teknis dan praktik terbaik untuk membantu Anda memahami dengan cepat dan melanjutkan proses pembelajaran. Kami menawarkan pelatihan tingkat dasar hingga lanjutan dengan opsi on demand, live, dan virtual untuk menyesuaikan dengan jadwal Anda yang sibuk. Sertifikasi membantu Anda memvalidasi dan membuktikan keterampilan serta keahlian Anda dalam teknologi Google Cloud.
Manual Terakhir Diperbarui pada 09 Juni 2026
Lab Terakhir Diuji pada 09 Juni 2026
Hak cipta 2026 Google LLC. Semua hak dilindungi undang-undang. Google dan logo Google adalah merek dagang dari Google LLC. Semua nama perusahaan dan produk lain mungkin adalah merek dagang masing-masing perusahaan yang bersangkutan.