Jalur lalu lintas dalam mode permissif dapat digunakan bersama dengan sumber daya routing kustom, seperti layanan virtual dan aturan tujuan, untuk menerapkan manajemen trafik ujung ke ujung (E2E) secara terpusat, manajemen routing granular halus, serta menyederhanakan pemrosesan trafik. Topik ini menjelaskan cara menggunakan jalur lalu lintas dalam mode permissif untuk mengelola trafik E2E.
Pengenalan fitur
Jalur lalu lintas dalam mode permissif memungkinkan Anda mengisolasi versi aplikasi secara fleksibel. Trafik diarahkan ke jalur berbeda berdasarkan header routing permintaan dan header permintaan E2E pass-through. Ketika layanan dalam satu 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 jejak dan menyederhanakan manajemen trafik.
Berikut adalah informasi lebih lanjut tentang jalur lalu lintas dalam mode permissif.
Mode pass-through konteks jejak
Untuk menggunakan jalur lalu lintas dalam mode permissif, aplikasi harus mendukung pass-through konteks jejak. Ini berarti aplikasi harus memiliki karakteristik berikut: Semua permintaan dalam jejak yang sama memiliki header permintaan yang sama.
Jalur lalu lintas dalam mode permissif mendukung mode pass-through umum konteks jejak untuk aplikasi. Anda dapat mengonfigurasi jalur lalu lintas dalam mode permissif sesuai dengan kebutuhan bisnis Anda.
Skenario 1: Pass through ID jejak
Header permintaan ID jejak memiliki karakteristik berikut:
Konten dari header permintaan dapat ditransmisikan secara transparan sepanjang jejak penuh.
Konten dari header permintaan bervariasi untuk setiap jejak.
ID jejak umumnya digunakan untuk secara unik mengidentifikasi jejak lengkap, dan isinya adalah string acak. Jika aplikasi Anda terhubung ke sistem pelacakan, aplikasi Anda mungkin memiliki kemampuan untuk melewati ID jejak. Beberapa standar pelacakan umum mendefinisikan header permintaan ID jejak unik, seperti x-b3-trace-id dan x-datadog-trace-id.
Skenario 2: Pass through header permintaan kustom
Aplikasi dapat menggunakan kode untuk menerapkan pass-through beberapa header permintaan dengan informasi layanan, seperti versi dan lingkungan. Header permintaan semacam itu biasanya digunakan untuk mengidentifikasi versi dan lingkungan jejak. Untuk menggunakan jalur lalu lintas dalam mode permissif dalam skenario ini, Anda hanya dapat menggunakan header permintaan kustom sebagai header routing permintaan.
Skenario 3: Pass through header Baggage
Baggage adalah mekanisme standar yang dikembangkan oleh OpenTelemetry untuk menyebarkan informasi konteks di seluruh proses dalam jejak sistem terdistribusi. Untuk melakukannya, Anda dapat menambahkan header HTTP bernama Baggage ke header HTTP. Nilai header Baggage berada dalam format pasangan kunci-nilai. Anda dapat menggunakan header Baggage untuk mentransfer data konteks seperti ID tenant, ID jejak, dan kredensial keamanan. Dengan cara ini, Anda dapat menggunakan fitur analisis jejak dan asosiasi log tanpa perlu memodifikasi kode. Contoh:
baggage: userId=alice,serverNode=DF%2028,isProduction=falseBaggage adalah mekanisme standar yang diusulkan oleh komunitas OpenTelemetry untuk mentransmisikan konteks jejak secara transparan. Oleh karena itu, kami merekomendasikan agar Anda mengonfigurasi jalur lalu lintas dalam mode permissif berdasarkan mekanisme ini.
Untuk skenario 1 dan 3, jika aplikasi Anda tidak terhubung ke sistem pelacakan atau tidak dapat mentransmisikan header Baggage secara transparan melalui kode, Anda dapat menggunakan Operator OpenTelemetry untuk menyuntikkan kemampuan auto-instrumentasi ke dalam aplikasi guna melewati header permintaan ID jejak tanpa memodifikasi kode aplikasi. Untuk informasi lebih lanjut, lihat Injecting Auto-instrumentation. Untuk mengimplementasikan auto-instrumentasi, Anda harus mengikuti dokumentasi komunitas di atas untuk menginstal Operator OpenTelemetry, mengonfigurasi auto-instrumentasi, dan menambahkan anotasi ke pod aplikasi. Auto-instrumentasi OpenTelemetry mendukung beberapa standar pass-through konteks jejak terdistribusi umum, seperti W3C Baggage dan B3. Dokumentasi komunitas auto-instrumentasi di atas memberikan contoh pass-through W3C TraceContext dan W3C Baggage.
Header routing permintaan
Secara umum, jalur lalu lintas dalam mode permissif menggunakan header routing permintaan untuk melabeli jejak permintaan. Anda dapat menentukan header routing permintaan apa pun selama tidak bertentangan dengan header permintaan terkait layanan yang sudah ada pada aplikasi. Berdasarkan mode pass-through konteks jejak yang Anda pilih, jalur lalu lintas dalam mode permissif memastikan bahwa setiap permintaan dalam jejak berisi header routing permintaan yang nilainya adalah nama jalur. Sebagai contoh, jika Anda mengatur parameter Routing Request Header menjadi x-asm-prefer-tag selama pembuatan grup jalur, ketika permintaan dikirim ke layanan di jalur s1, permintaan berikutnya dalam jejak selalu berisi header permintaan x-asm-prefer-tag: s1. Berdasarkan informasi tag jalur dalam header permintaan, jalur lalu lintas dapat mengisolasi versi aplikasi yang berbeda.
Jika Anda mengatur parameter Mode Pass-through Konteks Jejak menjadi Pass Through Custom Header, Anda harus mengatur header routing permintaan ke header permintaan kustom yang akan dilewati.
Deskripsi skenario
Jalur lalu lintas dalam mode permissif memungkinkan Anda mengisolasi versi aplikasi dengan berbagai cara. Dalam contoh-contoh dalam skenario berikut, Anda akan mempelajari cara merutekan trafik ke jalur dengan menggunakan tiga header permintaan pass-through yang berbeda dan bagaimana mengonfigurasi serta menggunakan layanan virtual kustom untuk merutekan trafik untuk jalur lalu lintas dalam mode permissif.
Referensi
Jalur lalu lintas memiliki dua mode: ketat dan permissif. Untuk informasi lebih lanjut tentang deskripsi dan perbedaan antara kedua mode, lihat Ikhtisar jalur lalu lintas.
Jika Anda ingin menggunakan jalur lalu lintas dalam mode permissif untuk mengelola trafik E2E dalam skenario di mana header routing permintaan sama dengan header permintaan E2E pass-through, lihat Skenario 2: Pass through header permintaan kustom dalam jejak.
Anda dapat mengonfigurasi jalur lalu lintas dengan menentukan layanan virtual dan aturan tujuan. Anda juga dapat menggunakan aturan ini untuk mengonfigurasi pengalihan trafik, yang merutekan trafik ke versi dengan prioritas lebih rendah atau aplikasi dengan karakteristik tertentu ketika versi tujuan atau aplikasi tidak tersedia. Untuk informasi lebih lanjut, lihat Gunakan aturan trafik untuk mengonfigurasi jalur lalu lintas dan pengalihan trafik.
Aturan routing permintaan jalur lalu lintas mencakup aturan pencocokan untuk header permintaan dan jalur permintaan. Anda dapat membuat layanan virtual kustom untuk mendefinisikan aturan pencocokan yang lebih kompleks atau membuat rute permintaan kustom. Untuk informasi lebih lanjut, lihat Gunakan layanan virtual kustom untuk merutekan trafik untuk jalur lalu lintas dalam mode permissif.