网络策略_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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)