と の 2 つの名前空間がprod
ありdefault
ます。これらの名前空間内のリソースへのアクセスを無効にしたい ( 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
Pod はprod
、指定された名前空間内の他の Pod にアクセスできます。からdefault
のポッドは、 内のポッドにアクセスできませんprod
。
ブラウザからサービスにアクセスしようとすると、ブロックされます。内部のサービスにポート転送を使用しようとすると、prod
すべて正常に動作します。