如何解决如何增加 Istio 1.6.8 的最大标头大小?
情况:
服务 A 和 B。从 A 到 B 的请求标头最大可达 81KiB。截至目前,它以 431 响应出错。
服务位于默认命名空间中。 Istio 位于 istio-system 命名空间。 安装过程中未创建 istio-config 命名空间。
Istio 1.6.8。这两个服务都有 sidecart istio-proxy。
使用以下特使过滤器:
kind: EnvoyFilter
metadata:
name: max-request-headers
namespace: istio-system
spec:
configPatches:
- applyTo: NETWORK_FILTER # http connection manager is a filter in Envoy
match:
listener:
filterChain:
filter:
name: "envoy.filters.network.http_connection_manager"
patch:
operation: MERGE
value:
typed_config:
"@type": "type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager"
max_request_headers_kb: 96
但它不起作用。
曾尝试在 default
、istio-system
和 istio-config
命名空间中创建此过滤器。没有帮助。
istioctl proxy-config routes service-a --port 8080 -o json
对这些服务的路由分析未显示应用了过滤器。
因此,从所有这些来看,有几个问题:
- 如何正确调整 envoy 的 max_header_size_kb?
- 调试此类情况的正确流程是什么,尤其是应用了特使配置?
- Istio 是动态应用 EnvoyFilter 还是我需要重启 istio 服务?
解决方法
示例中提供的 EnvoyFilter 的问题是版本不匹配。示例适用于 Istio 1.7.x,而环境中的 istio 为 1.6.8 版本。
问题已通过将清单更改为以下内容解决:
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
name: max-request-headers
namespace: istio-system
spec:
configPatches:
- applyTo: NETWORK_FILTER # http connection manager is a filter in Envoy
match:
listener:
filterChain:
filter:
name: "envoy.http_connection_manager" # istio 1.6.8
patch:
operation: MERGE
value:
typed_config:
"@type": "type.googleapis.com/envoy.config.filter.network.http_connection_manager.v2.HttpConnectionManager" # istio 1.6.8
max_request_headers_kb: 96
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。