The*_*oth 5 docker grpc envoyproxy
我正在关注本教程,以便将 gRPC 服务转码为 HTTP。但是,它不是最新的,因为它使用 envoy API v2,但这不再可用(我收到一个错误说这个),他们现在使用 v3。因此,语法略有不同。
对于 v2,此代码段没有语法错误,但是,它引发了一个错误,指出 V2 不再可用(因此最终无法使用):
- name: envoy.http_connection_manager
config:
...
Run Code Online (Sandbox Code Playgroud)
根据这个例子,有一个 HTTP 连接管理器(它是 v3 兼容的)的方法是在envoy.yml配置文件中这样做(我们明确地告诉我们我们正在使用 v3):
- name: envoy.filters.network.http_connection_manager
typed_config:
"@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
Run Code Online (Sandbox Code Playgroud)
但是,我收到一个Illegal map value错误指向"@type":
error initializing configuration '/etc/envoy/envoy.yaml': yaml-cpp: error at line 15, column 17: illegal map value
我也试过强制 envoy 使用 V2,带有 flag --bootstrap-version 2,但是一直说 v2 不再使用,所以现在使用 envoy 的唯一方法就是使用 v3。你遇到过同样的问题吗?我的目标只是将 rGPC 服务转码为 HTTP。
如果你需要更多的材料来解决问题,我把整个项目上传到了GitHub
是的,它有点痛苦。有一个在线特使配置检查器,它有助于确定哪些版本放弃了向后兼容性。
您已正确地从旧版切换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
Run Code Online (Sandbox Code Playgroud)
当前的特使文档中有一个很好的例子:https : //www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/grpc_json_transcoder_filter
| 归档时间: |
|
| 查看次数: |
124 次 |
| 最近记录: |