k8s、Istio:删除 transfer-encoding header

k8s, Istio: remove transfer-encoding header


在应用程序的响应中,我们看到加倍的 transfer-encoding headers。
假设,因此我们在 UI 中得到 503,但同时在 pod 的日志中应用 returns 201。
除了 http code: 201 之外,日志中还有 transfer-encoding=chunkedTransfer-Encoding=chunked headers,所以这可能是 503 的原因。
我们尝试通过 Istio 虚拟服务或 envoy 过滤器删除 transfer-encoding,但没有成功..

以下是我们尝试过的示例:

VS 定义:

kind: VirtualService
apiVersion: networking.istio.io/v1alpha3
metadata:
  name: test
  namespace: my-ns
spec:
  hosts:
    - my-service
  http:
    - route:
        - destination:
            host: my-service
          headers:
            response:
              remove:
                - transfer-encoding

---
kind: VirtualService
apiVersion: networking.istio.io/v1alpha3
metadata:
  name: test
  namespace: istio-system
spec:
  gateways:
    - wildcard-api-gateway
  hosts:
    - my-ns_domain
  http:
    - match:
        - uri:
            prefix: /operator/api/my-service
      rewrite:
        uri: /my-service
      route:
        - destination:
            host: >-
              my-service.my-ns.svc.cluster.local
            port:
              number: 8080
          headers:
            response:
              remove:
                - transfer-encoding

Envoy过滤器定义:

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 版本中,我看到 envoy.reloadable_features.reject_unsupported_transfer_encodings=false 是一种解决方法。不幸的是,它已被弃用。

请告知 VS/filter 有什么问题,或者是否有替代 reject_unsupported_transfer_encodings 选项的方法?

Istio v1.8.2
Envoy v1.16.1

目前的决定:要求开发团队删除重复的分块编码