Jalur lalu lintas dalam mode permissif memungkinkan Anda mengisolasi versi aplikasi. Trafik diarahkan ke jalur berbeda berdasarkan header routing permintaan dan header permintaan pass-through end-to-end (E2E). Ketika layanan dalam jalur saling memanggil, jika layanan yang akan dipanggil tidak ada di jalur tersebut, permintaan diteruskan ke layanan yang sama di jalur dasar. Fitur ini memastikan integritas rantai panggilan dan menyederhanakan pengelolaan lalu lintas. Topik ini menjelaskan cara menggunakan jalur lalu lintas dalam mode permissif di skenario di mana header routing permintaan sama dengan header permintaan pass-through E2E.
Sebelum memulai, pastikan Anda telah membaca dan memahami topik Gunakan jalur lalu lintas dalam mode permissif untuk mengelola trafik ujung ke ujung dan konten terkait.
Deskripsi skenario
Dalam contoh ini, tiga jalur (s1, s2, dan s3) dibuat untuk mewakili tiga versi layanan mocka, mockb, dan mockc. Jalur s1 adalah jalur dasar dan mencakup semua tiga layanan dari v1. Jalur s2 hanya mencakup layanan mocka dan mockc dari v2. Jalur s3 hanya mencakup layanan mockb dari v3. Dalam contoh ini, baik header permintaan pass-through E2E maupun header routing permintaan ditentukan sebagai my-trace-id.
Langkah 1: Buat grup jalur dan jalur yang sesuai
Buat grup jalur.
Masuk ke Konsol ASM. Di panel navigasi sebelah kiri, pilih .
Di halaman Mesh Management, klik nama instance ASM. Di panel navigasi sebelah kiri, pilih .
Di halaman Traffic Lane, klik Create Swimlane Group. Di panel Create Swimlane Group, atur parameter dan klik OK.
Parameter
Deskripsi
Name of swim lane group
Untuk contoh ini, masukkan 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
Masukkan my-trace-id.
Lane Services
Pilih kluster ACK yang diinginkan dari daftar drop-down Kluster Kubernetes dan pilih default dari daftar drop-down Namespace. Kemudian, pilih mocka, mockb, dan mockc dalam daftar layanan, dan klik ikon
untuk menambahkan layanan ke bagian selected.
Buat jalur s1, s2, dan s3, serta ikat jalur s1 ke versi 1 (v1) dari layanan sampel, jalur s2 ke versi 2 (v2), dan jalur s3 ke versi 3 (v3).
Di bagian Traffic Rule Definition halaman Traffic Lane, klik Create swimlanes.
Di kotak dialog Create swimlanes, atur parameter dan klik OK.
Parameter
Deskripsi
Swimlane Name
Beri nama tiga jalur sebagai s1, s2, dan s3 secara berturut-turut.
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
Untuk jalur s1, pilih mocka(default), mockb(default), dan mockc(default).
Untuk jalur s2, pilih mocka(default) dan mockc(default).
Untuk jalur s3, pilih mockb(default).
Gambar berikut menunjukkan konfigurasi jalur s1.

Setelah ketiga jalur dibuat, Anda dapat melihatnya di bagian Definisi Aturan Lalu Lintas, seperti yang ditunjukkan pada gambar berikut. Secara default, jalur pertama yang Anda buat dalam grup jalur diatur sebagai jalur dasar. Namun, Anda dapat mengubah jalur dasar. Ketika lalu lintas ditujukan ke layanan yang tidak ada di jalur lain, permintaan diteruskan ke jalur dasar sesuai dengan mekanisme fallback. Untuk informasi lebih lanjut tentang cara mengubah jalur dasar, lihat Ubah jalur dasar dalam mode permissif.

