Приветствую, есть k8s поднятый на baremetal с внешними балансировщиками.
Терминация ssl на них проходит, а приложения выходят в свет, через NodePort на VIP адресе.
Понадобилось ограничить трафик между namespace и запретить некоторым подам доступ в интернет.
Если я применяю данную политику, namespace изолируются, но отваливается доступ к NodePort.
Все политики применяются к конкретным namespace, по умолчанию все разрешено должно быть.
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: deny-from-other-namespaces
spec:
podSelector:
matchLabels:
ingress:
- from:
- podSelector: {}
Если в политику добавить
ports:
- port: 8080
порт 8080, это внутренний порт приложения, то доступ к NodePort открыватся, но для всех namespace с этой же политикой.
Политика ниже, как раз разрешает доступ в интернет только для подов с соответствующей меткой.
Но вот соединить все это вместе - не получается.
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: deny-from-public-net
spec:
podSelector: {}
ingress:
- from:
- ipBlock:
cidr: 0.0.0.0/0
egress:
- to:
- ipBlock:
cidr: 192.168.0.0/16
- ipBlock:
cidr: 172.16.0.0/12
- ipBlock:
cidr: 10.0.0.0/8
---
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
name: allow-public-network-for-labels
spec:
podSelector:
matchLabels:
public-network: "true"
ingress:
- from:
- ipBlock:
cidr: 0.0.0.0/0
egress:
- to:
- ipBlock:
cidr: 0.0.0.0/0