calico网络策略

关于优先级order:

  1. 为了与 Kubernetes 兼容,Calico 网络策略执行遵循 Kubernetes pod 的标准约定:

如果没有网络策略适用于 Pod,则允许所有进出该 Pod 的流量。

如果一个或多个网络策略应用于类型为 ingress 的 pod,则仅允许这些策略明确允许的入口流量。

如果一个或多个网络策略应用于类型为 egress 的 pod,则仅允许这些策略明确允许的出口流量。

对于其他端点类型(VM、主机接口),默认行为是拒绝流量。即使没有网络策略应用于端点,也只允许网络策略明确允许的流量。

  1. order: 策略叠加时的应用次序,数字越小越先应用,冲突时,后者会覆盖前者
  2. Global vs非全局并不是决定策略应用的顺序的一个因素。排序是由Calico NetworkPolicy和GlobalNetworkPolicy资源的“order”字段决定的,它的“order”政策首先应用于此。
  3. 如果没有指定“order”默认值到∞,那么将会应用未指定的“order”策略。
  4. Calico还实现了Kubernetes NetworkPolicy资源,它没有一个明确的“order”字段。为了命令那些对Calico资源的人,我们将Kubernetes的NetworkPolicy资源对待,就像他们有一个隐式的“顺序”1000。
  5. 对于具有相同order的策略来说,代码中有一个搭配器,但你不应该知道它是什么或依赖它,因为当排序很重要的时候,最好使用一个明确的“order”值。

Enable default deny for Kubernetes pods

资源定义:

GlobalNetworkPolicy

GlobalNetworkSet

NetworkPolicy

NetworkSet

常用命令:

https://docs.projectcalico.org/reference/calicoctl/

calicoctl apply -f policy.yaml

calicoctl apply -f policy.yaml

calicoctl get/delete np/gnp

参考资料:

About Calico

GitHub - projectcalico/libcalico-go: Golang Calico library functions: https://www.projectcalico.org

一文学会Calico高级网络策略 - 简书

最佳实践:calico建议

零信任网络模型

https://docs.projectcalico.org/security/adopt-zero-trust

隐式默认拒绝策略

我们建议为您的 Kubernetes pod 创建隐式默认拒绝策略,无论您使用 Calico 还是 Kubernetes 网络策略。这可确保默认情况下拒绝不需要的流量。请注意,隐式默认拒绝策略总是最后出现;如果任何其他策略允许流量,则拒绝不会生效。仅在评估所有其他策略后才执行拒绝。

Enable default deny for Kubernetes pods

Ingress 解决方案的类型

从广义上讲,有两种类型的入口解决方案:

  1. 集群内入口 - 入口负载平衡由集群本身内的 pod 执行。
  2. 外部入口 - 入口负载平衡由设备或云提供商功能在集群外部实现。

全局网络策略:

apiVersion: projectcalico.org/v3

kind: GlobalNetworkPolicy

metadata:

  name: global-default

spec:

  types:

  - Ingress

  - Egress

  ingress:

  - action: Allow

    source: {}

  egress:

  - action: Allow

destination: {}

网络策略

kind: NetworkPolicy
apiVersion: projectcalico.org/v3
metadata:
  name: hfftest
  namespace: hff
spec:
  order: 1000
  ingress:
    - action: Allow
      protocol: TCP
      source:
        namespaceSelector: name == 'hffns'
      destination:
        ports:
          - 80
    - action: Deny
      source:
        namespaceSelector: name != 'hfftest' && (! has(privileged-namespace))
      destination: {}
  egress:
    - action: Allow
      source: {}
      destination:
        namespaceSelector: name == 'hff1'
    - action: Deny
      source: {}
      destination:
        namespaceSelector: name != 'hfftest' && (! has(privileged-namespace))
  types:
    - Ingress
    - Egress

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值