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

Anthos Service Mesh中部署GCP Auth Envoy Filter失败求助

关于Anthos Service Mesh中GCP Auth Filter部署问题的解答

问题背景

  • 尝试部署GCP Auth Filter,该过滤器官方说明在Envoy 1.22版本中可用
  • 当前使用Anthos Service Mesh(ASM)1.14,其基于Envoy 1.22,已通过以下命令验证Envoy版本:
    kubectl exec -it mypod -c istio-proxy -- pilot-agent request GET server_info --log_as_json | jq {version}
    
    输出:
    {
      "version": "70cf007ae0dcec3e226544e16af578d3b980f29f/1.22.2/Modified/RELEASE/BoringSSL-FIPS"
    }
    
  • 编写的EnvoyFilter配置如下:
    apiVersion: networking.istio.io/v1alpha3
    kind: EnvoyFilter
    metadata:
      name: filter-gcp
    spec:
      workloadSelector:
        # 按同namespace内的标签选择工作负载
        labels:
          istio: ingressgateway
      configPatches:
        # 要修改的Envoy配置
        - applyTo: HTTP_FILTER
          match:
            context: GATEWAY
            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.gcp_authn
              typed_config:
                "@type": type.googleapis.com/envoy.extensions.filters.http.gcp_authn.v3.GcpAuthnFilterConfig
                http_uri:
                  uri: http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/identity?audience=[AUDIENCE]
                  cluster: metadata
                  timeout: 10ms
    
  • Ingress Gateway日志出现以下错误:
    [libprotobuf WARNING external/com_google_protobuf/src/google/protobuf/text_format.cc:2139] Can't print proto content: proto type type.googleapis.com/envoy.extensions.filters.http.gcp_authn.v3.GcpAuthnFilterConfig not found
    [libprotobuf WARNING external/com_google_protobuf/src/google/protobuf/text_format.cc:2139] Can't print proto content: proto type type.googleapis.com/envoy.extensions.filters.http.gcp_authn.v3.GcpAuthnFilterConfig not found
    2022-08-09T08:05:21.513377Z warning envoy config    gRPC config for type.googleapis.com/envoy.config.listener.v3.Listener rejected: Error adding/updating listener(s) 0.0.0.0_80: Didn't find a registered implementation for name: 'envoy.filters.http.gcp_authn'
    
  • 用户疑问:该过滤器是否受ASM支持?配置是否有误?或是ASM定制的Envoy版本未包含该过滤器?

解答

1. 过滤器是否受ASM支持?

ASM并非包含Envoy的所有原生扩展过滤器。GCP Auth Filter属于Envoy官方扩展组件,但ASM为了保持服务网格的稳定性、适配GCP生态的特定需求,默认并未预装该过滤器。即使底层Envoy版本满足要求(1.22+),ASM也会裁剪部分非核心扩展。

2. 是否配置有误?

从配置语法看,整体结构符合EnvoyFilter插入HTTP过滤器的规范,但存在两个潜在细节问题:

  • metadata集群是否存在:需要确认Istio/ASM默认是否预配置了指向metadata.google.internal的metadata集群,若不存在需额外添加集群配置的patch。
  • Proto类型匹配:错误日志提示找不到指定的proto类型,一方面是因为过滤器未被编译进ASM的Envoy二进制,另一方面也可确认proto版本是否与ASM的Envoy版本匹配(v3版本是正确的,但ASM可能使用了不同的proto包路径)。

不过核心问题并非配置语法错误,而是过滤器未被ASM的Envoy包含。

3. ASM的Envoy是否未包含该过滤器?

是的,从错误日志Didn't find a registered implementation for name: 'envoy.filters.http.gcp_authn'可以明确判断:ASM提供的Envoy二进制中未编译并注册该过滤器。ASM的Envoy是Google定制版本,仅集成与GCP服务、Istio核心功能强相关的过滤器,原生Envoy的部分扩展会被排除。

替代方案

若需在ASM中实现类似GCP Auth Filter的功能,可考虑:

  • 使用ASM原生身份认证机制,集成Google Cloud IAP(身份感知代理)作为入口认证
  • 自定义EnvoyFilter,使用JWT过滤器配合GCP OIDC服务实现认证逻辑
  • 若必须使用GCP Auth Filter,需自行构建包含该过滤器的定制化Envoy镜像并替换ASM代理镜像(此方法需维护自定义镜像,且可能失去ASM官方支持)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 20:03:30