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

  1. 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 label istio.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, atau asm-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
    
  2. Jika Anda juga men-deploy bidang data terkelola, anotasikan NAMESPACEnamespace sebagai berikut:

    kubectl annotate --overwrite namespace NAMESPACE \
    mesh.cloud.google.com/proxy='{"managed":"true"}'
    

Dalam cluster

  1. 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 nilai istiod label revisi, yang mengikuti awalan istio.io/rev=. Di sini contoh, nilainya adalah asm-1204-0.

  2. Terapkan label revisi ke namespace default. Dalam perintah berikut ini, REVISION adalah nilai label revisi istiod 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 Label istio-injection, yang akan Anda dapatkan di jendela baru penginstalan Cloud Service Mesh atau deployment baru. Karena injeksi otomatis perilaku tidak ditentukan jika namespace memiliki istio-injection dan label revisi, semua perintah kubectl 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.

  1. Pada command line di komputer tempat Anda menginstal Cloud Service Mesh, buka root direktori penginstalan Cloud Service Mesh. Jika Anda perlukan, download file penginstalan.

  2. Deploy aplikasi Anda ke namespace default menggunakan kubectl:

    kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
    
  3. 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
  4. 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

  1. 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.

  2. 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.

  1. Copot instalasi Bookinfo menggunakan skrip berikut:

    samples/bookinfo/platform/kube/cleanup.sh
    
  2. 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.