创建网络策略

INFO

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

请联系平台管理员启用 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