管理员网络策略

INFO

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

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

说明

  • 目前仅 Kube-OVN CNI 支持管理员网络策略。

  • 在 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:最多只能指定命名空间选择器或 Pod 选择器中的一个。
  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 network policy。
  2. 可用值为 Allow、Deny。

通过 Web 控制台创建 AdminNetworkPolicy 或 BaselineAdminNetworkPolicy

  1. 进入 管理员 页面。

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

  3. 点击 创建管理员网络策略配置 Baseline 管理员网络策略

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

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

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

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

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

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

通过 CLI 创建 AdminNetworkPolicy 或 BaselineAdminNetworkPolicy

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