创建 Admin 网络策略

INFO

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

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

新版集群网络策略采用 Kubernetes 社区的 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. 进入 Administrator

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

  3. 点击 Create Admin Network PoliciesConfigure the Baseline Admin Network Policy

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

    区域参数说明
    基本信息名称Admin Network Policy 或 Baseline Admin Network Policy 的名称。
    优先级决定策略的评估和应用顺序,数值越小优先级越高。
    注意:Baseline admin 网络策略无优先级设置。
    目标 PodNamespace Selector以键值对形式输入目标 Namespace 的标签,若不设置,则策略应用于当前集群所有 Namespace。指定后,策略仅应用于匹配这些选择器的 Namespace 内的 Pod。
    当前策略影响的目标 Pod 预览点击 预览 查看该网络策略影响的目标 Pod。
    Pod Selector以键值对形式输入目标 Pod 的标签,若不设置,则策略应用于当前 Namespace 下所有 Pod。
    当前策略影响的目标 Pod 预览点击 预览 查看该网络策略影响的目标 Pod。
    Ingress流量动作指定如何处理流入目标 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 上的端口名称。若未配置此项,则匹配所有端口。
    Egress规则

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

通过 CLI 创建 AdminNetworkPolicy 或 BaselineAdminNetworkPolicy

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

其他资源