【问题标题】:Illegal map value with envoy v3 about typed_config http connection manager关于 typed_config http 连接管理器的 envoy v3 的非法映射值
【发布时间】:2021-05-21 11:33:33
【问题描述】:

我正在关注tutorial,以便将 gRPC 服务转码为 HTTP。 但是,它不是最新的,因为它使用 envoy API v2,但这不再可用(我收到一个错误说这个),他们现在正在使用 v3。因此,语法略有不同。

对于 v2,这个 sn-p 没有语法错误,但是,它会引发一个错误,指出 V2 不再可用(因此最终无法使用):

 - name: envoy.http_connection_manager
        config:
            ...

根据example,在envoy.yml 配置文件中使用 HTTP 连接管理器(符合 v3)的方法是这样做(我们明确告诉我们正在使用 v3) :

- name: envoy.filters.network.http_connection_manager
        typed_config:
          "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager

但是,我收到了指向 "@type"Illegal map value 错误: error initializing configuration '/etc/envoy/envoy.yaml': yaml-cpp: error at line 15, column 17: illegal map value

我也试过强制envoy使用v2,标志--bootstrap-version 2,但是一直说v2不再使用,所以现在使用envoy的唯一方法就是使用v3。 您是否遇到过同样的问题? 我的目标只是将 rGPC 服务转码为 HTTP。

如果您需要更多材料来解决问题,我将整个项目上传到GitHub

【问题讨论】:

    标签: docker grpc envoyproxy


    【解决方案1】:

    是的,有点痛。 有一个在线特使config checker 可以帮助确定哪些版本放弃了向后兼容性。

    您已正确地从旧版 config 切换到 typed_config 数据。

    但是,您似乎无意中在最新配置(第 15 行)中包含了一个选项卡,导致 illegal map value

    您还需要像这样将clusters/hosts 部分迁移到load_assignments

    load_assignment:
      cluster_name: grpc-backend-services
      endpoints:
      - lb_endpoints:
        - endpoint:
            address:
              socket_address:
                address: 127.0.0.1
                port_value: 53000
    

    在当前的 envoy 文档中有一个很好的例子:https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/grpc_json_transcoder_filter

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-31
    • 1970-01-01
    • 1970-01-01
    • 2015-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多