创建网络策略

INFO

平台现提供两种不同的网络策略 UI。旧版 UI 为兼容性维护而保留,新版 UI 更加灵活,并提供原生 YAML 编辑器。我们推荐使用新版。

请联系平台管理员开启 network-policy-next 功能门控,以访问新版 UI。

NetworkPolicy 是一个命名空间范围的 Kubernetes 资源,由 CNI 插件实现。 通过网络策略,您可以控制 Pod 的网络流量,实现网络隔离,降低攻击风险。

默认情况下,所有 Pod 可以自由通信,允许来自任何源的入口和出口流量。 当应用 NetworkPolicy 后,目标 Pod 只接受符合策略规范的流量。

WARNING

网络策略仅适用于容器流量。不影响以 hostNetwork 模式运行的 Pod。

示例 NetworkPolicy:

# example-network-policy.yaml
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: example
  namespace: demo-1
  annotations:
    cpaas.io/display-name: test
spec:
  podSelector:
    matchLabels:
      pod-template-hash: 55c84b59bb
  ingress:
    - ports:
        - protocol: TCP
          port: 8989
      from:
        - podSelector:
            matchLabels:
              kubevirt.io/vm: test
  egress:
    - ports:
        - protocol: TCP
          port: 80
      to:
        - ipBlock:
            cidr: 192.168.66.221/23
            except: []
  policyTypes:
    - Ingress
    - Egress
  1. fromto 对等体支持 namespaceSelectorpodSelectoripBlock

目录

通过 Web 控制台创建 NetworkPolicy

  1. 进入 Container Platform

  2. 在左侧导航栏点击 Network > Network Policies

  3. 点击 Create Network Policy

  4. 参考以下说明完成相关配置。

区域参数说明
目标 PodPod 选择器以键值对形式输入目标 Pod 的标签;若不设置,则应用于当前命名空间内所有 Pod。
当前策略影响的目标 Pod 预览点击 Preview 查看当前网络策略影响的目标 Pod。
入口流量阻止所有入口流量阻止所有到目标 Pod 的入口流量。

注意:
  • 如果在 YAML 的 spec.policyTypes 字段中添加了 Ingress,但未配置具体规则,切换回表单时会自动勾选 阻止所有入口流量 选项。
  • 如果同时删除了 YAML 中的 spec.ingressspec.egressspec.policyTypes 字段,切换回表单时也会自动勾选 阻止所有入口流量 选项。
规则

说明:规则中添加多个来源时,它们之间是逻辑上的 关系。
当前命名空间内的 Pod匹配当前命名空间内指定标签的 Pod;只有匹配的 Pod 可以访问目标 Pod。您可以点击 Preview 查看当前规则影响的 Pod。若未配置此项,默认允许当前命名空间内所有 Pod 访问目标 Pod。
当前集群内的 Pod匹配集群内指定标签的命名空间或 Pod;只有匹配的 Pod 可以访问目标 Pod。您可以点击 Preview 查看当前规则影响的 Pod。
  • 如果同时配置了命名空间选择器和 Pod 选择器,则取两者的交集,即从指定命名空间中选择具有指定标签的 Pod。
  • 若未配置此项,默认允许集群内所有命名空间的 Pod 访问目标 Pod。
IP 范围输入允许访问目标 Pod 的 CIDR,并可排除不允许访问的 CIDR 范围。若未配置此项,任何流量均可访问目标 Pod。

说明:可以通过 example_ip/32 形式添加排除项,以排除单个 IP 地址。
端口匹配指定协议和端口的流量;可添加数字端口或 Pod 上的端口名称。若未配置此项,则匹配所有端口。
出口流量阻止所有出口流量阻止所有到目标 Pod 的出口流量。

注意:
  • 如果在 YAML 的 spec.policyTypes 字段中添加了 Egress,但未配置具体规则,切换回表单时会自动勾选 阻止所有出口流量 选项。
其他参数入口流量 参数类似,此处不再赘述。
  1. 点击 Create

通过 CLI 创建 NetworkPolicy

kubectl apply -f example-network-policy.yaml

参考

如需更多详情,请查阅官方文档 Network Policies