Men-deploy Bookinfo

Halaman ini menjelaskan cara men-deploy aplikasi contoh di cluster yang telah menginstal 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.

Men-deploy aplikasi

Gunakan langkah-langkah berikut untuk men-deploy layanan aplikasi BookInfo dengan proxy file bantuan yang dimasukkan bersama setiap layanan.

  1. Pada command line di komputer tempat Anda menginstal Anthos Service Mesh, buka root direktori penginstalan Anthos Service Mesh.

  2. Untuk mengaktifkan injeksi file bantuan otomatis, gunakan perintah berikut untuk menemukan label di istiod, yang berisi nilai label revisi untuk digunakan di langkah selanjutnya.

    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-186-8,istio=istiod,pod-template-hash=5788d57586
    istiod-asm-173-3-5788d57586-vsklm   1/1     Running   1          23h   app=istiod,istio.io/rev=asm-186-8,istio=istiod,pod-template-hash=5788d57586
    

    Pada output, di kolom LABELS, catat nilai label revisi istiod, yang mengikuti awalan istio.io/rev=. Dalam contoh ini, nilainya adalah asm-186-8.

  3. Terapkan label revisi ke namespace default. Dalam perintah berikut, REVISION adalah nilai label revisi istiod 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 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.

  4. Deploy aplikasi Anda ke namespace default menggunakan kubectl:

    kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
    
  5. 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
  6. 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 svc 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 respons menunjukkan 200, berarti aplikasi berfungsi dengan baik dengan Anthos Service Mesh.

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

  1. Uninstal 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 contoh Bookinfo lebih lanjut.