【问题标题】:Google Cloud Run service url (discovery)Google Cloud Run 服务网址(发现)
【发布时间】:2020-09-17 05:25:27
【问题描述】:

我正在运行几个 gcloud 服务,它们自动分配了以下格式的 url:

https://SERVICE_NAME-XXXXXXX-ew.a.run.app/

使用这些 URL 并将这些 URL 传递给客户端并不是特别容易。另一种方法是使用自定义域,但这需要在 DNS 记录中硬编码子域(据我所知),我想避免这种情况并使用默认 URL。

使用这些网址的最佳做法是什么?我可以想象保留一些 service->URL 的映射并将其传递给客户端,但我想避免重新发明轮子。

【问题讨论】:

  • 我的 2 美分...我假设 URL 由 SERVICE_NAME + 项目 ID 组成。如果我正在创建一个服务,那么我希望这个 URL 在我的服务生命周期内保持不变。然后,我将创建一个使用 CNAME 作为别名的 DNS 条目。因此,与其公开:billing-kolban-12345-ew.a.run.app,不如公开:billing.api.mycompany.com,我们有一个 CNAME 映射。为获得最佳体验,请进一步考虑利用 API 管理(例如 Apigee 或 CloudEndponts)作为您服务的代理。
  • 你所有的服务都在同一个地区吗?

标签: google-cloud-platform google-cloud-functions service-discovery google-cloud-run


【解决方案1】:

https://github.com/ahmetb/runsd 我发布了一个名为runsd 的外部工具,可让您执行此操作。看看吧。


感谢您提出这个问题! Cloud Run 的“按名称发现服务”是一个非常活跃的工作领域。不过,我们还没有可以分享的有效时间表。

你可以在这里看到我在 Cloud Run 上运行它的原型:https://twitter.com/ahmetb/status/1233147619834118144

链接的 Google Cloud Service Directory 等 API 更适合您可能希望构建到 RPC 堆栈(例如 gRPC)的自定义/DIY 服务发现。它更像是一个托管域名目录,您可以将其与您的 RPC 集成。

如果您有兴趣在未来参与此功能的 Alpha 版,请给我发送电子邮件至 ahmetb at google。

【讨论】:

  • 您好,感谢您的回答,很高兴参与!我想使用跨区域发现。
【解决方案2】:

您可以使用测试版服务Service Directory

在服务部署时

  • 使用名称和 URL 作为元数据创建您的服务

在您的代码中

  • 请求服务元数据及其名称,并获取 URL
  • 使用网址

您无法使用服务的端点功能,因为您没有 IP/端口。

但是,现在有客户端库,你必须直接使用 API。

【讨论】:

  • 这看起来很有希望!他们声明:Service Directory allows clients to resolve services via DNS, HTTP, and gRPC.——但是它无处可寻如何通过 HTTP 查询——这正是移动应用程序所需要的。
  • HTTP?你的意思是没有SSL?为什么手机无法实现?
  • 我只是复制了他们写的内容——我想将 HTTP 与 SSL 一起使用。但我没有找到任何方法通过 HTTP 从应用程序调用它。
猜你喜欢
  • 1970-01-01
  • 2020-09-24
  • 2020-02-29
  • 2021-07-13
  • 2021-02-12
  • 2021-05-31
  • 2019-11-13
  • 2022-08-05
  • 2019-10-24
相关资源
最近更新 更多