Jalur lalu lintas dalam mode permissif memungkinkan Anda mengisolasi versi aplikasi. Trafik diarahkan ke jalur yang 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 akan diteruskan ke layanan yang sama di jalur dasar. Fitur ini memastikan integritas rantai panggilan dan menyederhanakan pengelolaan trafik. Topik ini menjelaskan cara menggunakan jalur lalu lintas dalam mode permissif untuk skenario di mana header routing permintaan berbeda dari 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 yang mencakup semua layanan v1. Jalur s2 hanya mencakup layanan mocka dan mockc versi v2, sedangkan jalur s3 hanya mencakup layanan mockb versi v3.
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.
Istio gateway for an ingress gateway
Pilih ingressgateway.
Lane Mode
Pilih Permissive Mode.
Pass-through Mode of Trace Context
Pilih Pass Through Trace ID.
Trace ID Request Header
Masukkan my-trace-id. Hal ini karena layanan sampel dalam contoh ini mentransmisikan secara transparan header permintaan my-trace-id dalam jejak.
Routing Request Header
Anda dapat menentukan parameter ini berdasarkan kebutuhan bisnis Anda. Gerbang ASM merutekan trafik ke jalur dan mempertahankan konteks jalur berdasarkan isi header routing permintaan. Untuk contoh ini, masukkan x-asm-prefer-tag.
Swimlane Services
Pilih klaster ACK tempat Anda menerapkan layanan sampel 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.Setelah grup jalur dibuat, label trafik secara otomatis dihasilkan untuk grup tersebut. Anda dapat memilih Pusat Manajemen Trafik > TrafficLabel di panel navigasi sebelah kiri untuk melihat label trafik. Sebagai contoh, label trafik berikut dihasilkan untuk layanan mocka.
Buat jalur s1, s2, dan s3, serta ikat jalur s1 ke versi v1 layanan sampel, jalur s2 ke versi v2 layanan sampel, dan jalur s3 ke versi v3 layanan sampel.
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 masing-masing.
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 Trafik, seperti ditunjukkan pada gambar berikut.
CatatanSecara default, jalur pertama yang Anda buat dalam grup jalur diatur sebagai jalur dasar. Ketika trafik ditujukan untuk 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 dihasilkan untuk setiap layanan dalam 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 dihasilkan untuk layanan mocka.
Buat aturan routing trafik untuk setiap jalur.
Di bagian Traffic Rule Definition halaman Traffic Lane, temukan jalur untuk mana Anda ingin membuat aturan routing trafik, 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 dalam jalur adalah
/mock, dan aturan routing trafik 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 ketiga 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 trafik untuk jalur s1.

Setelah aturan routing trafik dibuat, Anda dapat melihatnya di bagian Definisi Aturan Trafik, seperti ditunjukkan pada gambar berikut.

Setelah aturan routing trafik dibuat, layanan virtual secara otomatis dihasilkan untuk jalur tersebut. Sebagai contoh, layanan virtual berikut dihasilkan untuk jalur s2.
Langkah 2: Verifikasi bahwa fitur rilis canary ujung ke ujung berfungsi
Peroleh alamat IP publik dari gerbang masuk. Untuk informasi lebih lanjut, lihat Langkah 2: Dapatkan alamat IP gerbang masuk 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 ujung ke ujung berfungsi.
Jalankan perintah berikut untuk mengakses layanan di jalur s1.
Dalam perintah, nilai dari
x-asm-prefer-tagadalahs1, yaitu nama jalur s1 yang Anda konfigurasikan saat membuat jalur s1 di sublangkah 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;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 trafik yang ditentukan oleh header HTTP
x-asm-prefer-tag: s1mengalir ke layanan yang relevan di jalur s1. Ini sesuai dengan harapan.Jalankan perintah berikut untuk mengakses layanan di jalur s2.
Dalam perintah, nilai dari
x-asm-prefer-tagadalahs2, yaitu nama jalur s2 yang Anda konfigurasikan saat membuat jalur s2 di sublangkah 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;Keluaran 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)Keluaran menunjukkan bahwa trafik yang ditentukan oleh header HTTP
x-asm-prefer-tag: s2mengalir ke layanan yang relevan di jalur s2. Ini sesuai dengan harapan. Ketika trafik ditujukan untuk layanan mockb yang tidak ada di jalur s2, trafik diteruskan ke layanan mockb di jalur dasar s1 sesuai dengan mekanisme fallback. Kemudian, trafik dikirim ke layanan mockc di jalur s2 seperti yang diharapkan.Jalankan perintah berikut untuk mengakses layanan di jalur s3.
Dalam perintah, nilai dari
x-asm-prefer-tagadalahs3, yaitu nama jalur s3 yang Anda konfigurasikan saat membuat jalur s3 di sublangkah 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;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 trafik yang ditentukan oleh header HTTP
my-request-id: s3mengalir ke layanan yang relevan di jalur s3. Ini sesuai dengan harapan. Ketika trafik ditujukan untuk layanan mocka dan mockc yang tidak ada di jalur s3, trafik diteruskan ke layanan mocka dan mockc di jalur dasar s1 sesuai dengan mekanisme fallback.
Ubah jalur dasar dalam mode permissif
Anda hanya dapat mengubah jalur dasar dalam grup jalur mode permissif yang berisi setidaknya dua 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 tab grup jalur untuk mana Anda ingin mengubah jalur dasar. Di bagian Traffic Rule Definition, klik ikon
di sebelah Baseline Lane.Pilih nama jalur dasar yang ingin Anda ubah dan klik confirm edit.