gpt4 book ai didi

amazon-web-services - Kubernetes NetworkPolicy,只允许来自相同命名空间和 ALB 入口的流量

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

我正在尝试在 AWS EKS 下工作的 Kubernetes 上编写网络策略。我想要实现的是允许来自同一命名空间的 pod/pod 的流量,并允许从 AWS ALB 入口转发的外部流量。

AWS ALB Ingress 是在同一个 NameSpace 下创建的,所以我想只使用 DENY all traffic from other namespaces就足够了,但是当我使用来自 ALB 入口负载均衡器的流量(其内部 IP 地址与 pod/pod 位于相同的命名空间)时,是不允许的。然后如果我添加 ALLOW traffic from external clients它允许 Ingress,但也允许其他命名空间。

所以我的例子是这样的:(这不能按预期工作)

---
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: deny-from-other-namespaces
namespace: os
spec:
podSelector:
matchLabels:
ingress:
- from:
- podSelector: {}

---

kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
name: allow-external
namespace: os
spec:
podSelector:
matchLabels:
app: nginx
tier: prod
customer: os
ingress:
- ports:
- port: 80
from: []


当使用第一个策略 ALB 入口被阻止时,添加第二个其他命名空间也被允许,这是我不想要的。我只能允许 AWS ALB Ingress 的内部 IP 地址,但它会随着时间的推移而变化,并且是动态创建的。

最佳答案

根据 Kubernetes NetworkPolicy API 的设计,如果一个端点可以从外部访问,那么阻止它以访问其他命名空间是没有意义的。 (毕竟它也可以从其他命名空间通过公共(public) LB 访问,因此为已经可以公开访问的端点设置内部防火墙是没有意义的。)早在设计这个 API 的那一天,这个是我被告知的。

但是,您可能会发现某些 CNI 插件(Calico、Cilium 等)提供的非标准 CRD API 具有取代“允许”的明确“拒绝”操作。他们可以解决你的问题。

最后,答案取决于 CNI 插件的实现、AWS 如何在 Kubernetes 网络方面执行 ALB 以及 CNI 插件如何处理。除了询问 CNI 提供商(或他们的文档)之外,没有简单的答案。

关于amazon-web-services - Kubernetes NetworkPolicy,只允许来自相同命名空间和 ALB 入口的流量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62238749/

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