У меня есть два пространства имен: 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
Модули из prod
имеют доступ к другим модулям внутри данного пространства имен.
Бобы из default
не имеют доступа к бобам внутри prod
.
Когда я пытаюсь получить доступ к сервису из браузера, он блокируется.
Когда я пытаюсь использовать переадресацию портов на службу внутри prod
- все работает нормально.