Anda dapat menggunakan traffic lane dalam mode permissive untuk mengisolasi versi aplikasi. Proses ini menyebarkan header permintaan perutean dalam header baggage guna mengarahkan lalu lintas ke lane yang berbeda. Ketika layanan di dalam suatu traffic lane saling memanggil, jika layanan target tidak tersedia di lane tersebut, permintaan akan diteruskan ke lane garis dasar. Hal ini menjamin integritas rantai panggilan dan menyederhanakan manajemen lalu lintas.
Sebelum memulai, baca dan pahami Gunakan traffic lane dalam mode permissive untuk mengelola traffic ujung ke ujung dan konten terkaitnya.
Ikhtisar skenario
Contoh ini mensimulasikan rantai panggilan yang melibatkan tiga layanan (mocka, mockb, dan mockc) serta tiga traffic lane (s1, s2, dan s3). Pertama, Anda akan menggunakan auto-instrumentasi OpenTelemetry untuk mengaktifkan propagasi header baggage pada layanan-layanan tersebut. Selanjutnya, Anda akan membuat tiga traffic lane dalam mode permissive dan mengarahkan lalu lintas menggunakan kebijakan perutean berbasis bobot.
Langkah 1: Sebarkan layanan contoh
-
Aktifkan injeksi proxy sidecar otomatis untuk namespace default. Untuk informasi selengkapnya, lihat Kelola namespace global.
CatatanUntuk informasi lebih lanjut tentang injeksi otomatis, lihat Konfigurasikan kebijakan injeksi sidecar.
-
Buat file bernama
mock.yamldengan konten berikut.Anotasi ini menyatakan bahwa layanan tersebut merupakan aplikasi Java dan menginstruksikan Operator OpenTelemetry untuk melakukan auto-instrumentasi pada kontainer bernama
default. -
Jalankan perintah berikut untuk menyebarkan layanan contoh.
kubectl apply -f mock.yamlAuto-instrumentasi OpenTelemetry memungkinkan Pod layanan yang dideploy secara otomatis menyebarkan header baggage di seluruh rantai panggilan.
Langkah 2: Buat grup lane dan traffic lane-nya
-
Buat grup lane.
-
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 Create Swimlane Group. Pada panel Create Swimlane Group, konfigurasikan parameter dan klik OK.
Parameter
Deskripsi
Name of swim lane group
Masukkan test.
Entrance gateway
Pilih ingressgateway.
Lane Mode
Pilih Permissive Mode.
Pass-through Mode of Trace Context
Pilih Pass Through Baggage Header.
Routing Request Header
Masukkan x-asm-prefer-tag.
Swimlane Services
Pilih kluster Kubernetes target dan namespace default. Dalam daftar layanan, pilih mocka, mockb, dan mockc, lalu klik ikon
untuk menambahkan layanan ke area selected.
-
-
Buat traffic lane s1, s2, dan s3, lalu bind masing-masing ke versi v1, v2, dan v3.
-
Pada halaman Traffic Lane, buka bagian Traffic Rule Definition dan klik Create swimlanes.
-
Pada kotak dialog Create swimlanes, konfigurasikan parameter lalu klik OK.
Parameter
Deskripsi
Swimlane Name
Masukkan s1, s2, dan s3 untuk ketiga traffic lane tersebut.
Configure Service Tag
Label Key: Masukkan ASM_TRAFFIC_TAG.
Label Value: Masukkan v1, v2, dan v3 untuk ketiga traffic lane tersebut.
Add Service
-
lane s1: Pilih mocka(default), mockb(default), dan mockc(default).
-
lane s2: Pilih mocka(default) dan mockc(default).
-
lane s3: Pilih mockb(default).
Secara default, ASM menetapkan traffic lane pertama yang Anda buat dalam grup lane sebagai lane garis dasar. Anda juga dapat mengubah lane garis dasar tersebut. Saat lalu lintas dikirim ke layanan yang tidak tersedia di traffic lane lain, mekanisme fallback akan meneruskan permintaan ke lane garis dasar. Untuk informasi selengkapnya tentang cara mengubah lane garis dasar, lihat Ubah lane garis dasar dalam mode permissive.
Di panel navigasi kiri konsol, Anda dapat memilih Traffic Management Center > DestinationRule atau VirtualService untuk melihat sumber daya DestinationRule dan VirtualService yang secara otomatis dihasilkan ASM untuk setiap layanan dalam grup lane. Sebagai contoh, DestinationRule dan VirtualService berikut secara otomatis dibuat untuk layanan mocka.
-
-
Buat aturan perutean berbasis bobot terpadu.
-
Pada halaman Traffic Lane, di bagian Traffic Rule Definition, klik Weight-based Routing di bagian Routing Policy.
-
Pada kotak dialog Set Unified Routing Rules, konfigurasikan parameter lalu klik OK. Contoh berikut menunjukkan cara mengonfigurasi aturan perutean terpadu untuk ketiga traffic lane, dengan asumsi API masuk untuk layanan lane adalah /mock.
Parameter
Deskripsi
realm name
Atur menjadi *.
Matching request URI
Atur Method menjadi Prefix dan Content menjadi /.
-
-
Atur bobot perutean untuk ketiga traffic lane tersebut. Bobot menentukan proporsi lalu lintas yang dikirim ke masing-masing lane.
-
Pada halaman Traffic Lane, di bagian Traffic Rule Definition, klik ikon
di sebelah angka pada kolom Traffic Routing Weight untuk setiap lane. Pada kotak dialog Edit Traffic Routing Weight, konfigurasikan parameter dan klik OK.Parameter
Deskripsi
Ingress service
Atur menjadi mocka.default.svc.cluster.local untuk ketiga traffic lane.
Weight Value
-
Untuk lane s1, masukkan 60.
-
Untuk lane s2, masukkan 20.
-
Untuk lane s3, masukkan 20.
-
-
Langkah 3: Verifikasi peluncuran kanari ujung ke ujung
-
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 peluncuran kanari ujung ke ujung.
-
Jalankan perintah berikut untuk mengamati perilaku akses di ketiga traffic lane.
for i in {1..100}; do curl http://${ASM_GATEWAY_IP}/ ; echo ''; sleep 1; done;Output yang diharapkan:
# Traffic ke lane s1 (garis dasar): semua layanan adalah v1. -> mocka(version: v1, ip: 192.168.0.193)-> mockb(version: v1, ip: 192.168.0.1)-> mockc(version: v1, ip: 192.168.0.190) # Traffic ke lane s2: mocka dan mockc adalah v2, mockb fallback ke v1 di lane garis dasar. -> mocka(version: v2, ip: 192.168.0.184)-> mockb(version: v1, ip: 192.168.0.1)-> mockc(version: v2, ip: 192.168.0.189) # Traffic ke lane s3: mockb adalah v3, mocka dan mockc fallback ke v1 di lane garis dasar. -> mocka(version: v1, ip: 192.168.0.193)-> mockb(version: v3, ip: 192.168.0.2)-> mockc(version: v1, ip: 192.168.0.190) # Output akan menampilkan campuran pola di atas, dengan distribusi mendekati rasio 6:2:2 untuk s1:s2:s3.Output menunjukkan bahwa lalu lintas didistribusikan ke traffic lane s1, s2, dan s3 dengan rasio perkiraan 6:2:2. s1 bertindak sebagai lane garis dasar. Ketika layanan dalam rantai panggilan tidak tersedia di lane target, permintaan akan fallback ke layanan yang sesuai di lane garis dasar (s1).
-