Kubernetes 白名单备选 SQL 服务器

Kubernetes Whitelist Alternative SQL Server

我们有一个 SQL 服务器托管在云端 VPS 和一个 kubernetes 集群托管在 Digital Ocean 上。我正在使用他们的 kubernetes 产品。

我们的服务器 SQL 服务器所在,有防火墙规则只允许白名单 IP 连接到 SQL 服务器。所以目前我们将 IP 添加到每个 kubernetes 节点,这样它们就可以连接到 SQL 服务器。

这显然是不可扩展的,维护任何新节点都是一个挑战,我们必须将 IP 添加到防火墙规则等...

我一直在寻找应对这一挑战的替代方案,因为我认为将 kubernetes 节点列入白名单不是正确的方法。我也不认为向所有 IP 打开服务器并依赖身份验证是非常安全的。

我看到可以使用证书或云代理(但是大多数代理的东西都是 Google 的平台,这与我们无关,我们的服务器只是 VPS') 我相信代理服务器听起来不错,但我只是想听听一些人的意见。

其他人是如何解决这个问题的?

任何反馈将不胜感激:)

如果您是私有子网中的 运行 个节点,则将子网范围列入白名单也不是一个选项。

如果您是 运行 GKE 上的 K8s 或任何其他托管云提供商(如 AWS),您可以创建 NAT 网关,这样所有请求都将通过单一 IP 发送出去。

在代理服务器中,如果请求从代理服务器重定向到应用程序,您可能会面临延迟。

NAT 网关将从单个出口点转发所有流量,而不是创建代理,这将是一种很好的管理方法。

如果您使用的是 GKE,则可以应用现成的 IAC,并且您的所有流量都将从单点 IP 转发。

IAC 地形:https://registry.terraform.io/modules/GoogleCloudPlatform/nat-gateway/google/latest/examples/gke-nat-gateway

你可以参考这篇不错的文章:https://aviatrix.com/learn-center/answered-transit/how-do-i-make-all-outbound-traffic-appear-to-come-from-one-or-more-aws-ip-addresses/

A better approach is to put software defined solution in front of those worker VPCs that will provide a “central NAT” service.

如果您是数字海洋,事情可能会变得更难管理,因为它们没有为 NAT 和子网范围配置提供任何选项,您只有两个选项。

  1. 使用affinity每次在特定节点上调度POD并将节点IP列入数据库白名单
  2. 创建代理实例并将其用于部署,应用程序将使用该实例

阅读更多信息:https://www.digitalocean.com/community/questions/is-it-possible-to-have-a-static-outgoing-ip-in-kubernetes