You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写Envoy Filter允许HTTP 1.0接入Kubernetes集群(含报错)

如何编写Envoy Filter允许HTTP 1.0请求进入Kubernetes集群?

问题背景

使用curl请求集群入口时收到响应:

HTTP/1.1 426 Upgrade Required

尝试编写的EnvoyFilter配置执行创建操作时,触发如下报错:

来自服务器的错误:创建".\http10-envoy-filter.yml"时出错:准入Webhook "validation.istio.io"拒绝了请求:配置无效:Envoy filter:无法反序列化嵌套的Any类型proto type.googleapis.com/envoy.config.filter.network.http_connection_manager.v2.HttpConnectionManager:无法解析Any消息类型:type.googleapis.com/envoy.config.filter.http.http_protocol_options.v2.HttpProtocolOptions

错误配置示例

apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
  name: http10-filter
spec:
  workloadSelector:
    labels:
      istio: ingress
  configPatches:
    - applyTo: NETWORK_FILTER
      match:
        context: GATEWAY
        listener:
          filterChain:
            filter:
              name: envoy.filters.network.http_connection_manager
      patch:
        operation: INSERT_BEFORE
        value:
          name: envoy.filters.network.http_connection_manager
          typed_config:
            "@type": type.googleapis.com/envoy.config.filter.network.http_connection_manager.v2.HttpConnectionManager
            stat_prefix: ingress_http
            http_filters:
              - name: envoy.filters.http.http_protocol_options
                typed_config:
                  "@type": type.googleapis.com/envoy.config.filter.http.http_protocol_options.v2.HttpProtocolOptions
                  enable_http1: true
                  allow_absolute_url: true
              - name: envoy.filters.http.router

问题分析与修正方案

核心错误原因

  • 错误地将http_protocol_options作为独立HTTP过滤器添加,实际上它是HTTP连接管理器的内置配置参数,并非单独的过滤器。
  • 使用了过时的v2版本API,当前Istio/Envoy版本多已适配v3 API,导致序列化解析失败。

修正后的EnvoyFilter配置

apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
  name: http10-filter
spec:
  workloadSelector:
    labels:
      istio: ingress
  configPatches:
    - applyTo: NETWORK_FILTER
      match:
        context: GATEWAY
        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"
            http_protocol_options:
              enable_http_10: true
            upgrade_configs: []

关键修改点说明

  • 采用MERGE操作替代INSERT_BEFORE,直接修改现有HTTP连接管理器的配置,避免重复添加组件。
  • 将http_protocol_options移至HTTP连接管理器的根配置层级,启用enable_http_10参数(v3 API参数名与v2的enable_http1不同)。
  • 清空upgrade_configs,防止Envoy强制要求升级HTTP版本。
  • 切换为v3版本的API类型,适配当前Istio/Envoy的版本要求。

验证方法

部署修正后的配置后,用curl发送HTTP 1.0请求测试:

curl -v --http1.0 http://<你的集群入口地址>/<测试路径>

若返回正常业务响应,说明配置生效。

内容的提问来源于stack exchange,提问作者Chethan Chowdary

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 07:22:32