Google cloud sql 云运行和云SQL之间的连接(内部IP)

Google cloud sql 云运行和云SQL之间的连接(内部IP),google-cloud-sql,google-cloud-run,cloud-sql-proxy,google-vpc,Google Cloud Sql,Google Cloud Run,Cloud Sql Proxy,Google Vpc,我已经在GCP中创建了我的组织基础设施,使用了谷歌提供的 下表列出了所有环境的IP范围: 现在我正在部署我的应用程序,它基本上由云运行服务和云SQL(Postgres)实例组成。 云SQL实例是使用“未分配”IP范围中的私有IP创建的,该IP范围是为对等服务(如云SQL)保留的 为了在Cloud Run和Cloud SQL之间建立连接,我还创建了无服务器VPC连接器(ip范围10.1.0.16/28)并配置了Cloud SQL代理 当我尝试从云运行服务连接到数据库时,我在~10秒后出现以下错

我已经在GCP中创建了我的组织基础设施,使用了谷歌提供的

下表列出了所有环境的IP范围:

现在我正在部署我的应用程序,它基本上由云运行服务和云SQL(Postgres)实例组成。 云SQL实例是使用“未分配”IP范围中的私有IP创建的,该IP范围是为对等服务(如云SQL)保留的

为了在Cloud Run和Cloud SQL之间建立连接,我还创建了无服务器VPC连接器(ip范围10.1.0.16/28)并配置了Cloud SQL代理

当我尝试从云运行服务连接到数据库时,我在~10秒后出现以下错误:

CloudSQL连接失败。有关更多详细信息,请参见:Post“https://www.googleapis.com/sql/v1beta4/projects/[我的项目]/instances/platform db/createEphemeral?alt=json&prettyPrint=false”:超过上下文截止日期

我已经为默认云运行SA和宿主项目中应用程序使用的SA授予了
角色/vpcacaccess.user

我已为服务项目中的两个SA授予
角色/compute.networkUser
。我还为两个SA授予了
角色/cloudsql.client

我已在服务项目中启用了
servicennetworking.googleapis.com
vpcaccess.googleapis.com

我已经没有主意了,我不知道问题出在哪里

当Cloud Run尝试创建对Cloud SQL API的POST请求时,这似乎是一个超时错误。所以VPC连接器(10.1.0.16/28)似乎无法连接到云SQL实例(10.0.80.0/20)


以前是否有人遇到过此问题?

当您在云运行中使用云SQL内置连接(以及应用程序引擎和云功能)时,将创建一个类似于云SQL代理的连接。这种连接只能在云SQL公共IP上实现,即使您有一个无服务器VPC连接器,并且您的数据库可以通过VPC访问

如果云SQL上只有私有IP,则需要使用私有IP访问数据库,而不是内置的云SQL连接器。更多详情请参阅


我还写了

如果您使用的是专用IP,则需要检查docker网桥网络的IP范围。下面是报告的内容:

如果客户端无法使用私有IP连接到云SQL实例,请检查客户端是否使用172.17.0.0/16范围内的任何IP。从172.17.0.0/16范围内的任何IP到使用私有IP的云SQL实例的连接失败。类似地,使用该范围内的IP创建的云SQL实例也是不可访问的。此范围为docker网桥网络保留

要解决您遇到的一些问题,请按照文档操作并发布您收到的任何错误消息,例如,您可以尝试:

请尝试使用该命令连接到您的实例。此命令在短时间内授权您的IP地址。您可以在安装了CloudSDK和mysql客户端的环境中运行此命令。您还可以在Cloud Shell中运行此命令,Cloud Shell在Google云控制台中提供,并预装了Cloud SDK和mysql客户端

暂时允许所有IP地址连接到实例。对于IPv4授权0.0.0.0/0(对于IPv6,授权::/0。测试此项后,请确保在它向世界开放时再次删除它!

你在用什么


如果没有,我将创建一个连接缓存,这样当应用程序需要链接到数据库时,它可以从池中获得临时连接。一旦应用程序完成其操作,连接将再次返回池供以后使用。要使其正常工作,连接必须是安全的,并且不浪费任何资源

我也尝试使用私有IP,但是请求超时并出现错误:HTTP 503-请求失败,原因可能是HTTP响应格式不正确,或者与实例的连接有错误。查看防火墙,没有进入规则。此外,路由看起来也很正常:有一个从VPC连接器范围到共享VPC的路由我是云的SQL范围到PeerVPC。我相信我的权限也被设置好了。我有什么遗漏吗?我发现了这个问题。它是防火墙规则丢失的。云基金会工具包创建了所有的拒绝出口规则。VPC连接器不在子网的范围内,因此默认情况下无法访问。我创建了TH。e防火墙规则,允许共享VPC中的私有服务IP范围和Google API的出口(199.36.153.8/30)。但是,我不确定如何定位VPC连接器。目前,新创建的规则以“all”为目标。是否可以向连接器添加网络标记?定义连接器时,您定义了一个范围。如果需要,您可以在防火墙规则中使用此范围。但是,不可以,您不能向连接器添加网络标记。