【问题标题】:GCP SQL instances connectios with autoscale GKE nodes与自动扩缩器 GKE 节点的 GCP SQL 实例连接
【发布时间】:2021-11-10 07:14:09
【问题描述】:

我有一个包含多个 SQL 实例的 GCP 项目和两个具有自动缩放功能的 GKE 集群。我在连接选项卡中使用 GKE 节点的公共 IP 配置了 SQL 实例,以允许通过公共 IP 进行连接。我的疑问是,当我的集群自动扩展时,如果我不添加新的公共 ip 节点,它里面的 pod 就不会连接。有没有办法在创建节点的时候自动添加节点的公网ip?

谢谢

【问题讨论】:

  • 为什么需要专用公网IP才能连接SQL数据库?您可以在同一个节点上拥有多个 pod,并使用相同的 IP 访问同一个数据库。你有什么顾虑?
  • 我的 Pod 通过公共 IP 连接到数据库(数据库在 GCP SQL 中)。
  • 是吗?使用 TCP 协议,您可以从同一个 IP 地址多次到达同一个 IP 地址。您的源端口将有所不同,以允许网络接口将数据分派到正确的进程。我不明白你在担心什么。试一试,你会看到,它有效!
  • 我的问题是,当 GKE 的 mi 集群使用新节点自动扩展时,我必须在 SQL 数据库的 Allow ip 连接中添加新节点的公共 IP。我需要一种自动化的方法

标签: google-cloud-platform google-kubernetes-engine


【解决方案1】:

感谢您的最后评论,我了解您的问题!所以,这是错误的方式,原因有两个:

  • 这不是自动的,也很难处理
  • 您节点的 IP 是临时的,如果您将其列入白名单,然后将该 IP 释放到 Google Cloud IP 池,另一个需要公共 IP 的用户(坏演员?)可以重复使用相同的 IP 并访问您的数据库!

所以,您有 2 个解决方案:

  • 首先,您可以使用私有IP。通过这种方式,您不必担心添加授权IP。如果 IP 在正确的 VPC 中,则路由是自动的(如果不是,请查看防火墙规则)。
  • 另一种解决方案是使用加载了Cloud SQL Auth proxy 的sidecar 容器(或者将其加载到您的容器中,但是为了更好地分离关注点,我更喜欢sidecar)。这个 sidecar 将与您的数据库建立一个安全的通信通道,并为您的应用程序打开一个 linux 套接字或打开一个 TCP 端口。你有一个full example here

在第二种情况下,只需要一个公网IP,不需要授权网络。 Cloud IAM 服务检查访问并允许安全隧道打开。使用此解决方案,它可扩展且更安全:您不需要数据库上的 SSL 证书来加密流量,默认情况下使用 Clous SQL 身份验证代理完成。

【讨论】:

  • 感谢您的帮助。我会试试边车代理。
猜你喜欢
  • 2017-09-20
  • 1970-01-01
  • 2021-04-23
  • 1970-01-01
  • 2021-11-21
  • 2023-02-15
  • 2023-04-04
  • 2016-08-24
  • 2022-07-26
相关资源
最近更新 更多