网络策略_NetworkPolicy
网络策略 NetworkPolicy
前端通过访问后端的API接口来获取数据库中的数据
前端、API接口、数据库在k8s中都为pod
k8s要求所有pod可以互相访问,但生产中,不能让前端直接访问后端数据库
目标是保护数据库,使其不允许从除了API以外的任何pod访问
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: db-policy
spec:
podSelector: # 该规则会在有如下标签的pod上生效
matchLabels:
role: db
policyTypes: # 对入口流量设置策略(出口为Egress)
- Ingress
ingress:
- from:
- podSelector: # 有如下标签的pod可以访问
matchLabels:
name: api-pod
ports: # 定义
- protocol: TCP
port: 3306
网络策略是k8s本身的网络解决方案
flannel 不支持上述的网路策略
- 不指定 metadata.namespace 时,表示默认namespace
- 单独指定 spec.images.from.podSelector,作用范围是所有namespace中有相应标签的pod
- 单独指定 spec.images.from.namespaceSelector ,作用范围是该namespace下的所有pod
- imgress.form下的字段,以- 开头表示一条独立的规则。多个规则是OR的关系
- 如果imgess.from.namesapceSelector前加 "-" ,则变成一条独立规则
- podSelector前有"-",namespaceSelector前无"-" ,表示两条小规则要同时满足
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: db-policy
namespace: prod # 指定networkpolicy作用的命名空间
spec:
podSelector: # 该规则会在有如下标签的pod上生效
matchLabels:
role: db
policyTypes: # 对入口流量设置策略(出口为Egress)
- Ingress
- Egress
ingress:
- from:
- podSelector: # 有如下标签的pod可以访问
matchLabels:
name: api-pod
namespaceSelector:
matchLabels:
name: staging
- ipBlock:
cidr: 192.168.5.10/32
ports:
- protocol: TCP
port: 3306
engress:
- to:
- ipBlock:
cidr: 192.168.5.10/32
ports:
protocol: TCP
port: 80

浙公网安备 33010602011771号