Men-deploy contoh Bookinfo
Halaman ini menjelaskan cara men-deploy aplikasi contoh untuk mendemonstrasikan Cloud Service Mesh. Jika Anda belum menginstal Cloud Service Mesh, lihat Panduan penginstalan.
Beberapa aplikasi contoh disertakan dengan penginstalan Cloud Service Mesh. Panduan
ini akan memandu Anda men-deploy
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 Cloud Service Mesh. Anda dapat menemukan kode sumber dan semua file lain yang digunakan dalam contoh ini di direktori penginstalan Cloud Service Mesh di samples/bookinfo.
Mengaktifkan injeksi otomatis sidecar
Untuk mengaktifkan injeksi otomatis sidecar, Anda harus memberi label pada namespace sehingga webhook injector sidecar mengaitkan sidecar yang diinjeksi dengan revisi bidang kontrol tertentu. Jika Anda menyiapkan tag default, beri label pada namespace dengan the label injeksi default. Jika tidak, beri label pada namespace dengan label revisi. Selain itu, label yang Anda tambahkan juga bergantung pada apakah Anda men-deploy Cloud Service Mesh terkelola atau menginstal bidang kontrol dalam cluster.
Terkelola
Anda dapat menggunakan label injeksi default atau label revisi untuk namespace
Label injeksi default
Terapkan label injeksi default ke namespace.
kubectl label namespace NAMESPACE istio-injection=enabled istio.io/rev-Label revisi
Sebelum men-deploy aplikasi, hapus label
istio-injectionsebelumnya dari namespace-nya dan tetapkan labelistio.io/rev=REVISION_LABELsebagai gantinya.Untuk mengubahnya menjadi label revisi tertentu, klik
REVISION_LABEL, lalu ganti dengan label yang berlaku:asm-managed-rapiduntuk saluran cepat,asm-manageduntuk saluran reguler, atauasm-managed-stableuntuk saluran stabil.Label revisi sesuai dengan saluran rilis:
Label revisi Saluran asm-managedReguler asm-managed-rapidCepat asm-managed-stableStabil kubectl label namespace NAMESPACE istio-injection- istio.io/rev=REVISION_LABEL --overwriteJika Anda juga men-deploy data plane terkelola opsional, beri anotasi pada namespace
NAMESPACEsebagai berikut:kubectl annotate --overwrite namespace NAMESPACE \ mesh.cloud.google.com/proxy='{"managed":"true"}'
Dalam cluster
Gunakan perintah berikut untuk menemukan label di
istiod:kubectl -n istio-system get pods -l app=istiod --show-labelsOutputnya akan terlihat mirip seperti berikut:
NAME READY STATUS RESTARTS AGE LABELS istiod-asm-173-3-5788d57586-bljj4 1/1 Running 0 23h app=istiod,istio.io/rev=asm-11910-9,istio=istiod,pod-template-hash=5788d57586 istiod-asm-173-3-5788d57586-vsklm 1/1 Running 1 23h app=istiod,istio.io/rev=asm-11910-9,istio=istiod,pod-template-hash=5788d57586Dalam output, di kolom
LABELS, perhatikan nilai label revisiistiod, yang mengikuti awalanistio.io/rev=. Dalam contoh ini, nilainya adalahasm-11910-9.Terapkan label revisi ke namespace default. Dalam perintah berikut,
REVISIONadalah nilai label revisiistiodyang Anda catat pada langkah sebelumnya.kubectl label namespace default istio-injection- istio.io/rev=REVISION --overwriteAnda dapat mengabaikan pesan
"istio-injection not found"dalam output. Artinya, namespace sebelumnya tidak memiliki labelistio-injection, yang seharusnya Anda harapkan dalam penginstalan baru Cloud Service Mesh atau deployment baru. Karena perilaku injeksi otomatis tidak ditentukan saat namespace memiliki labelistio-injectiondan revisi, semua perintahkubectl labeldalam dokumentasi Cloud Service Mesh secara eksplisit memastikan bahwa hanya satu yang ditetapkan.
Men-deploy aplikasi
Setelah injeksi otomatis diaktifkan di namespace default, saat Anda men-deploy layanan aplikasi BookInfo, proxy sidecar akan diinjeksi bersama setiap layanan.
Di command line pada komputer tempat Anda menginstal Cloud Service Mesh, buka root direktori penginstalan Cloud Service Mesh. Jika perlu, download file penginstalan.
Deploy aplikasi Anda ke namespace default menggunakan
kubectl:kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yamlPastikan aplikasi telah di-deploy dengan benar dengan menjalankan perintah berikut:
kubectl get servicesOutput:
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 podOutput:
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.yamlOutput:
gateway.networking.istio.io/bookinfo-gateway created virtualservice.networking.istio.io/bookinfo created
Memvalidasi deployment aplikasi
Untuk melihat apakah aplikasi BookInfo berfungsi, Anda harus mengirim traffic ke gateway masuk.
Jika Anda menginstal Cloud Service Mesh di Google Distributed Cloud, dapatkan alamat IP eksternal untuk gateway masuk yang Anda konfigurasi setelah menginstal Cloud Service Mesh
Jika Anda menginstal Cloud Service Mesh di GKE, dapatkan alamat IP eksternal gateway masuk sebagai berikut:
kubectl get service istio-ingressgateway -n istio-systemOutput:
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
Periksa apakah aplikasi BookInfo berjalan dengan
curl:curl -I http://EXTERNAL_IP/productpageJika respons menampilkan
200, artinya aplikasi berfungsi dengan baik dengan Cloud Service Mesh.Untuk melihat halaman web BookInfo, masukkan alamat berikut di browser Anda:
http://EXTERNAL_IP/productpageJika Anda memuat ulang halaman beberapa kali, Anda akan melihat berbagai versi ulasan yang ditampilkan di halaman produk, yang ditampilkan dalam gaya round robin (bintang merah, bintang hitam, tanpa bintang).
Setelah memiliki aplikasi yang menghasilkan traffic, Anda dapat menjelajahi halaman Cloud Service Mesh di Google Cloud konsol untuk melihat metrik dan fitur kemampuan observasi lainnya.
Pembersihan
Setelah selesai bereksperimen dengan contoh Bookinfo, hapus contoh tersebut dari cluster Anda.
Uninstal Bookinfo menggunakan skrip berikut:
samples/bookinfo/platform/kube/cleanup.shKonfirmasi 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 berikutnya
Pelajari lebih lanjut contoh Bookinfo.