Anda dapat menyesuaikan header permintaan dan header respons menggunakan EnvoyFilter CustomResourceDefinition (CRD). EnvoyFilter CRD memungkinkan Anda untuk langsung memodifikasi konfigurasi proxy Istio (Envoy), termasuk menambahkan, menghapus, atau memodifikasi header saat permintaan atau respons melewati proxy.
Prasyarat
Aplikasi HTTPBin telah diterapkan. Untuk informasi lebih lanjut, lihat Terapkan Aplikasi HTTPBin.
Langkah 1: Tentukan template filter Envoy
ASM memungkinkan Anda membuat filter Envoy menggunakan template filter Envoy. Template yang sama dapat digunakan untuk membuat beberapa filter Envoy yang dapat diterapkan pada beban kerja dan namespace berbeda, meningkatkan efisiensi manajemen melalui penggunaan kembali konfigurasi.
Kode YAML berikut adalah contoh template filter Envoy. Untuk informasi lebih lanjut, lihat Envoy Filter.
Jika menggunakan Istio 1.9 atau versi lebih baru, ganti nilai bidang
proxyVersiondengan versi Istio.Jika menggunakan Istio 1.8 atau versi sebelumnya, ganti nilai bidang
proxyVersiondengan versi Istio. Selain itu, gantienvoy.filters.network.http_connection_managerdenganenvoy.http_connection_manager,envoy.filters.http.routerdenganenvoy.router, dantype.googleapis.com/envoy.extensions.filters.http.lua.v3.Luadengantype.googleapis.com/envoy.config.filter.http.lua.v2.Luadalam kode YAML di atas.
Langkah 2: Buat filter Envoy menggunakan template filter Envoy
Setelah membuat template filter Envoy, Anda perlu mengikatnya ke beban kerja atau namespace tertentu. Dengan cara ini, filter Envoy yang dibuat hanya berlaku untuk beban kerja atau namespace tersebut. ASM secara otomatis membuat filter Envoy berdasarkan template setelah pengikatan dilakukan.
Filter Envoy yang dibuat menambahkan header permintaan kustom ke permintaan masuk dan header respons kustom ke respons keluar. Contoh berikut membuat filter Envoy bernama custom-header-filter dan mengonfigurasi filter Lua untuk menambahkan header permintaan dan respons. Filter ini berlaku untuk semua beban kerja dengan label app: my-app.
EnvoyFilter adalah metode konfigurasi yang kuat tetapi kompleks karena langsung memodifikasi konfigurasi dasar Envoy. Oleh karena itu, gunakan dengan hati-hati dan pastikan pemahaman mendalam tentang model konfigurasi Envoy untuk menghindari kesalahan potensial. Selain itu, konfigurasi EnvoyFilter dapat berubah dengan peningkatan versi Istio, jadi perhatikan masalah kompatibilitas.
Langkah 3: Lihat header permintaan kustom dan header respons dalam log akses
ASM memungkinkan Anda menyesuaikan format log akses. Ekspresi kustom log akses dapat memperoleh nilai dari header permintaan, header respons, dan nilai bawaan Envoy. Untuk informasi lebih lanjut, lihat Sesuaikan Format Log Akses.
Tabel berikut mencantumkan tiga bidang baru yang digunakan untuk menampilkan konten dalam log akses.
Bidang | Tipe | Nilai |
my-x-custom-request-header | Atribut permintaan | %REQ(x-custom-request-header)% |
baggage-from-request | Atribut permintaan | %REQ(baggage)% |
my-x-custom-response-header | Atribut respons | %RESP(x-custom-response-header)% |
Periksa log akses pod HTTPBin, dan Anda akan melihat konten serupa dengan berikut ini:
{
"bytes_received": "0",
"bytes_sent": "490",
"durasi": "1",
"istio_policy_status": "-",
"method": "GET",
"path": "/headers",
"protocol": "HTTP/1.1",
"response_code": "200",
"response_flags": "-",
"my-x-custom-request-header": "xxx",
"baggage-from-request": "x-custom-request-header=xxx",
"my-x-custom-response-header": "x-custom-request-header=xxx",
}