如何在Anthos Service Mesh中移除指定自定义Header?
移除Anthos Service Mesh自动添加的x-envoy-decorator-operation响应头
你可以通过EnvoyFilter自定义资源直接移除这个暴露集群信息的响应头,无需配置mTLS或修改业务代码,具体实现如下:
方案:使用响应头修改过滤器
通过Envoy自带的response_headers_modifier过滤器,在响应发送前移除指定头,配置简洁且可靠:
1. 创建EnvoyFilter配置文件
根据你的服务场景选择对应配置:
场景1:服务端向外部客户端返回响应时移除头
(比如你的stage-app服务接收外部请求,返回响应时去掉该头)
apiVersion: networking.istio.io/v1alpha3 kind: EnvoyFilter metadata: name: remove-decorator-header namespace: stage-app # 替换为服务所在命名空间 spec: workloadSelector: labels: app: stage-app # 替换为你的服务标签,匹配目标sidecar configPatches: - applyTo: HTTP_FILTER match: context: SIDECAR_INBOUND 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.response_headers_modifier typed_config: "@type": "type.googleapis.com/envoy.extensions.filters.http.response_headers_modifier.v3.ResponseHeadersModifier" remove_headers: - "x-envoy-decorator-operation"
场景2:客户端调用上游服务时移除返回的头
(比如你的服务作为客户端,调用其他服务后收到的响应中包含该头,需要移除)
apiVersion: networking.istio.io/v1alpha3 kind: EnvoyFilter metadata: name: remove-decorator-header namespace: stage-app spec: workloadSelector: labels: app: stage-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: INSERT_BEFORE value: name: envoy.filters.http.response_headers_modifier typed_config: "@type": "type.googleapis.com/envoy.extensions.filters.http.response_headers_modifier.v3.ResponseHeadersModifier" remove_headers: - "x-envoy-decorator-operation"
全局生效配置(所有服务都移除该头)
如果需要对集群内所有服务生效,把namespace改为istio-system,并去掉workloadSelector(不推荐随意全局修改,建议按需配置):
apiVersion: networking.istio.io/v1alpha3 kind: EnvoyFilter metadata: name: global-remove-decorator-header namespace: istio-system spec: configPatches: - applyTo: HTTP_FILTER match: context: ANY 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.response_headers_modifier typed_config: "@type": "type.googleapis.com/envoy.extensions.filters.http.response_headers_modifier.v3.ResponseHeadersModifier" remove_headers: - "x-envoy-decorator-operation"
2. 部署并验证
执行命令应用配置:
kubectl apply -f <你的配置文件名>.yaml
重新发起请求后,检查响应头,x-envoy-decorator-operation应该已被移除。
这个方案完全不依赖mTLS,仅通过Anthos Service Mesh的原生Envoy配置实现,无需修改任何业务代码。
内容的提问来源于stack exchange,提问作者Kevin
相关产品推荐
相关产品推荐

