网络策略 - 限制来自某些命名空间的出口但允许其他命名空间

Posted

技术标签:

【中文标题】网络策略 - 限制来自某些命名空间的出口但允许其他命名空间【英文标题】:Network Policy - Restricting Egress From Some Namespaces But Allowing Other Namespace 【发布时间】:2020-12-11 09:12:29 【问题描述】:

假设我有这些ns

nginx-master - Running my Ingress controller
monitoring   - Running Prometheus, Grafana
app1-project (Parent)
  app1-dev
  app1-qa

app2-project(Parent)
  app2-dev
  app2-qa

我基本上想从nginx-master 发送流量(入口/出口)并监控到 app1-project 和 app2-project(传播给他们各自的孩子)

但是,阻止从 app1-project 和 app2-project 到彼此的任何(入口/出口)流量

【问题讨论】:

【参考方案1】:

下面的配置应该可以为您解决问题

首先,分别使用project: ingressproject: monitoring 在命名空间上创建标签。

然后使用下面的清单。

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default-network-policy
  namespace: app1-project
spec:
  podSelector: 
  policyTypes:
  - Ingress
  - Egress
  ingress:
  - from:
    - namespaceSelector:
        matchLabels:
          project: ingress
    - namespaceSelector:
        matchLabels:
          project: monitoring

出口为空将拒绝所有出口https://kubernetes.io/docs/concepts/services-networking/network-policies/#default-deny-all-egress-traffic

【讨论】:

以上是关于网络策略 - 限制来自某些命名空间的出口但允许其他命名空间的主要内容,如果未能解决你的问题,请参考以下文章

Azure 事件中心 - 虚拟网络集成 - 限制阅读

XSD:允许来自不同命名空间的元素在序列中的任何位置

在 R 的命名空间中导入有啥好处?

k8s学习-CKA真题-网络策略NetworkPolicy

k8s学习-CKA真题-网络策略NetworkPolicy

如何在 Kubernetes 中执行清单策略?