Service Mesh (ASM) memungkinkan Anda menggunakan fitur label lalu lintas untuk mengisolasi versi atau fitur tertentu dari aplikasi ke dalam lingkungan runtime independen (dikenal sebagai jalur). Anda dapat mengonfigurasi aturan jalur untuk mengarahkan permintaan yang memenuhi kriteria ke versi atau fitur tujuan dari aplikasi. Topik ini menjelaskan cara menggunakan jalur untuk mengelola lalu lintas di konsol ASM.
Prasyarat
Sebuah instance ASM Edisi Enterprise atau Edisi Ultimate telah dibuat dan instans tersebut adalah versi 1.17.2.22 atau lebih baru. Untuk informasi lebih lanjut, lihat Buat instance ASM atau Perbarui instance ASM.
Sebuah gateway ASM bernama ingressgateway telah dibuat. Untuk informasi lebih lanjut, lihat Buat gateway masuk.
Sebuah gateway Istio bernama ingressgateway telah dibuat di namespace istio-system. Untuk informasi lebih lanjut, lihat Kelola gateway Istio.
Fitur
Rilis canary memungkinkan Anda secara bertahap meluncurkan layanan atau versi baru. Sebagai contoh, jika Anda ingin merilis versi baru, Anda dapat terlebih dahulu mengarahkan sebagian lalu lintas ke versi tersebut untuk menguji fungsinya, dan meningkatkan lalu lintas setelah fungsi diverifikasi.
Rilis canary ujung ke ujung terutama mengarahkan lalu lintas permintaan melalui rantai panggilan layanan mikro yang berbeda. Anda tidak perlu mengonfigurasi ulang layanan mikro Anda untuk tujuan ini. Hanya beberapa aturan yang diperlukan untuk membangun lingkungan terisolasi untuk lalu lintas dari gateway ke layanan. Rilis canary ujung ke ujung memfasilitasi peluncuran beberapa layanan atau beberapa versi layanan pada saat yang bersamaan. Untuk informasi lebih lanjut, lihat Label traffic.
Dalam contoh ini, tiga jalur s1, s2, dan s3 diterapkan, dan masing-masing jalur berisi tiga layanan mocka, mockb, dan mockc. Setelah jalur diterapkan di ASM console, periksa apakah lalu lintas didistribusikan di antara jalur sesuai harapan.
Langkah 1: Terapkan layanan sampel
Aktifkan injeksi proxy sidecar otomatis untuk namespace default. Untuk informasi lebih lanjut, lihat Manage global namespaces.
Untuk informasi lebih lanjut, lihat Konfigurasikan kebijakan injeksi proxy sidecar.
Masuk ke konsol ASM. Di panel navigasi kiri, pilih .
Di halaman Mesh Management, klik nama instance ASM. Di panel navigasi kiri, pilih .
Di halaman Global Namespace, temukan namespace default dan klik Enable Automatic Sidecar Injection di kolom Automatic Sidecar Injection. Di pesan Submit, klik OK.
Jalankan perintah berikut untuk menerapkan layanan sampel di kluster Container Service for Kubernetes (ACK):
kubectl apply -f https://alibabacloudservicemesh.oss-cn-beijing.aliyuncs.com/asm-labs/swimlane/v1/application-v1.yaml kubectl apply -f https://alibabacloudservicemesh.oss-cn-beijing.aliyuncs.com/asm-labs/swimlane/v2/application-v2.yaml kubectl apply -f https://alibabacloudservicemesh.oss-cn-beijing.aliyuncs.com/asm-labs/swimlane/v3/application-v3.yaml
Langkah 2: Buat grup jalur dan jalur
Buat grup jalur.
Masuk ke konsol ASM. Di panel navigasi kiri, pilih .
Di halaman Mesh Management, klik nama instance ASM. Di panel navigasi 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.
Swimlane Services
Pilih kluster ACK yang diinginkan dari daftar drop-down Kubernetes Clusters dan pilih default dari daftar drop-down Namespace. Kemudian, pilih mocka, mockb, dan mockc di daftar layanan, dan klik ikon
untuk menambahkan layanan ke bagian selected.Setelah konfigurasi, label lalu lintas yang sesuai akan dihasilkan.
Buat jalur s1, s2, dan s3 dan ikat jalur s1 ke v1 dari layanan sampel, jalur s2 ke v2 dari layanan sampel, dan jalur s3 ke v3 dari layanan sampel.
Topik ini hanya menjelaskan cara membuat jalur s1. Anda dapat membuat jalur s2 dan s3 dengan metode yang sama.
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
Untuk contoh ini, masukkan s1.
CatatanPermintaan yang header-nya berisi nama jalur dalam format
'x-asm-prefer-tag: nama jalur'diarahkan ke versi layanan yang sesuai.Configure Service Tag
Untuk contoh ini, masukkan v1.
Add Service
Untuk contoh ini, pilih layanan mocka(default), mockb(default), dan mockc(default).

