使用全局 IP 白名单限制对某些 Kubernetes 服务的访问

Restrict access to some Kubernetes services with a global IP whitelist

TLDR:需要一个每五分钟更新一次的 IP 白名单来限制对服务的访问

那里

我目前正在将我们的 VM 迁移到两个 Kubernetes 集群(prod 和 dev)。 到目前为止,我们已经通过每五分钟更新一次的网络访问策略来管理对我们系统的访问。 每个环境都有自己的虚拟机,因此策略的设置很容易。 我们的托管合作伙伴是 Open Telekom Cloud (OTC)。

现在有了 Kubernetes,我们 运行 一个集群上有多个环境,网络访问策略会影响集群上的所有托管环境。

dev 集群托管 Preview、Dev1、Stage... 预览应该没有访问限制,所有其他环境应该受 IP 白名单限制。

  1. 是否可以保留一个每五分钟更新一次的全局 ip 白名单,以限制对某些服务的访问?更新是否自动分发?

  2. 我应该限制入口还是应该使用 networkPolicies

  3. 还有其他方法吗?

来自慕尼黑的问候

编辑: 非常感谢@harsh-manvar

他的解决方案基本上对每个托管的 Kubernetes 服务都有很大帮助。 遗憾的是,我们仅限于 Telekom DE (OTC CCE)

我们最终得到了 forwards/blocks 基于 IP 请求的 Web 应用程序防火墙(每个域 150 欧元/月)。

Is it possible to keep an global ip whitelist, that is updated every five minutes, to limit access to some services? Are the updates distributed automatically?

是的,如果您使用任何

您可以使用配置或配置管理工具管理 YAML 文件,CI/CD 每次都会应用更改的过程,这样也很容易管理。

Would I do the limiting in ingresses or should I use networkPolicies

这更多取决于需求,如果您想在 IP 地址或端口级别(OSI 第 3 层或第 4 层)控制流量,那么您可以考虑为集群中的特定应用程序使用 Kubernetes NetworkPolicies。

用于入口白名单

annotations: 
  nginx.ingress.kubernetes.io/whitelist-source-range: "0.0.0.0/24"

Is there another way to achieve this?

您还可以在 K8s 服务 级别实现 load balancer 源范围过滤器。