无法使用内部 IP 在 Cloud Run 和 Compute Engine 之间连接
Posted
技术标签:
【中文标题】无法使用内部 IP 在 Cloud Run 和 Compute Engine 之间连接【英文标题】:Can not connect between Cloud Run and Compute engine using Internal IP 【发布时间】:2020-05-06 04:10:02 【问题描述】:我有一个在 Cloud Run 上运行的服务,以及一个在 Compute Engine 上运行的 mysql、MongoDB 数据库。目前,我正在使用公共 IP 进行它们之间的连接,我想使用内部 IP 来提高性能,但是我找不到解决这个问题的方法,请帮我一些想法,谢谢。
【问题讨论】:
【参考方案1】:根据官方文档Connecting to instances using advanced methods
如果您有一个没有外部 IP 的隔离实例 地址(例如故意与 外部网络),您仍然可以使用其内部网络连接到它 Google Cloud Virtual Private Cloud (VPC) 网络上的 IP 地址
但是,如果您检查 Cloud Run 尚不支持的服务,您会发现:
Virtual Private Cloud Cloud Run(全托管)无法连接到 VPC 网络。
Services not yet supported
【讨论】:
【参考方案2】:尚不支持从 Cloud Run Managed 连接到 VPC 私有地址。
此功能正在开发中,称为无服务器 VPC 访问。你可以阅读更多here。
如果您有一个在同一 VPC 中运行且具有公共 IP 地址的 Compute Engine 实例,您可以创建一个 SSH 隧道以通过公共实例连接到私有 IP 地址。这需要在您自己的代码中创建隧道,这很容易做到。
【讨论】:
嘿约翰!由于现在支持这一点,我认为应该更新答案。【参考方案3】:现在支持。您可以使用 VPC 网络连接器(测试版):
此功能处于预发布状态,可能会更改或具有 有限的支持。如需更多信息,请参阅产品发布阶段。
本页展示如何使用 Serverless VPC Access 连接云端 直接向您的 VPC 网络运行(完全托管)服务,允许 访问 Compute Engine 虚拟机实例、Memorystore 实例和任何 具有内部 IP 地址的其他资源。
要在 Cloud Run(全托管)服务中使用无服务器 VPC 访问, 您首先需要创建一个 Serverless VPC Access 连接器来处理 与您的 VPC 网络的通信。创建连接器后,您 设置您的 Cloud Run(完全托管)服务配置以使用该配置 连接器。
这里是如何创建的:Creating a Serverless VPC Access connector,这里是关于它的概述:Serverless VPC Access example
【讨论】:
安德烈·阿劳霍,太棒了!让我试试。【参考方案4】:您现在可以通过在部署时运行此命令来做到这一点:
gcloud run deploy SERVICE --image gcr.io/PROJECT_ID/IMAGE --vpc-connector CONNECTOR_NAME
如果您已经有 Cloud Run 部署,则可以通过运行以下命令对其进行更新:
cloud run services update SERVICE --vpc-connector CONNECTOR_NAME
更多关于here的信息
【讨论】:
以上是关于无法使用内部 IP 在 Cloud Run 和 Compute Engine 之间连接的主要内容,如果未能解决你的问题,请参考以下文章
GCP 托管的 Cloud Run 的出站 IP 范围是多少?
GCP - 无法在 Cloud Run 中使用 Google Secret Manager (@google-cloud/secret-manager)