仅允许NS内部请求
- 拒绝所有非default的namespace请求 default 命名空间下面的资源
apiVersion: extensions/v1beta1
kind: NetworkPolicy
metadata:
name: deny-default
namespace: default
spec:
ingress:
- from:
- podSelector: {}
podSelector: {}
policyTypes:
- Ingress
内部请求隔离
- 在default命名空间内 仅允许 标签为app: testredis 的pod访问 标签为app: default-redis-rc-2 的6379端口
apiVersion: extensions/v1beta1
kind: NetworkPolicy
metadata:
labels:
app: default-redis-rc-2
name: ns-pod2pod
namespace: default
spec:
ingress:
- from:
- podSelector:
matchLabels:
app: testredis
ports:
- port: 6379
protocol: TCP
podSelector:
matchLabels:
app: default-redis-rc-2
policyTypes:
- Ingress
NS 内部请求
- 仅允许 project: default 命名空间访问 app: default-redis-rc-2 的6379
apiVersion: extensions/v1beta1
kind: NetworkPolicy
metadata:
labels:
app: default-redis-rc-2
name: pod2pod
namespace: default
spec:
ingress:
- from:
- namespaceSelector:
matchLabels:
project: default
ports:
- protocol: TCP
podSelector:
matchLabels:
app: default-redis-rc-2
policyTypes:
- Ingress
集群内非本namespace请求
- 允许ns为project: michael 访问default 命名空间下面的 app: default-redis-rc-2 下面的6379端口
apiVersion: extensions/v1beta1
kind: NetworkPolicy
metadata:
labels:
app: default-redis-rc-2
name: pod2ns
namespace: default
spec:
ingress:
- from:
- namespaceSelector:
matchLabels:
project: michael
ports:
- port: 6379
protocol: TCP
podSelector:
matchLabels:
app: default-redis-rc-2
policyTypes:
- Ingress
允许指定NS里面的POD访问
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
name: ns-pod
namespace: default
spec:
podSelector:
matchLabels:
app: web
ingress:
- from:
- namespaceSelector:
matchLabels:
project: test
podSelector:
matchLabels:
test: pycheck
找到一个不错的github地址 内涵动态图和yaml 还有说明
https://github.com/ahmetb/kubernetes-network-policy-recipes