阻止命名空间之间的访问,但允许访问外部流量



我有两个名称空间: proddefault。我想禁用这些命名空间中资源的访问(default NS的资源无法从prod获取资源访问,并且prod中的资源无法从default获取资源访问(但是,允许有机会访问这些资源以供外部流量(入口(。

# namespaces.yaml
---
kind: Namespace
apiVersion: v1
metadata:
  name: prod
  labels:
    tier: prod
---
kind: Namespace
apiVersion: v1
metadata:
  name: default
  labels:
    tier: infra
# network-policies.yaml
---
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
  name: network
  namespace: prod
spec:
  podSelector: {}
  ingress:
    - from:
      - podSelector: {}
---
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
  name: network
  namespace: default
spec:
  podSelector: {}
  ingress:
    - from:
      - namespaceSelector:
          matchLabels:
            tier: dev
      - namespaceSelector:
          matchLabels:
            tier: rc
# services.yaml
---
apiVersion: v1
kind: Service
metadata:
  name: {{ include "conference.appService" . }}
  labels:
    app: {{ include "conference.name" . }}
    release: {{ .Release.Name }}
spec:
  type: NodePort
  ports:
    - name: http
      port: 80
      targetPort: http
      protocol: TCP
  selector:
    app: {{ include "conference.name" . }}
    release: {{ .Release.Name }}
    role: app

prod的豆荚可以访问给定名称空间内的其他吊舱。default的PODS无法访问prod中的POD。

当我尝试从浏览器中访问服务时,它已被阻止。当我尝试将端口转向使用到prod中的服务时 -

都可以。

问题来自网络策略的一部分。

---
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
  name: network
  namespace: default
spec:
  podSelector: {}
  ingress:
    - from:
      - ipBlock:
          cidr: 0.0.0.0/0
      - podSelector: {}
      - namespaceSelector:
          matchLabels:
            tier: dev
      - namespaceSelector:
          matchLabels:
            tier: rc
  egress:
    - {}

此选择者的主要思想: podSelector-用于在当前名称空间中选择POD namespaceSelector-选择名称空间 namespaceSelector.podSelector-用于在给定的名称空间内选择吊舱

和我的问题:

ipBlock-用于选择外部IP地址

它对内部IP不起作用,因此在我的情况下,0.0.0.0/0可以。 except不会禁止内部流量。

定义默认拒绝网络策略以拒绝所有入口流量。

部署另一个名为Ingress

的名称空间

在入口名称空间中部署入口控制器

然后定义网络策略,以允许从入口名称空间访问prod,并允许从INGRES到默认值的访问权限。您应该能够通过Ingress Controller

在外部访问prod和默认

最新更新