Anda dapat menggunakan traffic lanes dalam permissive mode untuk mencapai version isolation aplikasi. Dengan menetapkan E2E pass-through request header sebagai request routing header, Anda dapat menggunakan nilai header tersebut untuk mengarahkan traffic ke swimlanes. Ketika layanan dalam suatu swimlane saling memanggil, jika layanan tujuan tidak ada di swimlane saat ini, permintaan akan diteruskan ke baseline lane. Pendekatan ini menjamin integritas rantai panggilan dan menyederhanakan manajemen traffic.
Sebelum memulai, pastikan Anda telah membaca dan memahami Gunakan jalur lalu lintas mode permissive untuk mengelola traffic end-to-end dan konten terkaitnya.
Ikhtisar skenario
Contoh ini menggunakan tiga layanan—mocka, mockb, dan mockc—untuk membuat tiga swimlanes (s1, s2, dan s3) yang merepresentasikan tiga versi rantai pemanggilan layanan. Swimlane s1 merupakan baseline lane dan berisi ketiga layanan tersebut. Swimlane s2 hanya berisi layanan mocka dan mockc, sedangkan swimlane s3 hanya berisi layanan mockb. Dalam skenario ini, baik E2E pass-through request header maupun request routing header diatur ke my-trace-id.
Langkah 1: Buat grup swimlane dan swimlanes
-
Buat grup swimlane.
-
Masuk ke Konsol ASM. Di panel navigasi sebelah kiri, pilih .
-
Pada halaman Mesh Management, klik nama instans ASM. Di panel navigasi sebelah kiri, pilih .
-
Pada halaman Traffic Lane, klik Create Swimlane Group. Pada panel Create Swimlane Group, konfigurasikan parameter dan klik OK.
Parameter
Description
Name of swim lane group
Pada contoh ini, atur nama menjadi test.
Entrance gateway
Pilih ingressgateway.
Lane Mode
Pilih Permissive Mode.
Pass-through Mode of Trace Context
Pilih Pass Through Custom Header.
E2E Pass-through Request Header
Atur nilai ini ke
my-trace-id.Swimlane service
Pilih kluster Kubernetes target dan
namespacedefault. Dalam daftar layanan, pilih mocka, mockb, dan mockc. Klik ikon
untuk memindahkannya ke area selected.
-
-
Buat
swimlaness1,s2, dans3serta bind ke versiv1,v2, danv3masing-masing.-
Di bagian Traffic Lane pada halaman Traffic Rule Definition, klik Create swimlanes.
-
Pada kotak dialog Create swimlanes, konfigurasikan parameter dan klik OK.
Parameter
Deskripsi
Swimlane Name
Atur nama ketiga
swimlanesmenjadi s1, s2, dan s3 masing-masing.Configure Service Tag
Label Key: Atur ke ASM_TRAFFIC_TAG.
Label Value: Atur ke v1, v2, dan v3 untuk
swimlaness1,s2, dans3masing-masing.Add Service
Untuk
swimlanes1: Pilih mocka(default), mockb(default), dan mockc(default).Untuk
swimlanes2: Pilih mocka(default) dan mockc(default).Untuk
swimlanes3: Pilih mockb(default).Setelah ketiga
swimlanesdibuat, hasilnya akan ditampilkan. Secara default,swimlanepertama yang Anda buat dalam suatu grup menjadibaseline lane. Anda dapat mengubahbaseline lane. Saat traffic dikirim ke layanan yang tidak ada diswimlanelain,fallback mechanismakan meneruskan permintaan kebaseline lane. Untuk informasi lebih lanjut tentang cara mengubah baseline lane, lihat Modify the baseline lane. Pada halaman Traffic Rule Definition, Baseline Lane diatur ke s1, dan Ingress Type adalah ASM Gateway (ingressgateway).Setelah Anda membuat ketiga
swimlanes, Alibaba Cloud Service Mesh secara otomatis menghasilkanDestinationRuledanVirtualServiceuntuk setiap layanan dalam grupswimlane. Anda dapat melihatnya dengan memilih atau Virtual Service di panel navigasi sebelah kiri. Sebagai contoh, ASM secara otomatis membuatDestinationRuledanVirtualServiceberikut untuk layananmocka.
-
-
Buat
traffic routing rulesuntuk ketigaswimlanes.-
Di bagian Traffic Lane pada halaman Traffic Rule Definition, temukan
swimlanetarget dan klik Ingress traffic rules di kolom Actions. -
Pada kotak dialog Add drainage rule, konfigurasikan parameter dan klik OK.
Contoh ini mengasumsikan bahwa API ingress untuk semua layanan
swimlaneadalah/mock. Oleh karena itu, Anda mengonfigurasitraffic routing ruleyang sama untuk setiapswimlane.Parameter
Deskripsi
Ingress service
Pilih mocka.default.svc.cluster.local.
Ingress traffic rules
Untuk
traffic routing rulesketigaswimlanes, atur Name menjadi r1, r2, dan r3 masing-masing. Atur realm name menjadi *.Matching request URI
Atur Method ke Exact dan Content ke /mock.
Setelah Anda membuat
traffic routing rulesuntuk ketigaswimlanes, hasilnya akan ditampilkan. Selain pencocokan URI eksak, setiap aturan mencakup kondisi pencocokan Headers: nama header adalahmy-trace-id, jenis pencocokan adalah eksak, dan nilai pencocokan untukswimlaness1,s2, dans3masing-masing adalahs1,s2, dans3. Baseline Lane diatur ke s1.Setelah Anda membuat aturan tersebut, ASM secara otomatis menghasilkan
VirtualServiceyang mendefinisikantraffic routing ruleuntuk setiapswimlane. Sebagai contoh, ASM menghasilkanVirtualServiceberikut untukswimlanes2.
-
Langkah 2: Verifikasi rilis canary E2E
-
Dapatkan alamat IP publik
ingress gatewayASM. Untuk informasi lebih lanjut, lihat Obtain the IP address of an ingress gateway. -
Jalankan perintah berikut untuk mengatur variabel lingkungan.
Dalam perintah tersebut,
xxx.xxx.xxx.xxxadalah alamat IP yang Anda peroleh pada langkah sebelumnya.export ASM_GATEWAY_IP=xxx.xxx.xxx.xxx -
Verifikasi
E2E canary release.-
Jalankan perintah berikut untuk menguji akses ke
swimlanes1.Nilai
my-trace-id, yaitus1, adalah namaswimlanes1yang dikonfigurasi di Langkah 1.2.for i in {1..100}; do curl -H'my-trace-id: s1' 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 ini mengonfirmasi bahwa permintaan dengan Header HTTP
my-trace-id: s1diarahkan ke layanan dalamswimlanes1. -
Jalankan perintah berikut untuk menguji akses ke
swimlanes2.Nilai
my-trace-id, yaitus2, adalah namaswimlanes2yang dikonfigurasi di Langkah 1.2.for i in {1..100}; do curl -H'my-trace-id: s2' http://${ASM_GATEWAY_IP}/mock ; echo ''; sleep 1; done;Output yang diharapkan:
mocka(version: v2, ip: 192.168.1.101)-> mockb(version: v1, ip: 192.168.1.100)-> mockc(version: v2, ip: 192.168.1.116)Output ini menunjukkan bahwa permintaan dengan Header HTTP
my-trace-id: s2diarahkan ke layanan dalamswimlanes2. Saat permintaan menargetkan layananmockbyang tidak ada diswimlanes2,fallback mechanismmeneruskan permintaan ke layananmockbdibaseline lanes1. Permintaan selanjutnya ke layananmockcdiarahkan kembali dengan benar ke layananmockcdiswimlanes2. -
Jalankan perintah berikut untuk menguji akses ke
swimlanes3.Nilai
my-trace-id, yaitus3, adalah namaswimlanes3yang dikonfigurasi di Langkah 1.2.for i in {1..100}; do curl -H'my-trace-id: s3' http://${ASM_GATEWAY_IP}/mock ; echo ''; sleep 1; done;Output yang diharapkan:
mocka(version: v1, ip: 192.168.1.103)-> mockb(version: v3, ip: 192.168.1.120)-> mockc(version: v1, ip: 192.168.1.105)Output ini menunjukkan bahwa permintaan dengan Header HTTP
my-trace-id: s3diarahkan ke layanan dalamswimlanes3. Saat permintaan menargetkan layananmockadanmockcyang tidak ada diswimlanes3,fallback mechanismmeneruskan permintaan ke layananmockadanmockcdibaseline lanes1.
-