Men-deploy contoh Bookinfo
Halaman ini menjelaskan cara men-deploy aplikasi contoh untuk mendemonstrasikan dan Cloud Service Mesh. Jika Anda belum menginstal Cloud Service Mesh, lihat Panduan penginstalan.
Beberapa aplikasi contoh dilengkapi dengan penginstalan Cloud Service Mesh. Ini
memandu Anda dalam menerapkan
BookInfo
contoh. Ini adalah aplikasi toko buku tiruan sederhana yang terdiri dari empat layanan
yang menyediakan laman produk web, detail buku, ulasan (dengan beberapa versi
layanan ulasan), dan rating—semuanya dikelola menggunakan Cloud Service Mesh. Anda dapat
temukan kode sumber dan semua file lain yang digunakan dalam contoh ini di
Direktori penginstalan Cloud Service Mesh di samples/bookinfo
.
Mengaktifkan injeksi otomatis file bantuan
Untuk mengaktifkan injeksi otomatis file bantuan, Anda harus melabeli namespace sehingga webhook injektor sidecar mengaitkan file bantuan yang diinjeksi dengan kontrol tertentu versi baru. Jika Anda menyiapkan tag default, beri label namespace Anda dengan tindakan label injeksi default. Jika tidak, beri label namespace Anda dengan label revisi. Selain itu, label yang Anda tambahkan juga bergantung pada apakah Anda men-deploy Cloud Layanan Cloud terkelola atau menginstal bidang kontrol dalam cluster.
Terkelola
Anda dapat menggunakan label injeksi default atau label revisi untuk namespace Anda
Label injeksi default
Terapkan label injeksi default ke namespace.
kubectl label namespace NAMESPACE istio-injection=enabled istio.io/rev-
Label revisi
Sebelum Anda men-deploy aplikasi, hapus label
istio-injection
sebelumnya dari namespace dan menetapkan labelistio.io/rev=REVISION_LABEL
sebagai gantinya.Untuk mengubahnya ke label revisi tertentu, klik
REVISION_LABEL
, dan ganti dengan label yang sesuai:asm-managed-rapid
untuk saluran cepat,asm-managed
untuk saluran reguler, atauasm-managed-stable
untuk saluran stabil.Label revisi sesuai dengan saluran rilis:
Label revisi Saluran asm-managed
Reguler asm-managed-rapid
Cepat asm-managed-stable
Stabil kubectl label namespace NAMESPACE istio-injection- istio.io/rev=REVISION_LABEL --overwrite
Jika Anda juga men-deploy bidang data terkelola, anotasikan
NAMESPACE
namespace sebagai 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-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-1204-0,istio=istiod,pod-template-hash=5788d57586 istiod-asm-173-3-5788d57586-vsklm 1/1 Running 1 23h app=istiod,istio.io/rev=asm-1204-0,istio=istiod,pod-template-hash=5788d57586
Pada output, di bawah kolom
LABELS
, perhatikan nilaiistiod
label revisi, yang mengikuti awalanistio.io/rev=
. Di sini contoh, nilainya adalahasm-1204-0
.Terapkan label revisi ke namespace default. Dalam perintah berikut ini,
REVISION
adalah nilai label revisiistiod
yang Anda catat pada langkah sebelumnya.kubectl label namespace default istio-injection- istio.io/rev=REVISION --overwrite
Anda dapat mengabaikan pesan
"istio-injection not found"
di {i>output<i} tersebut. Itu berarti bahwa namespace sebelumnya tidak memiliki Labelistio-injection
, yang akan Anda dapatkan di jendela baru penginstalan Cloud Service Mesh atau deployment baru. Karena injeksi otomatis perilaku tidak ditentukan jika namespace memilikiistio-injection
dan label revisi, semua perintahkubectl label
di 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 file bantuan dimasukkan bersama
layanan.
Pada command line di komputer tempat Anda menginstal Cloud Service Mesh, buka root direktori penginstalan Cloud Service Mesh. Jika Anda perlukan, download file penginstalan.
Deploy aplikasi Anda ke namespace default menggunakan
kubectl
:kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
Konfirmasikan 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 harus mengirimkan traffic ke yaitu gateway masuknya.
Jika Anda menginstal Cloud Service Mesh di Google Distributed Cloud, dapatkan Alamat IP untuk gateway masuk yang Anda dikonfigurasi setelah menginstal Cloud Service Mesh
Jika Anda menginstal Cloud Service Mesh di GKE, dapatkan IP eksternal alamat 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 responsnya menunjukkan
200
, artinya aplikasi berfungsi dengan baik dengan Cloud Service Mesh.Untuk melihat halaman web BookInfo, masukkan alamat berikut di browser Anda:
http://EXTERNAL_IP/productpage
Jika Anda memuat ulang halaman beberapa kali, Anda akan melihat versi yang berbeda dari ulasan yang ditampilkan di halaman produk, disajikan dengan gaya {i>round robin<i} (bintang merah, bintang hitam, tanpa bintang).
Sekarang setelah memiliki aplikasi yang menghasilkan traffic, Anda dapat menjelajahi halaman Cloud Service Mesh di konsol Google Cloud untuk melihat metrik dan kemampuan observasi lainnya baru.
Pembersihan
Setelah selesai bereksperimen dengan contoh Bookinfo, hapus dari cluster Anda.
Copot instalasi 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 lebih lanjut contoh Bookinfo.