创建 Admin 网络策略

INFO

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

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

新版集群网络策略采用 Kubernetes community 的 Admin Network Policy 标准设计,提供更灵活的配置方式和丰富的配置选项。

当多个网络策略同时生效时,遵循严格的优先级顺序:Admin Network Policy 优先于 Network Policy,Network Policy 优先于 Baseline Admin Network Policy。

操作步骤如下:

目录

注意事项

  • 仅 Kube-OVN CNI 支持 admin 网络策略。

  • 在 Kube-OVN 网络模式下,该功能处于 Alpha 版本阶段。

  • 集群中只能存在一个 Baseline Admin Network Policy。

AdminNetworkPolicy 示例

# example-anp.yaml
apiVersion: policy.networking.k8s.io/v1alpha1
kind: AdminNetworkPolicy
metadata:
  name: example-anp
spec:
  priority: 3
  subject:
    pods:
      namespaceSelector:
        matchLabels: {}
      podSelector:
        matchLabels:
          pod-template-hash: 55f66dd67d
  ingress:
    - name: ingress1
      action: Allow
      ports:
        - portNumber:
            protocol: TCP
            port: 8090
      from:
        - pods:
            namespaceSelector:
              matchLabels: {}
            podSelector:
              matchLabels:
                pod-template-hash: 55c84b59bb
  egress:
    - name: egress1
      action: Allow
      ports:
        - portNumber:
            protocol: TCP
            port: 8080
      to:
        - networks:
            - 10.1.1.1/23
  1. 数值越小,优先级越高。
  2. subject:最多只能指定 namespace selector 或 pod selector 中的一种。
  3. action:可选值为 Allow、Deny 和 Pass。 Allow 表示允许流量访问,Deny 表示拒绝流量访问,Pass 表示允许流量并跳过后续优先级较低的集群网络策略,由其他策略(NetworkPolicy 和 BaselineAdminNetworkPolicy)继续处理该流量。
  4. 可选值为 Namespace Selector、Pod Selector。
  5. 可选值为 Namespace Selector、Pod Selector、Node Selector、IP Block。

BaselineAdminNetworkPolicy 示例:

# default.yaml
apiVersion: policy.networking.k8s.io/v1alpha1
kind: BaselineAdminNetworkPolicy
metadata:
  name: default
spec:
  subject:
    pods:
      namespaceSelector:
        matchLabels: {}
      podSelector:
        matchLabels:
          pod-template-hash: 55c84b59bb
  ingress:
    - name: ingress1
      action: Allow
      ports:
        - portNumber:
            protocol: TCP
            port: 8888
      from:
        - pods:
            namespaceSelector:
              matchLabels: {}
            podSelector:
              matchLabels:
                pod-template-hash: 55f66dd67d
  egress:
    - name: egress1
      action: Allow
      ports:
        - portNumber:
            protocol: TCP
            port: 8080
      to:
        - networks:
            - 3.3.3.3/23
  1. 集群中只能创建一个 metadata.name=default 的 baseline admin 网络策略。
  2. 可选值为 Allow、Deny。

通过 Web 控制台创建 AdminNetworkPolicy 或 BaselineAdminNetworkPolicy

  1. 进入 平台管理

  2. 在左侧导航栏点击 网络 > 集群网络策略

  3. 点击 创建 Admin 网络策略配置 Baseline Admin 网络策略

  4. 按照以下说明完成相关配置。

    区域参数说明
    基本信息名称Admin 网络策略或 Baseline Admin 网络策略的名称。
    优先级决定策略的评估和应用顺序,数值越低优先级越高。
    注意:Baseline admin 网络策略无优先级。
    目标 PodNamespace Selector以键值对形式填写目标 Namespace 的标签,若不设置,则策略作用于当前集群所有 Namespace。设置后,策略仅作用于匹配这些选择器的 Namespace 中的 Pod。
    当前策略影响的目标 Pod 预览点击 预览 查看该网络策略影响的目标 Pod。
    Pod Selector以键值对形式填写目标 Pod 的标签,若不设置,则策略作用于当前 Namespace 下所有 Pod。
    当前策略影响的目标 Pod 预览点击 预览 查看该网络策略影响的目标 Pod。
    入口流量流量动作指定如何处理目标 Pod 的入口流量。共有三种模式:Allow(允许流量)、Deny(拒绝流量)、Pass(跳过所有优先级较低的 admin 网络策略,允许流量由 Network Policy 处理,若无 Network Policy,则由 Baseline Admin Network Policy 处理)。
    注意:Baseline admin 网络策略不支持动作 Pass
    规则

    说明:规则中添加多个来源时,它们之间为逻辑 关系。
    Pod Selector匹配集群中指定标签的 Namespace 或 Pod,只有匹配的 Pod 能访问目标 Pod。可点击 预览 查看当前规则影响的 Pod。
    • 若同时配置了 namespace 和 Pod 选择器,则取交集,即从指定的 Namespace 中选择具有指定标签的 Pod。
    • 若未配置此项,默认允许集群中所有 Namespace 的所有 Pod 访问目标 Pod。
    Namespace Selector

    匹配当前 Namespace 中指定标签的 Pod,只有匹配的 Pod 能访问目标 Pod。可点击 预览 查看当前规则影响的 Pod。若未配置此项,默认允许当前 Namespace 中所有 Pod 访问目标 Pod。

    端口匹配指定协议和端口的流量;可添加数字端口或 Pod 上的端口名称。若未配置此项,则匹配所有端口。
    出口流量规则

    说明:规则中添加多个来源时,它们之间为逻辑 关系。
    Node Selector指定目标 Pod 允许访问的节点 IP。可通过节点标签选择节点,控制 Pod 可访问的节点 IP。
    IP 范围指定目标 Pod 允许连接的 CIDR 范围。若未配置此项,默认允许目标 Pod 连接任意 IP。
    其他参数与入口流量参数类似,配置选项和行为相同。

通过 CLI 创建 AdminNetworkPolicy 或 BaselineAdminNetworkPolicy

kubectl apply -f example-anp.yaml -f default.yaml

其他资源