GRPC 转码REST API 上的 502 服务器错误和 GRPC 上的 200 正常 - GKE 上的云端点

问题描述

在使用 ESP 和 Cloud Endpoints api_config 文件在 GKE 上部署我的 GPRPC 服务器后,我能够正确测试(200 OK)使用 GRPC 客户端的请求,但所有使用 REST API 转码的 CURL 请求都失败并出现奇怪的:“502服务器错误 - 服务器遇到临时错误,无法完成您的请求。请在 30 秒后重试。"

我以前从来没有遇到过这个问题。看起来 Ingress 部分并不总是正确构建。有时有效,有时失败。

你有什么线索可能来自哪里吗?

解决方法

我参考了文档 Getting started with Endpoints for GKE with ESPDeploying a service that uses transcoding,并在我的环境中使用 REST API 转码成功在 GKE 上部署了 GRPC 服务器,其中包含 ESP、Cloud Endpoints 和 CURL 请求。

在部署“Getting started with Endpoints for GKE with ESP”文档时,我做了如下修改:

  1. 使用了不需要 Ingress 服务的 grpc-bookstore 配置文件。
  2. 添加角色“Service Controller”和“Cloud Trace Agent”,即使节点服务帐号是 Compute Engine 默认服务帐号。

虽然Deploying a service that uses transcoding,我做了如下修改:

在python命令下使用,

   python3 -m grpc_tools.protoc \
     --include_imports \
     --include_source_info \
   --proto_path=${GOOGLEAPIS_DIR} \
     --proto_path=. \
     --descriptor_set_out=api_descriptor.pb \
     --python_out=generated_pb2 \
     --grpc_python_out=generated_pb2 \
   http_bookstore.proto

创建描述符文件。

在 grpc-bookstore 的配置文件中将服务的目标端口更改为 8080。

试试这个,如果你遇到任何错误,请告诉我。