我一直在尝试使用私有(private) IP 连接设置 Google Cloud SQL,其中
它绑定(bind)的IP范围是手动分配的,没有成功。一世
不知道这是否是实现中的错误,因为它仍处于测试阶段,如果
文档中缺少某些内容,或者我只是做错了什么。
(命令行 session 在底部,用于快速总结我的工作
看到。)
最初,我将其设置为自动分配 IP 范围。这一切都奏效了
很好,只是它选择了 172.17.0.0/24,这是其中一个网络
由我的 GCE 实例上的 docker 管理,所以我无法从那里连接(但是
可以在另一台没有 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 实例创建页面,因为它
应该为我做剩下的事情。我选中了“私有(private) IP”框,然后选择了default
网络。
我当时没有做笔记,所以我的内存可能有缺陷,
特别是因为我在后来的尝试中的经验一直不同,
但我记得看到的是在网络选择下拉列表下方,它说
“此实例将使用现有的托管服务连接”。我以为
这意味着它将使用我创建的地址范围,并继续使用
实例创建,但实例再次登陆 172.17.0.0/24 网络。
回到第三次,那个消息之前的地方,它有一个选择框
列出我的地址范围。再一次,我的内存力很差,所以我不知道我是否
看到或单击“连接”按钮,但最终结果是相同的。
在第四次尝试时,我确实注意到了“连接”按钮,并确保单击
它,并等待它说它成功了。它做了什么,有点:它取代了
下拉菜单和按钮与我之前看到的关于使用
现有的连接。再一次,实例是在错误的网络上创建的。
我尝试了第五次,这次创建了一个新的地址范围
姓名——google-managed-services-default
——这是那个名字
当我第一次开始时,自动分配已将其归还(以及
私有(private)服务访问文档建议)。但即使有这个名字,而且明确地
选择它,我仍然以错误的网络上的实例结束。
确实,我现在看到点击“连接”后,我可以去查看路线和
看到创建的路由是到 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这似乎是正确的行为:
在您建立私有(private)服务访问连接并创建 Cloud SQL 实例并为该连接配置私有(private) IP 后,无法修改或删除 Cloud SQL 服务使用的相应(内部)子网和范围。即使您删除对等互连和您的 IP 范围也是如此。建立内部配置后,在同一区域创建并配置为私有(private) IP 的任何 Cloud SQL 实例都使用原始内部配置。
关于google-cloud-platform - GCP Cloud SQL 的私有(private) IP 地址范围被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53112449/