【问题标题】:Google Cloud Run API - accessing endpoint internallyGoogle Cloud Run API - 内部访问端点
【发布时间】:2021-06-24 12:17:47
【问题描述】:

请耐心等待,我仍在使用 GCP 进行训练

场景是

  1. 我有一个 Cloud Run 实例提供 API(供内部使用)
  2. 在云计算实例上运行的中间件,提供 API。这利用了 (1) 提供的 API

(2)需要访问(1)

我正在尝试弄清楚如何发现内部 DNS 名称或 IP,以便可以将中间件 (2) 配置为访问 Cloud Run 提供的 API (1)

打算创建模板(环境配置文件),以便我最终可以自动部署所有层。

【问题讨论】:

    标签: api google-cloud-platform google-cloud-run


    【解决方案1】:

    使用 Cloud Run,您无法在首次部署之前知道服务的 URL。模式是

    https://<serviceName>-<projectHash>.<region>.run.app
    

    你也可以在开头有一个可选的标签,但这并不重要

    不好的部分是在部署之前无法计算项目哈希(或者我不知道哈希公式)。因此,不可能在部署之前在 DNS 中注册 URL。


    但是,如果您使用 terraform 之类的工具,您可以在部署后获取服务的 URL 作为输出,然后将其注册到您的 DNS 中,作为 CNAME(Cloud Run 是一项托管服务,您没有t 静态 IP)。


    您也可以使用CLoud Run API 在项目上请求list of services,选择您想要的服务并获取服务的URL (get request to the service API)


    在你碰壁之前的最后一句话,你谈论内部端点。 Cloud Run 网址是公开的,并且仅公开。因此,您的中间件需要访问互联网才能请求 Cloud Run。

    如果您的中间件部署在同一个项目上,您可以将 Cloud Run 服务ingress to internal 设置为只允许来自当前项目的 VPC 的资源访问 Cloud Run 服务。

    但 URL 仍然是公开的,您需要互联网访问才能解析和访问它。

    【讨论】:

    • 感谢您的帮助。我还碰巧从 2 月份偶然发现了这个 post - GCP 支持提到目前无法使用私有 IP 调用 Google Run 托管 API 端点;但这是在卡片上的东西。现在看来,所有调用主机都必须具有互联网连接才能调用 Cloud Run 托管端点(正如您所指出的那样)手指交叉这很快就会实现..
    • 我怀疑内部 IP 连接是否会在一天内实现......但是,在您的子网中,在您的 VPC 中,您可以检查私有 google 访问。这允许此子网中的所有资源 (VM) 访问公开可用的 Google Cloud 资源,而无需直接访问狂野的互联网。对于谷歌云服务来说,这是一条特殊的道路。
    【解决方案2】:

    如果您不想被服务发现和构建完整 URL 所困扰,您可以使用 runsd,这是我为 Cloud Run 开发的解决方案,允许您通过服务名称调用服务(例如 http:/ /你好)。

    【讨论】:

      猜你喜欢
      • 2021-08-29
      • 2020-11-05
      • 1970-01-01
      • 1970-01-01
      • 2020-12-28
      • 2020-12-24
      • 1970-01-01
      • 2021-04-07
      • 2021-01-19
      相关资源
      最近更新 更多