我一直在尝试使用私有IP连接设置Google Cloud SQL,其中它绑定到的IP范围是手动分配的,并且尚未成功。我不知道这是否是实现中的一个错误,因为它仍处于测试版,如果文件里少了一些东西,或者我只是做错了什么。(命令行会话在底部,用于快速总结我看到。(
最初,我将其设置为自动分配IP范围。一切都奏效了很好,只是它选择了172.17.0.0/24,这是其中一个网络由docker在我的GCE实例上管理,所以我无法从那里连接(但可以在没有docker的另一台机器上(。所以我试着查阅手册分配路线。
首先,我删除了在上创建的所有相关网络对象代表我。有两个VPC对等体,cloudsql-postgres-googleapis-com
和servicenetworking-googleapis-com
,我删除了它,然后我确认与它们相关联的路由条目也消失了。
然后,我按照指示https://cloud.google.com/vpc/docs/configure-private-services-access#allocating-range,创建10.10.0.0/16,因为我希望它在我的default
网络中,即自动模式,所以我被限制在下半部分(目前是清楚的(。
在这一点上,我回到了Cloud SQL实例创建页面,因为应该为我做剩下的事情。我选中了"私人IP"框,并选择了CCD_ 4网络。
当时我没有做笔记,所以我的记忆可能有缺陷,特别是因为我在后来的尝试中的经验一直不同,但我记得在网络选择下拉列表下面看到的是"此实例将使用现有的托管服务连接"。我以为这意味着它将使用我创建的地址范围,并继续实例创建,但该实例再次登录172.17.0.0/24网络。
大约在第三次,在那条消息之前的地方,它有一个选择框列出我的地址范围。再说一次,我的记忆力很差,所以我不知道我是否看到或点击"连接"按钮,但最终结果是一样的。
在第四次尝试时,我确实注意到了"连接"按钮,并确保点击它,并等待它说它成功了。它确实做到了:它取代了下拉列表和按钮,其中包含我以前看到的关于使用现有连接。同样,该实例是在错误的网络上创建的。
我尝试了第五次,这次创建了一个新的地址范围name--google-managed-services-default
--当我刚开始的时候,自动分配已经把它还给了我(私人服务访问文档建议(。但即使有了这个名字选择了它,我仍然在错误的网络上使用了该实例。
事实上,我现在看到,在我点击"连接"后,我可以去查看路线和请确保创建的路由为172.17.0.0/24。
如果我从命令行执行所有操作,似乎也会发生同样的事情:
$ gcloud beta compute addresses list
NAME ADDRESS/RANGE TYPE PURPOSE NETWORK REGION SUBNET STATUS
google-managed-services-default 10.11.0.0/16 INTERNAL VPC_PEERING default RESERVED
$ gcloud beta services vpc-peerings connect
--service=servicenetworking.googleapis.com
--ranges=google-managed-services-default
--network=default
--project=...
$ gcloud beta services vpc-peerings list --network=default
---
network: projects/.../global/networks/default
peering: servicenetworking-googleapis-com
reservedPeeringRanges:
- google-managed-services-default
---
network: projects/.../global/networks/default
peering: cloudsql-postgres-googleapis-com
reservedPeeringRanges:
- google-managed-services-default
$ gcloud beta compute routes list
NAME NETWORK DEST_RANGE NEXT_HOP PRIORITY
peering-route-ad7b64a0841426ea default 172.17.0.0/24 cloudsql-postgres-googleapis-com 1000
所以现在我不确定还能尝试什么。有没有什么状态我没有想过要清除?路由应该如何连接到地址范围?为什么它创造了两个贵族,而我只要求一个?如果我手动创建一个到正确地址范围的路由,我想这是行不通的,因为Postgres端点仍然位于错误的地址。
(是的,我可以重新配置docker,但我不愿意。(
我在这里找到的https://cloud.google.com/sql/docs/mysql/private-ip这似乎是正确的行为:
在建立了专用服务访问连接,并创建了为该连接配置了专用IP的云SQL实例后,无法修改或删除云SQL服务使用的相应(内部(子网和范围。即使您删除了对等网络和IP范围,情况也是如此。内部配置建立后,在同一区域创建并配置为私有IP的任何云SQL实例都将使用原始的内部配置。
谷歌云的服务机制中出现了一个错误,现在已经修复。如需参考,请参阅上的对话https://issuetracker.google.com/issues/118849070.