【问题标题】:"404 not found" when trying to make calls to a GRPC server (on GKE) from web client (grpc-web)尝试从 Web 客户端 (grpc-web) 调用 GRPC 服务器(在 GKE 上)时出现“404 未找到”
【发布时间】:2019-03-01 21:01:15
【问题描述】:

所以我已经为 GKE 部署了一个 GRPC 服务并通过在 python 中连接和调用来确认它可以工作...但我的目标是创建一个前端 Web 应用程序,而不仅仅是使用 python .

所以我有一个简单的 React 应用程序,它使用 grpc-web 进行连接,但是在进行任何 api 调用时我都会收到“404(未找到)”错误。

Here is the yaml file I'm using to deploy the service.

起初我遇到了 CORS 错误,但通过添加第 48-52 行并创建一个服务于 HTTP1 的新服务来解决这个问题。

什么可能导致 404 错误?

【问题讨论】:

  • 你的 grpc-web 连接 url 是什么?
  • 我从 grpc-web 连接的 LoadBalancer 的 IP?
  • 您是否尝试过在您的任何服务LoadBalancer 定义中将protocol: TCP 更改为protocol: HTTP?使用第 4 层和第 7 层可能有问题吗?
  • @PAckerman 刚刚尝试过,但看起来 HTTP 不是一个有效的协议,只有 TCP 或 UDP
  • 根据 Kubernetes 文档它是有效的,但可能不适用于 GKE。 kubernetes.io/docs/concepts/services-networking/service/… 唯一的想法是尝试 Ingress。

标签: kubernetes grpc google-kubernetes-engine grpc-web


【解决方案1】:

要使 gRPC-Web 正常工作,您需要在 gRPC 服务前面有一个 Envoy 端点。特别是,您需要在 envoy.yaml 配置上启用 gRPC-Web 过滤器,如下所示:https://github.com/grpc/grpc-web/blob/master/net/grpc/gateway/examples/echo/envoy.yaml#L35-L38

【讨论】:

    猜你喜欢
    • 2016-10-04
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 2020-11-20
    • 2020-09-09
    • 2020-10-18
    • 2021-04-10
    • 1970-01-01
    相关资源
    最近更新 更多