我已从我的 VPC 为 CloudSql 配置了私有服务访问。我的 VPC 在 us-west1 和 us-central1 区域有 2 个子网。
问题是:
我的应用程序无法从 us-west1(子网)连接到 CloudSQL 实例,但可以从其他区域 us-central1 正常连接。
我相信私人服务访问处于 VPC 级别,因此该 VPC 中的所有子网都应该能够正常连接 CloudSQL 实例。
感谢帮助!
答案1
根据 GCP 公开文件的规定关联在网络要求段落中:
要通过私有 IP 地址访问 Cloud SQL 实例,您必须使用同一区域内的 GCP 资源。
请确保该应用程序与 cloudSQL 实例位于同一区域。
答案2
除了上述Django的回答之外:
用于连接到 Cloud SQL 实例的 GCP 资源也必须与您的 Cloud SQL 实例位于同一区域,并且也使用该区域的 VPC 网络子网。这些资源可以是 Compute Engine 实例 (VM) 或 Google Kubernetes Engine 实例。
参考:https://cloud.google.com/sql/docs/postgres/configure-private-ip
这适用于 MySQL 和 PostgreSQL。
截至撰写本文时,这是 Google Cloud Networking 的一个已知限制。我只是希望在不久的将来它能够得到支持。
答案3
我想给出一个更新的答案,因为根据更新后它现在应该可以工作了文档:
您可以从任何区域通过私有 IP 进行连接。您还可以通过项目之间的共享 VPC 进行连接。
我能够使用无服务器 VPC 连接器(目前为测试版)从不同于我的数据库的区域使用私有 IP 连接 Cloud Run 服务。