问题描述
在使用 ESP 和 Cloud Endpoints api_config 文件在 GKE 上部署我的 GPRPC 服务器后,我能够正确测试(200 OK)使用 GRPC 客户端的请求,但所有使用 REST API 转码的 CURL 请求都失败并出现奇怪的:“502服务器错误 - 服务器遇到临时错误,无法完成您的请求。请在 30 秒后重试。"
我以前从来没有遇到过这个问题。看起来 Ingress 部分并不总是正确构建。有时有效,有时失败。
你有什么线索可能来自哪里吗?
解决方法
我参考了文档 Getting started with Endpoints for GKE with ESP 和 Deploying a service that uses transcoding,并在我的环境中使用 REST API 转码成功在 GKE 上部署了 GRPC 服务器,其中包含 ESP、Cloud Endpoints 和 CURL 请求。
在部署“Getting started with Endpoints for GKE with ESP”文档时,我做了如下修改:
- 使用了不需要 Ingress 服务的 grpc-bookstore 配置文件。
- 添加角色“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。
试试这个,如果你遇到任何错误,请告诉我。