Setelah ketiga jalur dibuat, Anda dapat melihatnya di bagian Definisi Aturan Lalu Lintas, seperti yang ditunjukkan pada gambar berikut:

Setiap kali Anda membuat jalur, sistem membuat aturan tujuan. Kode berikut memberikan contoh aturan tujuan yang dibuat setelah Anda membuat jalur s1:
Buat aturan pengarahan lalu lintas untuk setiap jalur.
Topik ini hanya menjelaskan cara membuat aturan pengarahan lalu lintas untuk jalur s1. Anda dapat membuat aturan pengarahan lalu lintas untuk jalur s2 dan s3 dengan metode yang sama.
Di bagian Traffic Rule Definition halaman Traffic Lane, temukan jalur untuk mana Anda ingin membuat aturan pengarahan 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 jalur adalah
/mock, dan aturan pengarahan 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 dan parameter realm name menjadi *.
Matching request URI
Untuk contoh ini, atur parameter Method menjadi Exact dan parameter Content menjadi /mock.
Setelah aturan pengarahan lalu lintas dibuat, Anda dapat melihatnya di bagian Definisi Aturan Lalu Lintas, seperti yang ditunjukkan pada gambar berikut:

Kemudian, sistem menghasilkan layanan virtual. Kode berikut memberikan contoh layanan virtual:
Langkah 3: Verifikasi bahwa fitur rilis canary ujung ke ujung berfungsi
Dapatkan alamat IP publik gateway ASM. Untuk informasi lebih lanjut, lihat Langkah 2: Query alamat IP gateway masuk instance ASM di Integrasi layanan inferensi cloud-native KServe dengan 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 yang Anda konfigurasikan saat membuat jalur di Langkah 2.for i in {1..100}; do curl -H 'x-asm-prefer-tag: s1' http://${ASM_GATEWAY_IP}/mock ; echo ''; sleep 1; done;Hasil 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)Trafik yang ditentukan oleh header HTTP
x-asm-prefer-tag: s1mengalir ke layanan terkait 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 yang Anda konfigurasikan saat membuat jalur di Langkah 2.for i in {1..100}; do curl -H 'x-asm-prefer-tag: s2' http://${ASM_GATEWAY_IP}/mock ; echo ''; sleep 1; done;Output yang diharapkan:
-> mocka(version: v2, ip: 172.17.0.9)-> mockb(version: v2, ip: 172.17.0.126)-> mockc(version: v2, ip: 172.17.0.128)Lalu lintas yang ditentukan oleh header HTTP
x-asm-prefer-tag: s2mengalir ke layanan terkait di jalur s2. Ini sesuai dengan harapan.Jalankan perintah berikut untuk mengakses layanan di jalur s3.
Dalam perintah, nilai dari
x-asm-prefer-tagadalahs3, yaitu nama jalur yang Anda konfigurasikan saat membuat jalur di Langkah 2.for i in {1..100}; do curl -H 'x-asm-prefer-tag: s3' http://${ASM_GATEWAY_IP}/mock ; echo ''; sleep 1; done;Output yang diharapkan:
-> mocka(version: v3, ip: 172.17.0.132)-> mockb(version: v3, ip: 172.17.0.127)-> mockc(version: v3, ip: 172.17.0.69)Lalu lintas yang ditentukan oleh header HTTP
x-asm-prefer-tag: s3mengalir ke layanan terkait di jalur s3. Ini sesuai dengan harapan.
(Opsional) Langkah 4: Periksa topologi mesh
Jika Anda telah mengaktifkan Topologi Mesh di konsol ASM, Anda dapat memeriksa topologi untuk permintaan sebelumnya. Untuk informasi lebih lanjut, lihat Aktifkan Topologi Mesh untuk meningkatkan observabilitas.