我有一个EKS集群,在命名空间gitlab管理的应用程序上部署了nginx。从ALB入口向公众公开应用程序。我正在尝试阻止特定的公共IP(例如:x.x.x/32(访问网页。我尝试了Calico和K8s网络策略。对我来说什么都不起作用。我在对网络策略了解有限的情况下创建了这个Calico策略,但它阻止了访问nginx应用程序的一切,而不仅仅是x.x.x/32外部IP。向所有人显示ALB 的504网关超时
apiVersion: projectcalico.org/v3
kind: NetworkPolicy
metadata:
name: ingress-external
namespace: gitlab-managed-apps
spec:
selector:
app == 'nginx'
types:
- Ingress
ingress:
- action: Deny
source:
nets:
- x.x.x.x/32
试试这个:
apiVersion: projectcalico.org/v3
kind: NetworkPolicy
metadata:
name: ingress-external
namespace: gitlab-managed-apps
spec:
selector:
app == 'nginx'
types:
- Ingress
ingress:
- action: Deny
source:
nets:
- x.x.x.x/32
- action: Allow
印花布文件建议:
如果一个或多个网络策略应用于包含入口规则的pod,则只允许这些策略特别允许的入口流量。
因此,这意味着任何流量在默认情况下都会被拒绝,并且只有在您明确允许的情况下才允许。这就是为什么添加附加规则action: Allow
应该允许以前规则不匹配的所有其他流量。
还记得文档中提到的关于规则的内容:
单个规则匹配一组数据包并对其应用一些操作当指定了多个规则时,它们将按顺序执行。
因此,默认的允许规则必须遵循特定IP的拒绝规则,而不是相反。