Pengaturan rute traffic berbasis versi memungkinkan Anda membagi traffic antara berbagai versi layanan berdasarkan bobot yang ditentukan. Teknik ini ideal untuk rilis canary dan Pengujian A/B. Topik ini menjelaskan cara menggunakan sumber daya Istio untuk tujuan tersebut.
Prasyarat
Langkah 1: Buat Gateway
Gateway mendefinisikan load balancer di tepi service mesh untuk koneksi HTTP/TCP inbound atau outbound. Langkah ini menjelaskan cara membuat Gateway dan mengaitkannya dengan gerbang masuk.
-
Masuk ke Konsol ASM. Di panel navigasi kiri, pilih .
-
Pada halaman Mesh Management, klik nama instans ASM. Di panel navigasi kiri, pilih . Pada halaman yang muncul, klik Create.
-
Pada halaman Create, konfigurasikan parameter berikut lalu klik Create.
Untuk informasi lebih lanjut tentang parameter tersebut, lihat Gateway.
Parameter
Deskripsi
Basic Information
Atur Namespaces ke default dan Name ke bookinfo-gateway.
Gateway Pod Selector
Atur Key ke istio dan Value ke ingressgateway.
Exposed Service
Atur Name ke http, Port ke 80, Protocol ke HTTP, dan Hosts ke *.
Konfigurasi YAML untuk Gateway adalah sebagai berikut.
Berikut adalah YAML untuk VirtualService.
Langkah 2: Buat VirtualService
VirtualService mengarahkan permintaan ke aplikasi Bookinfo melalui jalur berikut: /productpage, /static, /login, /logout, dan /api/v1/products.
-
Masuk ke Konsol ASM. Di panel navigasi kiri, pilih .
-
Pada halaman Mesh Management, klik nama instans ASM. Di panel navigasi kiri, pilih . Pada halaman yang muncul, klik Create.
-
Pada halaman Create, konfigurasikan parameter berikut lalu klik Create.
Untuk informasi lebih lanjut tentang parameter tersebut, lihat Virtual Service.
Parameter
Deskripsi
Basic Information
Namespaces
Dalam contoh ini, pilih default.
Name
Masukkan nama kustom untuk VirtualService.
Gateways
-
Aktifkan Apply To specific Gateways, lalu klik Select the name of the Gateway.
-
Pada kotak dialog Select the name of the Gateway, pilih bookinfo-gateway, klik ikon
, lalu klik OK. -
Nonaktifkan Apply To All Sidecars.
Hosts
Klik Select the gateway domain name which VirtualService belongs to. Pada kotak dialog Select the gateway domain name which VirtualService belongs to, pilih *, klik ikon
, lalu klik OK.HTTP Route
Name
Klik HTTP Route, klik Add Route, lalu masukkan Name kustom.
Request matching rules
Klik Add Request Matching Rule berulang kali untuk mengonfigurasi lima aturan berikut:
-
Aktifkan Matching request URI, atur Method ke Exact, dan atur Content ke /productpage.
-
Aktifkan Matching request URI, atur Method ke Prefix, dan atur Content ke /static.
-
Aktifkan Matching request URI, atur Method ke Exact, dan atur Content ke /login.
-
Aktifkan Matching request URI, atur Method ke Exact, dan atur Content ke /logout.
-
Aktifkan Matching request URI, atur Method ke Prefix, dan atur Content ke /api/v1/products.
Route destination
Klik Add Route Destination, atur Host ke productpage, dan atur Port ke 9080.
File YAML berikut menunjukkan VirtualService yang sesuai dengan konfigurasi di atas.
-
Langkah 3: Akses aplikasi Bookinfo
-
Dapatkan alamat layanan gerbang masuk.
Konsol ASM
-
Masuk ke Konsol ASM. Di panel navigasi kiri, pilih .
-
Pada halaman Mesh Management, klik nama instans ASM. Di panel navigasi kiri, pilih .
-
Pada halaman Ingress Gateway, temukan Service address.
Konsol ACK
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
-
Di bagian atas halaman Hosts, pilih Namespaces dari daftar drop-down Namespace. Di kolom External IP, temukan alamat IP yang terkait dengan port 80 untuk layanan istio-ingressgateway.
-
-
Di bilah alamat browser Anda, masukkan http://{alamat IP gerbang masuk}/productpage dan refresh halaman beberapa kali untuk mengamati pengaturan rute round-robin default.
Setiap kali Anda merefresh halaman, Anda mengakses salah satu versi v1, v2, atau v3 dari layanan reviews. Traffic ke ketiga versi layanan reviews didistribusikan dalam rasio sekitar 1:1:1.
Halaman reviews-v1 hanya menampilkan ulasan teks tanpa peringkat bintang, halaman reviews-v2 menampilkan peringkat bintang hitam, dan halaman reviews-v3 menampilkan peringkat bintang merah.
Langkah 4: Buat aturan routing berbasis versi
-
Buat DestinationRule untuk mendefinisikan subset berbasis versi (v1, v2, dan v3) untuk layanan reviews.
-
Masuk ke Konsol ASM. Di panel navigasi kiri, pilih .
-
Pada halaman Mesh Management, klik nama instans ASM. Di panel navigasi kiri, pilih . Pada halaman yang muncul, klik Create.
-
Pada halaman Create, konfigurasikan parameter berikut lalu klik Create.
Untuk informasi lebih lanjut tentang parameter tersebut, lihat Destination Rule.
Parameter
Deskripsi
Basic Information
Atur Namespaces ke default, masukkan Name kustom untuk DestinationRule, dan atur Host ke reviews.
Service Version (Subset)
Klik Service Version (Subset). Klik Add Service Version (Subset) berulang kali untuk mengonfigurasi tiga subset berikut.
-
Subset 1: Atur Name ke v1. Klik Add Label, atur Key ke version, dan atur Value ke v1.
-
Subset 2: Atur Name ke v2. Klik Add Label, atur Key ke version, dan atur Value ke v2.
-
Subset 3: Atur Name ke v3. Klik Add Label, atur Key ke version, dan atur Value ke v3.
File YAML berikut menunjukkan DestinationRule yang sesuai dengan konfigurasi di atas.
-
-
-
Buat VirtualService untuk mengarahkan traffic ke layanan reviews berdasarkan bobot berikut: 10% ke v1, 40% ke v2, dan 50% ke v3.
-
Masuk ke Konsol ASM. Di panel navigasi kiri, pilih .
-
Pada halaman Mesh Management, klik nama instans ASM. Di panel navigasi kiri, pilih . Pada halaman yang muncul, klik Create.
-
Pada halaman Create, konfigurasikan parameter berikut lalu klik Create.
Parameter
Deskripsi
Basic Information
Namespaces
Dalam contoh ini, pilih default.
Name
Masukkan nama kustom untuk VirtualService.
Gateways
Aktifkan Apply To All Sidecars.
Hosts
Klik Add Host. Pada kotak dialog Add Host, atur Namespaces ke default. Di bagian Add Host, pilih layanan reviews, klik ikon
, lalu klik OK.HTTP Route
Name
Klik HTTP Route, klik Add Route, lalu masukkan Name kustom.
Route destination
Klik Add Route Destination berulang kali untuk mengonfigurasi tiga tujuan rute berikut.
-
Atur Host ke reviews, versi ke v1, dan bobot ke 10.
-
Atur Host ke reviews, Subset ke v2, dan Weight ke 40.
-
Atur Host ke reviews, Subset ke v3, dan Weight ke 50.
File YAML berikut menunjukkan VirtualService yang sesuai dengan konfigurasi di atas.
YAML untuk VirtualService adalah sebagai berikut.
-
-
Langkah 5: Verifikasi routing berbasis versi
Di bilah alamat browser Anda, masukkan http://{alamat IP gerbang masuk}/productpage dan refresh halaman sekitar 10 kali.
Jika traffic didistribusikan ke versi layanan v1, v2, dan v3 dalam rasio sekitar 1:4:5, aturan routing berbobot tersebut bekerja dengan benar.