Anda dapat menggunakan jalur lalu lintas mode permissive untuk mengisolasi versi aplikasi. Berdasarkan header permintaan yang disebarkan dan header permintaan ingress, traffic diarahkan ke jalur yang berbeda. Ketika layanan dalam suatu jalur saling memanggil, jika layanan tujuan tidak tersedia di jalur tersebut, sistem meneruskan permintaan ke jalur garis dasar. Hal ini menjamin integritas rantai panggilan dan menyederhanakan manajemen traffic.
Sebelum memulai, baca dan pahami Gunakan jalur lalu lintas mode permissive untuk manajemen traffic end-to-end dan konsep terkaitnya.
Ikhtisar skenario
Contoh ini menggunakan tiga layanan—mocka, mockb, dan mockc—untuk membuat tiga jalur lalu lintas yang merepresentasikan tiga versi rantai panggilan: s1, s2, dan s3. Jalur s1 merupakan jalur garis dasar dan mencakup ketiga layanan tersebut. Jalur s2 hanya mencakup layanan mocka dan mockc, sedangkan jalur s3 hanya mencakup layanan mockb.
Langkah 1: Buat grup jalur dan jalur
-
Buat grup jalur.
-
Masuk ke Konsol ASM. Di panel navigasi kiri, pilih .
-
Pada halaman Mesh Management, klik nama instans target. Di panel navigasi kiri, pilih .
-
Pada halaman Traffic Lane, klik Create Swimlane Group. Pada panel Create Swimlane Group, konfigurasikan parameter lalu klik OK.
Parameter
Deskripsi
Name of swim lane group
Pada contoh ini, atur namanya menjadi test.
Entrance gateway
Pilih ingressgateway.
Lane Mode
Pilih Permissive Mode.
Pass-through Mode of Trace Context
Pilih Pass Through Trace ID.
Trace ID Request Header
Aplikasi contoh menyebarkan header permintaan
my-trace-idmelalui rantai panggilan. Oleh karena itu, atur parameter ini menjadimy-trace-id.Routing Request Header
Header ini digunakan oleh gerbang untuk mengarahkan traffic ingress ke jalur yang berbeda dan mempertahankan konteks jalur. Anda dapat menentukan nama header yang valid apa pun. Pada contoh ini, gunakan x-asm-prefer-tag.
Swimlane Services
Pilih kluster Kubernetes target dan namespace default. Dari daftar layanan yang tersedia, pilih mocka, mockb, dan mockc, lalu klik ikon
untuk memindahkannya ke daftar selected.Setelah konfigurasi selesai, sistem secara otomatis menghasilkan resource
TrafficLabelyang sesuai. Di panel navigasi kiri, klik TrafficLabel untuk melihat resource tersebut. Sebagai contoh,TrafficLabelberikut dihasilkan untuk layananmocka.
-
-
Buat jalur s1, s2, dan s3 serta bind ke versi v1, v2, dan v3, masing-masing.
-
Pada halaman Traffic Lane, pada bagian Traffic Rule Definition, klik Create swimlanes.
-
Pada kotak dialog Create swimlanes, konfigurasikan parameter lalu klik OK.
Parameter
Deskripsi
Swimlane Name
Beri nama tiga jalur tersebut masing-masing s1, s2, dan s3.
Configure Service Tag
Label Key: Pilih ASM_TRAFFIC_TAG.
Label Value: Pilih v1 untuk jalur s1, v2 untuk jalur s2, dan v3 untuk jalur s3.
Add Service
Jalur s1: Pilih mocka(default), mockb(default), dan mockc(default).
Jalur s2: Pilih mocka(default) dan mockc(default).
Jalur s3: Pilih mockb(default).
Setelah tiga jalur dibuat, hasilnya ditampilkan pada gambar berikut:
CatatanSecara default, jalur lalu lintas pertama yang Anda buat dalam grup jalur menjadi jalur garis dasar. Anda dapat mengubah jalur garis dasar tersebut. Jika permintaan ditujukan ke layanan yang tidak ada di jalur saat ini, mekanisme fallback akan meneruskannya ke jalur garis dasar. Untuk informasi selengkapnya, lihat Ubah jalur garis dasar dalam mode permissive.
Setelah tiga jalur dibuat, sistem menghasilkan
DestinationRuledanVirtualServiceuntuk setiap layanan dalam grup jalur. Di panel navigasi kiri, pilih atau untuk melihat resource tersebut. Sebagai contoh,DestinationRuledanVirtualServiceberikut secara otomatis dibuat untuk layananmocka.
-
-
Buat aturan traffic ingress untuk ketiga jalur tersebut.
-
Pada halaman Traffic Lane, pada bagian Traffic Rule Definition, temukan jalur target lalu klik Ingress traffic rules pada kolom Actions.
-
Pada kotak dialog Add drainage rule, konfigurasikan parameter lalu klik OK.
Contoh ini mengasumsikan bahwa API ingress untuk semua layanan jalur adalah
/mock. Konfigurasikan aturan traffic ingress yang sama untuk setiap jalur.Parameter
Deskripsi
Ingress service
Pilih mocka.default.svc.cluster.local.
Ingress traffic rules
Atur Name untuk ketiga aturan menjadi r1, r2, dan r3, masing-masing. Atur realm name menjadi *.
Matching request URI
Atur Method menjadi Exact dan Content menjadi /mock.
Setelah membuat aturan traffic ingress untuk ketiga jalur, konfigurasinya sebagai berikut: jalur s1 (garis dasar, label v1, dengan layanan mocka, mockb, dan mockc), jalur s2 (label v2, dengan layanan mocka dan mockc), dan jalur s3 (label v3, dengan layanan mockb). Setiap aturan traffic ingress juga mencakup kondisi pencocokan header untuk
x-asm-prefer-tagyang secara tepat mencocokkan nama jalur yang sesuai.Setelah aturan dibuat, sistem secara otomatis menghasilkan aturan traffic ingress (VirtualService) untuk setiap jalur. Sebagai contoh, VirtualService berikut dihasilkan untuk jalur s2.
-
Langkah 2: Verifikasi fitur canary end-to-end
-
Dapatkan Alamat IP publik gerbang masuk ASM. Untuk informasi selengkapnya, lihat Dapatkan alamat IP gerbang masuk ASM.
-
Jalankan perintah berikut untuk mengatur Variabel lingkungan.
Ganti
xxx.xxx.xxx.xxxdengan alamat IP dari langkah sebelumnya.export ASM_GATEWAY_IP=xxx.xxx.xxx.xxx -
Verifikasi bahwa fitur canary end-to-end berfungsi sesuai harapan.
-
Jalankan perintah berikut untuk memeriksa akses ke jalur s1.
Nilai header
x-asm-prefer-tag, yaitus1, sesuai dengan nama yang Anda konfigurasikan untuk jalur s1 di langkah 2 Langkah 1.for i in {1..100}; do curl -H 'x-asm-prefer-tag: s1' -H'my-trace-id: x000'$i http://${ASM_GATEWAY_IP}/mock ; echo ''; sleep 1; done;Output yang diharapkan:
-> mocka(version: v1, ip: 172.17.0.54)-> mockb(version: v1, ip: 172.17.0.129)-> mockc(version: v1, ip: 172.17.0.130)Output menunjukkan bahwa traffic dengan header permintaan
x-asm-prefer-tag: s1diarahkan ke layanan dalam jalur s1, sesuai harapan. -
Jalankan perintah berikut untuk memeriksa akses ke jalur s2.
Nilai header
x-asm-prefer-tag, yaitus2, sesuai dengan nama yang Anda konfigurasikan untuk jalur s2 di langkah 2 Langkah 1.for i in {1..100}; do curl -H 'x-asm-prefer-tag: s2' -H'my-trace-id: x000'$i http://${ASM_GATEWAY_IP}/mock ; echo ''; sleep 1; done;Output yang diharapkan:
-> mocka(version: v2, ip: 172.17.0.9)-> mockb(version: v1, ip: 172.17.0.129)-> mockc(version: v2, ip: 172.17.0.128)Output menunjukkan bahwa traffic dengan header permintaan
x-asm-prefer-tag: s2diarahkan ke layanan dalam jalur s2. Saat traffic dikirim ke layananmockb, yang tidak ada di jalur s2, mekanisme fallback mengarahkan permintaan ke layananmockbdi jalur garis dasar s1. Saat rantai panggilan dilanjutkan ke layananmockc, traffic diarahkan kembali dengan benar ke layananmockcdi jalur s2. Ini adalah perilaku yang diharapkan. -
Jalankan perintah berikut untuk memeriksa akses ke jalur s3.
Nilai header
x-asm-prefer-tag, yaitus3, sesuai dengan nama yang Anda konfigurasikan untuk jalur s3 di langkah 2 Langkah 1.for i in {1..100}; do curl -H 'x-asm-prefer-tag: s3' -H'my-trace-id: x000'$i http://${ASM_GATEWAY_IP}/mock ; echo ''; sleep 1; done;Output yang diharapkan:
mocka(version: v1, ip: 172.17.0.54)-> mockb(version: v3, ip: 192.168.1.120)-> mockc(version: v1, ip: 172.17.0.130)Output menunjukkan bahwa traffic dengan header permintaan
x-asm-prefer-tag: s3diarahkan ke layanan dalam jalur s3. Saat traffic dikirim ke layananmockadanmockc, yang tidak ada di jalur s3, mekanisme fallback mengarahkan permintaan ke layananmockadanmockcdi jalur garis dasar s1. Ini adalah perilaku yang diharapkan.
-
Ubah jalur garis dasar dalam mode permissive
Sebelum mengubah jalur garis dasar, Anda harus memiliki grup jalur dalam mode permissive yang memiliki setidaknya dua jalur.
-
Masuk ke Konsol ASM. Di panel navigasi kiri, pilih .
-
Pada halaman Mesh Management, klik nama instans ASM. Di panel navigasi kiri, pilih .
-
Pada halaman Traffic Lane, klik tab grup jalur target. Pada bagian Traffic Rule Definition, klik ikon
di samping Baseline Lane. -
Pilih nama jalur garis dasar baru lalu klik confirm edit.