Aturan tujuan dan layanan virtual secara otomatis dibuat untuk setiap layanan di jalur. Anda dapat memilih atau VirtualService di panel navigasi sebelah kiri untuk melihat aturan tujuan atau layanan virtual. Sebagai contoh, aturan tujuan dan layanan virtual berikut secara otomatis dibuat untuk layanan mocka.
Buat aturan routing lalu lintas untuk setiap jalur.
Di bagian Traffic Rule Definition halaman Traffic Lane, temukan jalur untuk mana Anda ingin membuat aturan routing lalu lintas, dan klik Ingress traffic rules di kolom Actions.
Di kotak dialog Add drainage rule, atur parameter dan klik OK.
Contoh ini mengasumsikan bahwa jalur permintaan masuk dari semua layanan di jalur adalah
/mock, dan aturan routing lalu lintas yang sama dikonfigurasikan untuk setiap jalur.Parameter
Deskripsi
Ingress service
Untuk contoh ini, pilih mocka.default.svc.cluster.local.
Ingress traffic rules
Untuk contoh ini, atur parameter Name menjadi r1, r2, dan r3 masing-masing untuk tiga jalur. Atur parameter realm name menjadi *.
Matching request URI
Untuk contoh ini, atur parameter Method menjadi Exact dan parameter Content menjadi /mock.
Gambar berikut menunjukkan konfigurasi aturan routing lalu lintas untuk jalur s1.

Setelah aturan routing lalu lintas dibuat, Anda dapat melihatnya di bagian Definisi Aturan Lalu Lintas, seperti yang ditunjukkan pada gambar berikut:

Setelah aturan routing lalu lintas dibuat, layanan virtual secara otomatis dibuat untuk jalur. Sebagai contoh, layanan virtual berikut dibuat untuk jalur s2.
Langkah 2: Verifikasi bahwa fitur rilis canary E2E berfungsi
Peroleh alamat IP publik gateway ingress ASM. Untuk informasi lebih lanjut, lihat Langkah 2: Peroleh alamat IP gateway ingress ASM di Langkah 2: Peroleh alamat IP gateway ingress ASM.
Jalankan perintah berikut untuk mengonfigurasi variabel lingkungan.
xxx.xxx.xxx.xxxadalah alamat IP yang diperoleh di sublangkah 1.export ASM_GATEWAY_IP=xxx.xxx.xxx.xxxVerifikasi bahwa fitur rilis canary E2E berfungsi.
Jalankan perintah berikut untuk mengakses layanan di jalur s1.
Dalam perintah, nilai dari
my-trace-idadalahs1, yaitu nama jalur s1 yang Anda konfigurasikan saat membuat jalur s1 di sublangkah 2 dari Langkah 1.for i in {1..100}; do curl -H'my-trace-id: s1' http://${ASM_GATEWAY_IP}/mock ; echo ''; sleep 1; done;Keluaran 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)Keluaran menunjukkan bahwa lalu lintas yang ditentukan oleh header HTTP
my-trace-id: s1mengalir ke layanan terkait di jalur s1. Ini sesuai dengan harapan.Jalankan perintah berikut untuk mengakses layanan di jalur s2.
Dalam perintah, nilai dari
my-trace-idadalahs2, yaitu nama jalur s2 yang Anda konfigurasikan saat membuat jalur s2 di sublangkah 2 dari Langkah 1.for i in {1..100}; do curl -H'my-trace-id: s2' http://${ASM_GATEWAY_IP}/mock ; echo ''; sleep 1; done;Keluaran 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)Keluaran menunjukkan bahwa lalu lintas yang ditentukan oleh header HTTP
my-trace-id: s2mengalir ke layanan terkait di jalur s2. Ini sesuai dengan harapan. Ketika lalu lintas ditujukan ke layanan mockb yang tidak ada di jalur s2, lalu lintas diteruskan ke layanan mockb di jalur dasar s1 sesuai dengan mekanisme fallback. Kemudian, lalu lintas dikirim ke layanan mockc di jalur s2 seperti yang diharapkan.Jalankan perintah berikut untuk mengakses layanan di jalur s3.
Dalam perintah, nilai dari
my-trace-idadalahs3, yaitu nama jalur s3 yang Anda konfigurasikan saat membuat jalur s3 di sublangkah 2 dari Langkah 1.for i in {1..100}; do curl -H'my-trace-id: s3' http://${ASM_GATEWAY_IP}/mock ; echo ''; sleep 1; done;Keluaran 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)Keluaran menunjukkan bahwa lalu lintas yang ditentukan oleh header HTTP
my-trace-id: s3mengalir ke layanan terkait di jalur s3. Ini sesuai dengan harapan. Ketika lalu lintas ditujukan ke layanan mocka dan mockc yang tidak ada di jalur s3, lalu lintas diteruskan ke layanan mocka dan mockc di jalur dasar s1 sesuai dengan mekanisme fallback.