你对L3、L4、L7层⽹络策略也就是防⽕墙策略的区别清楚吗?直到我学习cilium时,通过cilium的官⽅⽹站给出的使⽤说明,我终于理解了L3、L4、L7层⽹络策略的差别。现记录如下:
L3⽹络策略
L3的⽹络测试是基于IP/CIDR或者DNS域名的,对于cilium所在的云计算领域还可以基于容器的label,service,entity.其中IP/CIDR就是基于IP或者IP段;DNS就是指基于域名;entity可以是“host、remote-node、cluster、init、world、all”等。下⾯是⼀个三层策略⽰例:
apiVersion: \"cilium.io/v2\"kind: CiliumNetworkPolicymetadata:
name: \"cidr-rule\"spec:
endpointSelector: matchLabels: app: myService egress: - toCIDR:
- 20.1.1.1/32 - toCIDRSet:
- cidr: 10.0.0.0/8 except:
- 10.96.0.0/12
L4⽹络策略
四层策略可以和三层策略配置使⽤也可以单独使⽤,它指定了协议并指定端⼝,如下所⽰:
apiVersion: \"cilium.io/v2\"kind: CiliumNetworkPolicymetadata:
name: \"l4-rule\"spec:
endpointSelector: matchLabels: app: myService egress: - toPorts: - ports:
- port: \"80\"
protocol: TCP
L7⽹络策略
7层策略规则嵌⼊到第4层⽰例规则中,并且可以在ingress和egress⽅向指定。L7Rules结构是⼀个base type,包含协议特定字段的枚举值。如下是cilium中的⼀个L7策略,它针对的是http协议中的get⽅法并且路径是public的报⽂:
kind: CiliumNetworkPolicymetadata:
name: \"rule1\"spec:
description: \"Allow HTTP GET /public from env=prod to app=service\" endpointSelector: matchLabels: app: service ingress:
- fromEndpoints: - matchLabels: env: prod toPorts: - ports:
- port: \"80\"
protocol: TCP rules: http:
- method: \"GET\" path: \"/public\"
因篇幅问题不能全部显示,请点此查看更多更全内容