网络策略_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
posted @   立勋  阅读(78)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示