k8s, Istio: удалить заголовок кодирования передачи
В ответах приложения мы видим удвоенные заголовки передачи-кодирования .
Предположим, из-за этого мы получаем 503 в UI, но при этом приложение возвращает 201 в логах пода.
Кроме
http code: 201
Существуют
transfer-encoding=chunked
и
Transfer-Encoding=chunked
заголовки в журналах, так что это могло быть причиной 503.
Мы пытались удалить
transfer-encoding
через виртуальный сервис Istio или фильтр посланников, но не повезло ..
Вот образцы, которые мы попробовали:
добавил в VS следующее:
headers:
response:
remove:
- transfer-encoding
Определение EnvoyFilter:
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
name: test
namespace: istio-system
spec:
configPatches:
- applyTo: HTTP_FILTER
match:
context: SIDECAR_OUTBOUND
patch:
operation: ADD
value:
name: envoy.filters.http.lua
typed_config:
"@type": "type.googleapis.com/envoy.extensions.filters.http.lua.v3.Lua"
inlineCode: |
function envoy_on_response(response_handle)
response_handle:headers():remove("transfer-encoding")
end
В более старых версиях посланников я вижу
envoy.reloadable_features.reject_unsupported_transfer_encodings=false
был обходной путь. К сожалению, он устарел.
Посоветуйте, пожалуйста, что не так с VS / filter или есть ли альтернатива
reject_unsupported_transfer_encodings
вариант?
Istio v1.8.2
Envoy v1.16.1
2 ответа
Решение на данный момент: создано требование для команды разработчиков по удалению дублирования фрагментированной кодировки.
Я использую версию istio 1.9.5 и имею соединение с удалением модуля, и это похоже на аналогичную проблему, упомянутую в этом потоке. Какие есть варианты решения такой проблемы? С точки зрения приложения, становится трудно удалить кодировку передачи для всех сценариев использования, поскольку длина содержимого может быть неизвестна. Кто-нибудь может предложить?