gpt4 book ai didi

kubernetes - Kubernetes 集群的不同防火墙规则

转载 作者:行者123 更新时间:2023-12-02 12:07:12 25 4
gpt4 key购买 nike

我在一个 K8s 集群中运行一些内部服务和一些面向客户的服务。内部服务应该只能从某些特定的 ip 访问,面向客户的服务应该可以在全局范围内访问。

所以我创建了我的 Ingresses 和一个 nginx Ingress Controller 以及一些带有适当 ip 过滤器的 K8s LoadBalancer 服务。

现在我看到 GCP 中的那些防火墙规则是在幕后创建的。但它们是相互冲突的,“面向客户”的防火墙规则覆盖了“内部”的规则。因此,我的 K8s 集群的所有内容都在全局范围内可见。

这个用例对我来说听起来并不那么奇特——你知道如何让 K8s 集群的某些部分受到防火墙规则的保护,而某些部分在任何地方都可以访问吗?

最佳答案

令人惊讶的是,由 Kubernetes Ingress 对象 创建的 GCP 中的 L7 (http/https) 负载均衡器没有 IP 白名单功能 默认情况下,因此您描述的内容按预期工作。您可以使用 X-Forwarded-For 进行过滤。 header (参见 Setting Up HTTP(S) Load Balancing 下的目标代理)。

白名单将通过 Cloud Armour 提供,目前处于私有(private)测试阶段。

让这种情况稍微复杂一点:由 Kubernetes LoadBalancer 对象(因此,不是 Ingress)创建的 GCP 中的 L4 (tcp/ssl) 负载均衡器确实具有 IP 过滤功能。您只需设置 .spec.loadBalancerSourceRanges 在服务上。当然,Service 不会为您提供基于 url/host 的路由,但您可以通过部署像 nginx-ingress 这样的入口 Controller 来实现。 .如果你走这条路,你仍然可以为你的内部服务创建入口,你只需要注释它们,以便新的入口 Controller 拾取它们。这是一个相当标准的解决方案,实际上比为每个内部服务创建 L7 便宜(您只需为所有内部服务的 1 个转发规则付费)。

(上面的“内部服务”是指您需要能够从集群外部访问的服务,但只能从特定 IP,例如 VPN、办公室等。对于您只需要从集群内部访问的服务,您应该使用 type: ClusterIP )

关于kubernetes - Kubernetes 集群的不同防火墙规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50649749/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com