azure - Calico GlobalNetworkPolicy 排除不起作用

标签 azure azure-aks project-calico kubernetes-networkpolicy

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

用以下方式标记默认命名空间:name=default

我从 Calico 网站上找到了一个示例,并添加了默认命名空间,链接:https://docs.projectcalico.org/security/kubernetes-default-deny 。但不知何故,该策略也应用于默认 namespace ,但不应该是这样?我已经标记了默认命名空间。

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

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

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

含义(?):它将适用于任何命名空间,除了具有标签且值设置为 kube-system 或 calico-system 的命名空间。但如果是这样的话,为什么行不通呢?我已向默认命名空间添加了一个标签:name=default

最佳答案

AKS 群集当前使用 Calico v3.8.9 部署,不支持 spec.namespaceSelector (这是在 v3.10 中添加的)。

您可以通过使用 namespaceSelector 显式允许 kube-system 命名空间内的(入口和导出)流量来模拟此类策略。 source内的字段和destination字段(请参阅 https://docs.projectcalico.org/archive/v3.8/reference/resources/globalnetworkpolicy#entityrule )

关于azure - Calico GlobalNetworkPolicy 排除不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65003377/

相关文章:

kubernetes - 使用kubeadm创建的k8s集群上的Pod到Pod通讯问题

用于创建新 PAT 的 Azure DevOps Rest API

c# - 无法加载文件或程序集 'Microsoft.Data.OData, Version=5.6.4.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 或其依赖项之一

python-3.x - shutdown.copystat() 在 Azure 上的 Docker 内部失败

azure - 容器环境变量发生变化时如何强制重启pod

azure - 不同资源组中的私有(private) aks 和 acr

kubernetes - 从某些Kubernetes容器到同一集群中其他容器的主机没有路由

azure - 手动触发Azure Function - 时间触发

azure - 为 Azure 数字孪生时间序列可视化创建终结点时出错

kubernetes - GKE更新calico-node-vertical-autoscaler镜像版本