Memperbarui konfigurasi kompresor EnvoyFilter
Beberapa kolom tingkat teratas di platform API filter
envoy.extensions.filters.http.compressor.v3.Compressor tidak digunakan lagi
di
Envoy
(lihat definisi
sumber).
Setelan ini telah dipindahkan ke dalam blok response_direction_config.common_config dan request_direction_config.common_config khusus.
Panduan ini memberikan konteks dan langkah-langkah yang diperlukan untuk memperbarui resource EnvoyFilter Anda ke format yang didukung. Beralih ke format modern ini memastikan konfigurasi Anda tetap kompatibel dengan update berikutnya, mendapatkan manfaat dari kejelasan struktural yang lebih baik, dan selaras dengan praktik terbaik modernisasi Cloud Service Mesh.
Memahami kebutuhan modernisasi
Filter Envoy Compressor menyediakan kompresi dan dekompresi body HTTP secara langsung, sehingga membantu mengurangi penggunaan bandwidth dan meningkatkan performa aplikasi.
Cloud Service Mesh dengan bidang kontrol TRAFFIC_DIRECTOR (lihat Memeriksa penerapan bidang kontrol)
memerlukan penggunaan versi EnvoyFilter API yang didukung. Deployment lama
yang menggunakan kolom tingkat teratas yang tidak digunakan lagi (seperti content_length, content_type,
disable_on_etag_header, remove_accept_encoding_header, atau runtime_enabled)
akan terus berfungsi, tetapi sebaiknya segera diperbarui untuk tujuan
keandalan.
Saat menggunakan kolom yang tidak digunakan lagi ini, validasi akan di-roll out secara progresif di seluruh saluran rilis (Rapid, lalu Regular, lalu Stable). Validasi bidang kontrol berlaku berdasarkan waktu terjadinya deployment:
| Jenis Penerapan | Perilaku Validasi |
|---|---|
| Penerapan Lama (Diterapkan sebelum validasi diaktifkan) | Bidang kontrol menetapkan status peringatan pada resource kustom (CR) EnvoyFilter Anda yang berbunyi: found usage of unsupported fields: [...]. Konfigurasi akan tetap diterapkan untuk kompatibilitas mundur, tetapi Anda harus bermigrasi ke kolom yang didukung untuk memastikan dukungan berkelanjutan. |
| Deployment yang Didukung (Di-deploy setelah validasi diaktifkan) | Bidang kontrol secara ketat memblokir penggunaan kolom yang tidak didukung. Penerapan konfigurasi akan menghasilkan error pada resource EnvoyFilter dengan pesan: found usage of unsupported fields: [...], dan konfigurasi yang tidak didukung akan ditolak. |
Memperbarui konfigurasi akan mengatasi peringatan dan error ini di status resource Anda, serta memastikan konfigurasi Anda mematuhi validasi.
Mengidentifikasi konfigurasi yang tidak digunakan lagi
Konfigurasi EnvoyFilter Anda perlu diperbarui jika Anda menyetel salah satu kolom berikut secara langsung di bawah blok typed_config:
min_content_lengthcontent_lengthcontent_typedisable_on_etag_headerremove_accept_encoding_header
Anda dapat mencantumkan EnvoyFilter menggunakan:
kubectl get envoyfilters --all-namespaces -o yaml
Periksa output untuk melihat patch EnvoyFilters envoy.filters.http.compressor.
Format konfigurasi
Bagian berikut memberikan contoh konfigurasi yang tidak digunakan lagi dan yang sudah dimodernisasi untuk filter Compressor Envoy dalam resource EnvoyFilter.
Contoh konfigurasi yang tidak digunakan lagi
Jika bagian patch EnvoyFilter Anda menyerupai cuplikan berikut, berarti patch tersebut menggunakan format yang tidak digunakan lagi:
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
name: compressor-filter-update
namespace: istio-system
spec:
configPatches:
- applyTo: HTTP_FILTER
match:
context: GATEWAY
listener:
filterChain:
filter:
name: envoy.filters.network.http_connection_manager
subFilter:
name: envoy.filters.http.router
patch:
operation: INSERT_BEFORE
value:
name: envoy.filters.http.compressor
typed_config:
'@type': type.googleapis.com/envoy.extensions.filters.http.compressor.v3.Compressor
# These top-level fields are DEPRECATED
min_content_length: 1024
content_type:
- "application/javascript"
- "application/json"
disable_on_etag_header: true
remove_accept_encoding_header: true
compressor_library:
name: gzip
typed_config:
'@type': type.googleapis.com/envoy.extensions.compression.gzip.compressor.v3.Gzip
Contoh konfigurasi yang dimodernisasi
Kolom yang tidak digunakan lagi harus dipindahkan ke objek response_direction_config
(atau request_direction_config jika berlaku):
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
name: compressor-filter-update
namespace: istio-system
spec:
configPatches:
- applyTo: HTTP_FILTER
match:
context: GATEWAY
listener:
filterChain:
filter:
name: envoy.filters.network.http_connection_manager
subFilter:
name: envoy.filters.http.router
patch:
operation: INSERT_BEFORE
value:
name: envoy.filters.http.compressor
typed_config:
'@type': type.googleapis.com/envoy.extensions.filters.http.compressor.v3.Compressor
compressor_library:
name: gzip
typed_config:
'@type': type.googleapis.com/envoy.extensions.compression.gzip.compressor.v3.Gzip
response_direction_config:
disable_on_etag_header: true # MOVED
remove_accept_encoding_header: true # MOVED
common_config:
min_content_length: 1024 # MOVED
content_type: # MOVED
- "application/javascript"
- "application/json"
enabled:
default_value: true
runtime_key: "compressor.enabled"
Kolom dan jalur migrasi yang didukung
Untuk mengetahui daftar lengkap kolom yang didukung, lihat panduan Ekstensibilitas bidang data menggunakan EnvoyFilter. Tabel berikut menjelaskan pemetaan untuk memigrasikan kolom yang tidak digunakan lagi yang paling umum.
| Jalur Kolom yang Tidak Digunakan Lagi | Jalur Kolom Modern | Catatan |
|---|---|---|
typed_config.min_content_length |
typed_config.response_direction_config.common_config.min_content_lengthATAU typed_config.request_direction_config.common_config.min_content_length |
Menetapkan ukuran respons ATAU permintaan minimum masing-masing untuk memicu kompresi. |
typed_config.content_length |
typed_config.response_direction_config.common_config.min_content_lengthATAU typed_config.request_direction_config.common_config.min_content_length |
Alias sebelumnya untuk min_content_length. Ubah nama menjadi min_content_length di jalur baru. |
typed_config.content_type |
typed_config.response_direction_config.common_config.content_typeATAU typed_config.request_direction_config.common_config.content_type |
Array jenis konten yang akan dikompresi. |
typed_config.disable_on_etag_header |
typed_config.response_direction_config.disable_on_etag_header |
Menonaktifkan kompresi jika respons berisi header ETag. |
typed_config.remove_accept_encoding_header |
typed_config.response_direction_config.remove_accept_encoding_header |
Menghapus header Accept-Encoding dari permintaan sebelum mengirim ke upstream. |
Rencana migrasi
Sebaiknya perbarui konfigurasi EnvoyFilter Anda dengan mengikuti praktik terbaik deployment dan pengujian standar organisasi Anda. Pertimbangkan langkah-langkah umum berikut selama migrasi:
- Identifikasi: Temukan semua resource
EnvoyFiltermenggunakan filter Compressor dengan kolom yang tidak digunakan lagi seperti yang dijelaskan dalam Mengidentifikasi konfigurasi yang tidak digunakan lagi. - Pengujian: Ubah YAML resource
EnvoyFilterdan uji perubahan di lingkungan pra-produksi. Pastikan kompresi aktif untuk jenis dan ukuran konten yang diharapkan. - Pantau dan validasi:
- Periksa status resource
EnvoyFilteruntuk mengonfirmasi bahwa peringatan atau errorfound usage of unsupported fields: [...]tidak ada lagi. - Pantau metrik utama: Penggunaan CPU, latensi, dan penggunaan bandwidth.
- Periksa header respons (misalnya,
Content-Encoding: gzip) dan konfirmasi kompresi.
- Periksa status resource
- Deploy: Terapkan konfigurasi
EnvoyFilteryang didukung ke beban kerja produksi.
Manfaat modernisasi
- Kejelasan Status Resource: Menghapus peringatan dan error
found usage of unsupported fields: [...]dari status resource kompresorEnvoyFilterAnda. - Standardisasi: Sesuai dengan praktik terbaik konfigurasi Envoy saat ini dan validasi
TRAFFIC_DIRECTOR. - Kompatibilitas pada masa mendatang: Memastikan konfigurasi Anda berfungsi dengan lancar dengan versi Envoy dan Cloud Service Mesh mendatang.
Pemecahan masalah dan dukungan
Jika Anda mengalami masalah, pertimbangkan hal berikut:
- Periksa kembali sintaksis YAML dan penempatan kolom.
- Periksa log proxy Envoy untuk melihat pesan error mendetail:
kubectl logs -l app=your-app -c istio-proxy -n your-namespace. - Lakukan roll back ke konfigurasi
EnvoyFiltersebelumnya jika diperlukan. - Hubungi Google Cloud Dukungan untuk mendapatkan bantuan lebih lanjut.