【问题标题】:private IP address range for GCP Cloud SQL is ignoredGCP Cloud SQL 的私有 IP 地址范围被忽略
【发布时间】:2018-11-02 03:47:49
【问题描述】:

我一直在尝试使用专用 IP 连接设置 Google Cloud SQL,其中 它绑定的IP范围是手动分配的,没有成功。一世 不知道这是否是实现中的错误,因为它仍处于测试阶段,如果 文档中缺少某些内容,或者我只是做错了什么。 (命令行会话在底部,用于快速总结我的工作 看到。)

最初,我将其设置为自动分配 IP 范围。这一切都奏效了 很好,只是它选择了 172.17.0.0/24,这是其中一个网络 由我的 GCE 实例上的 docker 管理,所以我无法从那里连接(但是 可以在另一台没有 docker 的机器上)。所以我试着去看看手册 分配路线。

首先,我拆除了所有已在其上创建的关联网络对象 我的代表。有两个 VPC 对等互连,cloudsql-postgres-googleapis-comservicenetworking-googleapis-com,我删除了,然后我确认了 与它们关联的路由条目也消失了。

然后,我按照https://cloud.google.com/vpc/docs/configure-private-services-access#allocating-range 的指示创建了 10.10.0.0/16,因为我希望它在我的default 网络中,即 自动模式,所以我只限于下半部分(目前很清楚)。

那时,我回到了 Cloud SQL 实例创建页面,因为它 应该为我做剩下的事情。我选中了“私有 IP”框,然后选择了 default网络。

当时我没有做笔记,所以我的记忆可能有缺陷, 特别是因为我在后来的尝试中的经验一直不同, 但我记得看到的是在网络选择下拉列表下方,它说 “此实例将使用现有的托管服务连接”。我以为 这意味着它将使用我创建的地址范围,并继续使用 实例创建,但实例再次登陆 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,但我不想这样做。)

【问题讨论】:

  • 在一位成功在 AWS 上运行同样的事情的朋友的推荐下,我尝试将它连接到 default 以外的 VPC,并且成功了:我得到了 10.x.0.0 /16 网络我想要。它没有让我选择地址范围(我只创建了一个),但说它将使用现有的地址范围,并提供与我的问题相同的消息。有趣的是,在运行vpc-peerings connect 之后,cloudsql-postgres-googleapis-com 对等互连还不存在,这与default 网络不同;在创建数据库之前它没有出现。也许这就是问题的一部分?
  • 另一个实验:为另一个 VPC 创建一个新的地址范围,vpc-peerings connect 最终将它连接到第一个地址范围,尽管我明确告诉它使用新的地址范围。所以看起来它只是使用第一个创建的,不管它被告知什么。

标签: google-cloud-platform google-cloud-sql


【解决方案1】:

我在这里https://cloud.google.com/sql/docs/mysql/private-ip 发现这似乎是正确的行为:

在您建立私有服务访问连接并创建 Cloud SQL 实例并为该连接配置私有 IP 后,无法修改或删除 Cloud SQL 服务使用的相应(内部)子网和范围。即使您删除对等互连和您的 IP 范围也是如此。建立内部配置后,在同一区域创建并配置为私有 IP 的任何 Cloud SQL 实例都使用原始内部配置。

【讨论】:

  • 看到这对我来说是一个真正的 WTF 时刻。现在我不得不忍受一些自动创建向导自动选择的可怕 IP 范围,除非我想创建一个全新的网络
【解决方案2】:

事实证明,Google Cloud 的服务机制存在错误,现已修复。如需参考,请参阅https://issuetracker.google.com/issues/118849070 的对话。

【讨论】:

    猜你喜欢
    • 2010-09-10
    • 2020-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-28
    • 1970-01-01
    相关资源
    最近更新 更多