如何启用私有 IP 连接到来自第三个项目的两个独立项目上的两个 Cloud SQL 实例?

How to enable private IP connectivity to two Cloud SQL instances on two separate projects from third project?

我的场景开始于需要从构建服务器 运行 访问 Cloud SQL 的私有 IP 作为同一项目中的计算引擎实例。对于某些上下文,我的构建服务器连接到 Cloud SQL 以执行 DDL SQL 语句(自动 SQL 迁移基于 init.sql 之间的差异,这是我的存储库的一部分和目标数据库上的模式)如果部署的工件需要新的行/表。我使用 VPC GCP 用于云 SQL 数据库和我为我的计算引擎实例明确创建的 VPC 之间的 VPC 对等连接来完成此操作。

我的方案最终演变为将构建服务器移动到一个单独的项目中。由于 ,我创建了一个共享 VPC,其中我的 Cloud SQL 项目被视为宿主项目,而我的构建服务器项目被视为服务项目。这一切都很好。

我已将构建服务器移动到一个单独的项目中,最终目标是为我的暂存环境创建第三个项目。然后我计划在我的构建服务器和其他两个项目之间启用私有 IP 连接。但是,现在我正在尝试添加暂存环境,我发现这是不可能的,因为根据 docs:

You can create and use multiple host projects; however, each service project can only be attached to a single host project.

而我希望生产项目和暂存项目都成为我的构建服务器服务项目的宿主项目。

有没有办法满足这两个要求?

  1. 将我的构建服务器、生产环境和暂存环境作为三个独立的项目。
  2. 在我的构建服务器与生产和登台数据库之间建立私有 IP 连接。

我也对 critiques/feedback 我在这里概述的设置持开放态度,因为在一天结束时,我只是从我所知道的和目前已经设置的内容中得出上述要求。

解决方案是为构建服务器和 2 个数据库(prod 和 staging)使用相同的 VPC。问题是可能导致问题的环境的非隔离。

我对 change/adapt 设计有 2 个建议:

  • 保持相同的环境:1 个用于生产,1 个用于暂存。 2 个不同的项目,由于在两个环境上的设计相同,因此具有很强的隔离性和易于重现性。但是比较贵
  • 在云 SQL 数据库中保留 public IP 并使用云 SQL 代理访问它们。您获得了一个加密通道,您不再受限于对等、私有 P 和共享 VPC。拥有 public IP 并不意味着拥有授权网络。您没有授权任何网络(类似于防火墙规则 0.0.0.0/0 全部拒绝),您只有一个 public IP。