繁体   English   中英

如何使用网络策略仅允许从特定名称空间访问 pods 到 kubernetes 中的另一个名称空间?

[英]How to use network policy to allow access to pods only from a specific namespace to another in kubernetes?

当您显然不能在 netpol 中使用spec.namespaceSelector时,我该如何实现?

kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
  name: allow-from-ns-netpol
  namespace: special-ns
spec:
  namespaceSelector:
    matchLabels:
      kubernetes.io/metadata.name: app
  ingress:
    - from:
      - namespaceSelector:     
          matchLabels:
            kubernetes.io/metadata.name: cka-exam 

所以,这是行不通的。

您提供的 API 资源定义似乎不符合架构。 Kubernetes v1.26 中的NetworkPolicySpec显示允许以下字段: [policyTypes, podSelector, egress, ingress]

我建议查看网络策略文档。

定义网络策略时,将其分配给命名空间。 然后,您可以使用.spec.podSelector属性将该网络策略缩小为仅适用于选择的 Pod(在该命名空间中)。 正如文档所述,“一个空的podSelector选择命名空间中的所有 pod。”

这意味着如果您想阻止所有进入命名空间special-ns中的 Pod 的入口流量,您可以将网络策略分配给special-ns命名空间并将.spec.podSelector属性留空,以便它选择special-ns中的所有 Pod . 如果没有定义任何ingress规则,资源将是默认拒绝所有入口流量定义。

然后,可以使用ingress属性来定义传入流量的来源限制或规则。 看起来您现有的定义是正确的,因此仅允许来自命名空间cka-exam中存在的 Pod 的入口流量。

kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
  name: allow-from-ns-netpol
  namespace: special-ns
spec:
  ingress:
    - from:
      - namespaceSelector:     
          matchLabels:
            kubernetes.io/metadata.name: cka-exam 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM