Calico GlobalNetworkPolicy排除不起作用



最近开始在AKS集群上使用Calico网络策略。该计划是阻止新名称空间的所有流量,但去往标记为"的coredeDNS pod的流量除外;kube dns";。该策略不应应用于命名空间:default、kubesystem和calico系统。

将默认命名空间标记为:name=default

我从Calico网站上找到了一个例子,并添加了默认的命名空间链接:https://docs.projectcalico.org/security/kubernetes-default-deny.但不知何故,该策略也应用于默认名称空间,而事实并非如此?我已经标记了默认名称空间。

apiVersion: projectcalico.org/v3
kind: GlobalNetworkPolicy
metadata:
name: deny-app-policy
spec:
namespaceSelector: has(projectcalico.org/name) && projectcalico.org/name not in {"kube-system", "calico-system","default"}
types:
- Ingress
- Egress
egress:
# allow all namespaces to communicate to DNS pods
- action: Allow
protocol: UDP
destination:
selector: 'k8s-app == "kube-dns"'
ports:
- 53

还检查了文档:https://docs.projectcalico.org/reference/resources/globalnetworkpolicy

有(projectcalico.org/name(-->将资源与标签projectcalico.org/name匹配,与值无关

&projectcalico.org/name不在{kube system}、calico system}和default>中匹配没有标签projectcalico.org/name或标签projectcalio.org/name和值不在给定集合中的资源{"kube system","calico system"}

含义(?(:它将适用于任何命名空间,除了带有标签和值设置为kube系统或calico系统的命名空间。但如果是这样的话,为什么它不起作用呢?我在默认名称空间中添加了一个标签:name=默认

AKS集群当前部署在Calico v3.8.9中,该版本不支持spec.namespaceSelector(已在v3.10中添加(

您可以通过使用sourcedestination字段中的namespaceSelector字段显式允许kube系统命名空间内的(入口和出口(流量来模拟这样的策略(请参阅https://docs.projectcalico.org/archive/v3.8/reference/resources/globalnetworkpolicy#entityrule)

最新更新