如何在 Google Cloud Platform 上部署 GRPC 服务器和客户端?

Posted

技术标签:

【中文标题】如何在 Google Cloud Platform 上部署 GRPC 服务器和客户端?【英文标题】:How do I deploy a GRPC server and client on Google Cloud Platform? 【发布时间】:2019-02-06 02:55:36 【问题描述】:

我是使用 GCP/Kubernetes 的新手。我想将 GRPC 服务和客户端都部署到 GCP。

我已经阅读了很多关于它的内容并尝试了几件事。在云端点上有一些东西,您可以在其中编译您的 proto 文件并执行 api.config.yaml。 (https://cloud.google.com/endpoints/docs/grpc/get-started-grpc-kubernetes-engine)

这不是我想要做的。我想用它的 .proto 上传一个 GRPC 服务并公开它的 HTTP/2 公共 IP 地址和端口。然后,部署一个与该地址交互并公开 REST 端点的 GRPC 客户端。

我怎样才能完成这项工作?

【问题讨论】:

几个月前我也做过同样的事情。我在 github grpc 服务器 (github.com/balchua/grpc)、grpcdomain (github.com/balchua/grpcdomain) 中有 3 个项目,其中仅包含 proto,然后是代码生成。最后是演示 (github.com/balchua/demo),它公开了一些 web pagr 并与 grpc 服务器通信。所有示例都带有 kube 清单。如果你有兴趣可以去看看。不幸的是,我没有文档,并且只有 java 。 【参考方案1】:

将 grpc 应用程序部署到 GKE/Kubernetes:

    了解 gRPC,遵循https://grpc.io/docs/quickstart/ 的快速入门之一 了解如何为您的应用程序构建 Docker 映像。 关注这个 Docker 教程:https://docs.docker.com/get-started/part2/#conclusion-of-part-two 拥有 Docker 映像后,请按照 https://cloud.google.com/kubernetes-engine/docs/tutorials/hello-app 教程学习如何: 将容器映像推送到 Google Container Registry 创建 GKE 集群 部署容器镜像 通过 IP 地址将其公开在公共互联网上。

这些应该是好的开始。

请注意,gRPC 应用程序与 HTTP Web 服务器应用程序没有太大区别。就 Kubernetes 而言,它们只是一个带有端口号的容器镜像。 :)

【讨论】:

嘿@Ahmet,谢谢。但是,在将映像部署到 GKE 时,我遇到了以下错误:Failed to pull image "gcr.io/[...]/[...]": rpc error: code = Unknown desc = Error response from daemon: repository gcr.io/[...]/[...] not found: does not exist or no pull access。我已从我的 GCP GCR 页面确认该图像已正确列出。知道会发生什么吗? 很可能您没有正确遵循本教程。请注意,如果您要拉取镜像,您的 GKE 集群和 GCR 注册表必须位于同一个 Google Cloud 项目中。 完成。谢谢你。你是对的,我使用的集群不正确。 嘿 @AhmetB-Google applogogies 回复这么老的答案 我的项目中有多个服务,所以我需要单独部署每一个吗?我应该遵循什么来部署我的应用程序?我应该关注this 吗?

以上是关于如何在 Google Cloud Platform 上部署 GRPC 服务器和客户端?的主要内容,如果未能解决你的问题,请参考以下文章

Google Cloud Messaging VS Google Cloud Platform

如何在 Google Cloud Platform 上查看 Dataproc 作业的输出文件

如何从 google-cloud-platform vminstance 中的 pubsub 回调函数调用全局变量?

如何让 PySoundfile 在 Google Cloud Platform 柔性环境中运行? [关闭]

Google Cloud Platform:如何监控VM实例的内存使用情况

有关如何从 Google Cloud Platform 调用外部网络服务的任何信息?