Python GCP Cloud Run gRPC服务无法响应问题排查求助
排查GCP Cloud Run部署gRPC服务后Envoy代理连接失败问题
问题背景
我正在开发一款聊天应用,本地环境由三个核心组件构成且运行正常:
- 基于SolidJS、Vite构建的客户端,使用
nice-grpc-web库 - Docker容器运行的Envoy代理
- Python编写的gRPC服务器,通过Haystack的
PromptNode流式返回响应,支持直接运行或Docker部署
将Python服务以Docker容器部署到GCP Cloud Run后,服务本身运行正常且通过健康检查,但将Envoy代理指向该服务时,客户端抛出错误:
ClientError: /ChatBot/AskQuestion UNAVAILABLE: upstream connect error or disconnect/reset before headers. reset reason: connection failure
排查建议
1. 适配Cloud Run的HTTPS协议要求
Cloud Run对外仅暴露HTTPS端口(443),所有外部请求必须使用HTTPS。若Envoy仍以HTTP方式连接服务,会直接导致连接失败。需在Envoy集群配置中启用TLS:
clusters: - name: chatbot-grpc-service connect_timeout: 5s type: LOGICAL_DNS lb_policy: ROUND_ROBIN load_assignment: cluster_name: chatbot-grpc-service endpoints: - lb_endpoints: - endpoint: address: socket_address: address: <你的Cloud Run服务域名> port_value: 443 transport_socket: name: envoy.transport_sockets.tls typed_config: "@type": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext sni: <你的Cloud Run服务域名>
2. 确认Cloud Run端口配置
Cloud Run默认监听端口为8080,若你的gRPC服务在Docker中监听50051端口,需在部署时明确指定:
- 命令行部署:
gcloud run deploy --port=50051 - 控制台部署:在Cloud Run控制台的「容器」设置中修改「端口」为50051
注意:Envoy配置中只需填写Cloud Run对外的443端口,Cloud Run会自动将请求转发到你指定的容器端口。
3. 检查CORS配置
gRPC-Web依赖CORS规则实现跨域请求,需确保Envoy代理配置了正确的CORS过滤器:
http_filters: - name: envoy.filters.http.cors typed_config: "@type": type.googleapis.com/envoy.extensions.filters.http.cors.v3.Cors # 后续添加grpc_web、router等其他过滤器
4. 验证服务网络可达性
- 本地直接调用测试:使用
grpcurl工具直接访问Cloud Run服务,确认服务本身可正常响应:
若调用失败,说明gRPC服务本身存在配置问题,需检查服务监听端口、proto定义是否正确。grpcurl -insecure <你的Cloud Run服务域名>:443 ChatBot.AskQuestion - 查看Cloud Run访问权限:确保服务设置为「允许所有访问」(测试阶段),或配置了正确的VPC连接器(若需访问内部资源)。
- 开启Envoy调试日志:启动Envoy时添加
--log-level debug参数,查看连接失败的具体细节(如DNS解析失败、TLS握手错误等)。
补充:Dockerfile配置检查
确保Python gRPC服务的Dockerfile正确暴露端口且启动命令无误:
FROM python:3.11-slim WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY . . EXPOSE 50051 CMD ["python", "server.py"]
注:Cloud Run会忽略EXPOSE指令,但部署时必须指定正确的容器端口。
内容的提问来源于stack exchange,提问作者serlingpa
相关产品推荐
相关产品推荐

