为什么服务网络没有被 VPC 网络对等互连路由?

Why is Service Networking not getting routed by VPC Network Peering?

我有一个默认网络:

resource "google_compute_network" "default" {
  description = "Default network for the project"
  name = "default"
}

在该网络中,我有许多子网和一个无服务器 VPC 连接器。我还有一个服务网络地址,以便 Cloud SQL 可以连接到我的 VPC:

# private VPC IP address for the SQL DB.
resource "google_compute_global_address" "private_ip_address" {
  provider = google-beta

  name          = "private-ip-address"
  purpose       = "VPC_PEERING"
  address_type  = "INTERNAL"
  prefix_length = 24
  address       = "10.0.2.0"
  network       = google_compute_network.default.id
}

我在另一个 GCP 项目中有一个暂存 VPC,因此我配置了 VPC 网络对等互连。一切都已“路由”(我不知道这是不是正确的术语,但所有其他 IP 都可以从我的其他 VPN 中看到)。问题是我的服务网络地址 (10.0.2.0) 不可见。我想这可能与服务网络本身也是一个对等连接这一事实有关,但这都是猜测。为什么该 IP 没有被“路由”?

当您设置到云的 VPC 连接器 SQL 时,它在幕后使用网络对等互连,并且由于 GCP 不支持传递对等互连 - 您无法使用两个 VPC 访问它:

Only directly peered networks can communicate. Transitive peering isn't supported. In other words, if VPC network N1 is peered with N2 and N3, but N2 and N3 aren't directly connected, VPC network N2 can't communicate with VPC network N3 over VPC Network Peering. Clients in one project can connect to Cloud SQL instances in multiple projects using Shared VPC networks.

来自 the documentation 中的“传递性对等”主题。

我不记得 Cloud SQL 是否支持多个 VPC 连接器,但如果没有任何限制,另一种解决方法是使用共享 VPC。