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

问题描述

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

你好

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

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

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

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

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

  3. 还有其他方法可以实现吗?

来自慕尼黑的问候

解决方法

是否可以保留一个全局 ip 白名单,该白名单每隔 五分钟,限制访问某些服务?有没有更新 自动分发?

是的,可以通过管理入口或网关(Istio、Kong、KrakenD)上的流量并将其列入白名单(如果您正在使用)

您可以使用配置或配置管理工具和 CI/CD 流程来管理 YAML 文件,以便每次更改都适用,这样管理起来也很容易。

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

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

用于入口白名单

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

还有其他方法可以实现吗?

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