管理员网络策略

INFO

平台现在为集群网络策略提供两个不同的 UI。旧版 UI 出于兼容性原因仍会保留,而新版 UI 更加灵活,并提供原生 YAML 编辑器。我们建议使用新版 UI。

请联系平台管理员启用 cluster-network-policy 和 cluster-network-policy-next feature-gate,以访问新版 UI。

注意事项

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

  • 在 Kube-OVN 网络模式下,此功能处于 Technology Preview 阶段。上游 API 仍为 policy.networking.k8s.io/v1alpha1 并在持续演进,因此请在其文档说明的限制范围内评估此功能,不要将其视为生产环境支持的功能。有关成熟度定义,请参阅版本和生命周期。

  • 集群中只能存在一个 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 的基线管理员网络策略。
  2. 可用值为 Allow、Deny。

使用 Web 控制台创建 AdminNetworkPolicy 或 BaselineAdminNetworkPolicy

  1. 转到管理员。

  2. 在左侧导航栏中,单击网络 > 集群网络策略。

  3. 单击创建管理员网络策略或配置基线管理员网络策略。

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

    区域参数描述
    基本信息名称Admin Network Policy 或 Baseline Admin Network Policy 的名称。
    优先级确定评估和应用策略的顺序。数值越小表示优先级越高。
    注意:基线管理员网络策略没有优先级。
    目标 Pod命名空间选择器以键值对形式输入目标命名空间的标签。如果未设置,该策略将应用于当前集群中的所有命名空间。指定后,该策略将仅应用于位于与这些选择器匹配的命名空间中的 Pod。
    当前策略影响的目标 Pod 预览单击预览以查看此网络策略影响的目标 Pod。
    Pod 选择器以键值对形式输入目标 Pod 的标签。如果未设置,该策略将应用于当前命名空间中的所有 Pod。
    当前策略影响的目标 Pod 预览单击预览以查看此网络策略影响的目标 Pod。
    Ingress流量操作指定如何处理进入目标 Pod 的流量。包含三种模式:Allow(允许流量)、Deny(阻止流量)和 Pass(跳过所有优先级较低的管理员网络策略,使流量由 Network Policy 处理;如果不存在 Network Policy,则由 Baseline Admin Network Policy 处理)。
    注意:基线管理员网络策略不支持 Pass 操作。
    规则

    描述:如果在规则中添加了多个源,它们之间是逻辑或关系。
    Pod 选择器匹配集群中带有指定标签的命名空间或 Pod;只有匹配的 Pod 才能访问目标 Pod。可以单击预览查看当前规则影响的 Pod。
    • 如果同时配置了命名空间选择器和 Pod 选择器,则取两者的交集,即从指定的命名空间中选择带有指定标签的 Pod。
    • 如果未配置此项,则默认情况下,集群中所有命名空间内的所有 Pod 都可以访问目标 Pod。
    命名空间选择器

    匹配当前命名空间中带有指定标签的 Pod;只有匹配的 Pod 才能访问目标 Pod。可以单击预览查看当前规则影响的 Pod。如果未配置此项,则默认情况下,当前命名空间中的所有 Pod 都可以访问目标 Pod。

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

    描述:如果在规则中添加了多个源,它们之间是逻辑或关系。
    节点选择器指定允许目标 Pod 访问哪些节点 IP。可以按节点标签选择节点,以控制 Pod 可访问的节点 IP。
    IP 范围指定允许目标 Pod 连接的 CIDR 范围。如果未配置此项,则默认情况下,目标 Pod 可以连接到任意 IP。
    其他参数与 Ingress 参数类似,具有相同的配置选项和行为。

使用 CLI 创建 AdminNetworkPolicy 或 BaselineAdminNetworkPolicy

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