Halaman ini menjelaskan cara men-deploy contoh aplikasi untuk mendemonstrasikan Anthos Service Mesh. Jika Anda belum menginstal Anthos Service Mesh, lihat bagian Panduan penginstalan untuk memilih panduan yang tepat bagi Anda.
Beberapa aplikasi contoh disertai dengan penginstalan Anthos Service Mesh. Panduan
ini akan menuntun Anda dalam men-deploy contoh
BookInfo. Ini adalah aplikasi toko buku tiruan sederhana yang terdiri dari empat layanan yang menyediakan halaman produk web, detail buku, ulasan (dengan beberapa versi layanan ulasan), dan rating—semuanya dikelola menggunakan Anthos Service Mesh. Anda dapat menemukan kode sumber dan semua file lain yang digunakan dalam contoh ini di direktori penginstalan Anthos Service Mesh di samples/bookinfo
.
Mengaktifkan injeksi otomatis file bantuan
Guna mengaktifkan injeksi file bantuan otomatis (injeksi otomatis) untuk aplikasi contoh, Anda harus menambahkan label revisi ke namespace sampel. Label yang Anda tambahkan bergantung pada apakah Anda telah men-deploy bidang kontrol yang dikelola Google Anthos Service Mesh atau menginstal bidang kontrol dalam cluster. Label revisi digunakan oleh webhook injeksi file bantuan untuk mengaitkan file bantuan yang dimasukkan dengan revisi bidang kontrol tertentu.
Dalam cluster
Gunakan perintah berikut untuk menemukan label di
istiod
:kubectl -n istio-system get pods -l app=istiod --show-labels
Outputnya terlihat mirip dengan yang berikut ini:
NAME READY STATUS RESTARTS AGE LABELS istiod-asm-173-3-5788d57586-bljj4 1/1 Running 0 23h app=istiod,istio.io/rev=asm-198-6,istio=istiod,pod-template-hash=5788d57586 istiod-asm-173-3-5788d57586-vsklm 1/1 Running 1 23h app=istiod,istio.io/rev=asm-198-6,istio=istiod,pod-template-hash=5788d57586
Pada output, di kolom
LABELS
, catat nilai label revisiistiod
, yang mengikuti awalanistio.io/rev=
. Dalam contoh ini, nilainya adalahasm-198-6
.Terapkan label revisi ke namespace default. Dalam perintah berikut,
REVISION
adalah nilai label revisiistiod
yang Anda catat di langkah sebelumnya.kubectl label namespace default istio-injection- istio.io/rev=REVISION --overwrite
Anda dapat mengabaikan pesan
"istio-injection not found"
di output. Artinya, namespace sebelumnya tidak memiliki labelistio-injection
, yang akan Anda harapkan dalam penginstalan baru Anthos Service Mesh atau deployment baru. Karena injeksi otomatis gagal jika namespace memilikiistio-injection
dan label revisi, semua perintahkubectl label
dalam dokumentasi Anthos Service Mesh mencakup penghapusan labelistio-injection
.
Dikelola Google
Terapkan label revisi asm-managed
ke namespace default
:
kubectl label namespace default istio-injection- istio.io/rev=asm-managed --overwrite
Anda dapat mengabaikan pesan "istio-injection not found"
di
output. Artinya, namespace sebelumnya tidak memiliki label istio-injection
, yang akan Anda harapkan dalam penginstalan baru Anthos Service Mesh atau deployment baru. Karena injeksi otomatis gagal jika namespace memiliki istio-injection
dan label revisi, semua perintah kubectl label
dalam dokumentasi Anthos Service Mesh mencakup penghapusan label istio-injection
.
Men-deploy aplikasi
Setelah injeksi otomatis diaktifkan di namespace default
, saat Anda men-deploy layanan aplikasi BookInfo, proxy file bantuan dimasukkan bersama setiap layanan.
Pada command line di komputer tempat Anda menginstal Anthos Service Mesh, buka root direktori penginstalan Anthos Service Mesh. Jika perlu, download file penginstalan.
Deploy aplikasi Anda ke namespace default menggunakan
kubectl
:kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
Pastikan bahwa aplikasi telah di-deploy dengan benar dengan menjalankan perintah berikut:
kubectl get services
Output:
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE details 10.0.0.31 <none> 9080/TCP 6m kubernetes 10.0.0.1 <none> 443/TCP 7d productpage 10.0.0.120 <none> 9080/TCP 6m ratings 10.0.0.15 <none> 9080/TCP 6m reviews 10.0.0.170 <none> 9080/TCP 6m
dan
kubectl get pod
Output:
NAME READY STATUS RESTARTS AGE details-v1-1520924117-48z17 2/2 Running 0 6m productpage-v1-560495357-jk1lz 2/2 Running 0 6m ratings-v1-734492171-rnr5l 2/2 Running 0 6m reviews-v1-874083890-f0qf0 2/2 Running 0 6m reviews-v2-1343845940-b34q5 2/2 Running 0 6m reviews-v3-1813607990-8ch52 2/2 Running 0 6m
Terakhir, tentukan perutean gateway masuk untuk aplikasi:
kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml
Output:
gateway.networking.istio.io/bookinfo-gateway created virtualservice.networking.istio.io/bookinfo created
Memvalidasi deployment aplikasi
Untuk melihat apakah aplikasi BookInfo berfungsi, Anda perlu mengirim traffic ke gateway masuk.
Jika Anda menginstal Anthos Service Mesh di GKE pada VMware, dapatkan alamat IP eksternal untuk gateway masuk yang Anda konfigurasi setelah menginstal Anthos Service Mesh
Jika Anda menginstal Anthos Service Mesh di GKE, dapatkan alamat IP eksternal gateway masuk sebagai berikut:
kubectl get service istio-ingressgateway -n istio-system
Output:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingressgateway LoadBalancer 10.19.247.233 35.239.7.64 80:31380/TCP,443:31390/TCP,31400:31400/TCP 27m
Dalam contoh ini, alamat IP layanan masuk adalah
35.239.7.64
.
Mencoba aplikasi
Pastikan aplikasi BookInfo berjalan dengan
curl
:curl -I http://EXTERNAL_IP/productpage
Jika respons menunjukkan
200
, berarti aplikasi berfungsi dengan baik dengan Anthos Service Mesh.Untuk melihat halaman web BookInfo, masukkan alamat berikut di browser Anda:
http://EXTERNAL_IP/productpage
Jika memuat ulang halaman beberapa kali, Anda akan melihat berbagai versi ulasan yang ditampilkan di halaman produk, yang ditampilkan dengan gaya round robin (bintang merah, bintang hitam, tanpa bintang).
Setelah memiliki aplikasi yang menghasilkan traffic, Anda dapat menjelajahi halaman Anthos Service Mesh di Konsol Google Cloud untuk melihat metrik dan fitur kemampuan observasi lainnya.
Pembersihan
Setelah selesai bereksperimen dengan sampel Bookinfo, hapus sampel tersebut dari cluster Anda.
Uninstal Bookinfo menggunakan skrip berikut:
samples/bookinfo/platform/kube/cleanup.sh
Konfirmasi penonaktifan:
kubectl get virtualservices #-- there should be no virtual services kubectl get destinationrules #-- there should be no destination rules kubectl get gateway #-- there should be no gateway kubectl get pods #-- the Bookinfo pods should be deleted
Langkah selanjutnya
Pelajari contoh Bookinfo lebih lanjut.