1

と の 2 つの名前空間がprodありdefaultます。これらの名前空間内のリソースへのアクセスを無効にしたい ( defaultNS からのリソースは からのリソースへのアクセスを取得できず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

Pod はprod、指定された名前空間内の他の Pod にアクセスできます。からdefaultのポッドは、 内のポッドにアクセスできませんprod

ブラウザからサービスにアクセスしようとすると、ブロックされます。内部のサービスにポート転送を使用しようとすると、prodすべて正常に動作します。

4

2 に答える 2