如何配置istio-sidecar envoyproxy不添加x-envoy-peer-metadata请求头?
如何禁用Istio Sidecar Envoy添加的x-envoy-peer-metadata和x-envoy-peer-metadata-id请求头
这两个请求头是Istio Sidecar在服务间通信时自动注入的元数据头,确实可以通过EnvoyFilter配置来禁用,以下是两种可行方案:
方案1:禁用所有Envoy自动添加的头(包含目标头)
通过开启路由过滤器的suppress_envoy_headers参数,可以一次性禁用包括x-envoy-peer-metadata、x-envoy-peer-metadata-id在内的所有Envoy默认注入头。
全局生效配置(所有Sidecar)
apiVersion: networking.istio.io/v1alpha3 kind: EnvoyFilter metadata: name: disable-envoy-metadata-headers namespace: istio-system spec: configPatches: - applyTo: HTTP_FILTER match: context: SIDECAR_OUTBOUND listener: filterChain: filter: name: "envoy.filters.network.http_connection_manager" subFilter: name: "envoy.filters.http.router" patch: operation: MERGE value: typed_config: "@type": "type.googleapis.com/envoy.extensions.filters.http.router.v3.Router" suppress_envoy_headers: true
针对特定服务生效
修改metadata.namespace为目标服务所在命名空间,并添加workloadSelector指定服务标签:
apiVersion: networking.istio.io/v1alpha3 kind: EnvoyFilter metadata: name: disable-envoy-metadata-headers namespace: your-service-namespace spec: workloadSelector: labels: app: your-target-app configPatches: - applyTo: HTTP_FILTER match: context: SIDECAR_OUTBOUND listener: filterChain: filter: name: "envoy.filters.network.http_connection_manager" subFilter: name: "envoy.filters.http.router" patch: operation: MERGE value: typed_config: "@type": "type.googleapis.com/envoy.extensions.filters.http.router.v3.Router" suppress_envoy_headers: true
方案2:仅移除指定的两个头(更精准)
如果需要保留其他Envoy默认头,仅移除x-envoy-peer-metadata和x-envoy-peer-metadata-id,可以使用Lua过滤器实现:
apiVersion: networking.istio.io/v1alpha3 kind: EnvoyFilter metadata: name: remove-specific-envoy-headers namespace: istio-system spec: configPatches: - applyTo: HTTP_FILTER match: context: SIDECAR_OUTBOUND listener: filterChain: filter: name: "envoy.filters.network.http_connection_manager" subFilter: name: "envoy.filters.http.router" patch: operation: INSERT_BEFORE value: name: envoy.lua typed_config: "@type": "type.googleapis.com/envoy.extensions.filters.http.lua.v3.Lua" inline_code: | function envoy_on_request(request_handle) request_handle:headers():remove("x-envoy-peer-metadata") request_handle:headers():remove("x-envoy-peer-metadata-id") end
注意事项
- 配置应用后,需滚动更新目标服务Pod以重启Sidecar,确保配置生效
- 禁用这些头不会影响Istio核心流量管理、监控功能,但部分依赖服务元数据的高级规则(如基于元数据的路由)可能受影响
- 安全文档建议禁用此类头的原因是它们可能泄露服务集群的元数据信息,禁用后可降低数据泄露风险
内容的提问来源于stack exchange,提问作者LarsMattssonNordnet
相关产品推荐
相关产品推荐

