管理员网络策略

INFO

当前平台为 Cluster Network Policies 提供了两种不同的 UI。旧版 UI 出于兼容性原因仍然保留,而新版 UI 更加灵活,并提供原生 YAML 编辑器。我们建议使用新版。

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

注意事项

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

  • 在 Kube-OVN 网络模式下,此功能为 Technology Preview。上游 API 仍为 policy.networking.k8s.io/v1alpha1,并且仍在持续演进,因此请在文档限定范围内评估此功能,而不要将其视为生产环境支持功能。有关成熟度定义,请参见 Version and Lifecycle。

  • 集群中只能存在一个 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 表示允许流量并跳过后续低优先级 cluster network policies,继续由其他策略(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. 转到 Administrator。

  2. 在左侧导航栏中,单击 Network > Cluster Network Policies。

  3. 单击 Create Admin Network Policies 或 Configure the Baseline Admin Network Policy。

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

    区域参数描述
    基本信息NameAdmin Network Policy 或 Baseline Admin Network Policy 的名称。
    Priority决定策略的评估和应用顺序。数值越小,优先级越高。
    Note: baseline admin network policy 没有 priority。
    目标 PodNamespace Selector以键值对形式输入目标 Namespace 的标签。如果未设置,则该策略将应用于当前集群中的所有 Namespace。指定后,该策略仅应用于与这些选择器匹配的 namespaces 中的 pods。
    受当前策略影响的目标 Pods 预览单击 Preview 查看受此网络策略影响的目标 Pods。
    Pod Selector以键值对形式输入目标 Pods 的标签。如果未设置,则该策略将应用于当前 Namespace 中的所有 Pods。
    受当前策略影响的目标 Pods 预览单击 Preview 查看受此网络策略影响的目标 Pods。
    IngressTraffic Action指定如何处理进入目标 Pods 的流量。共有三种模式:Allow(允许流量)、Deny(阻止流量)和 Pass(跳过所有更低优先级的 admin network policies,允许流量由 Network Policy 处理;如果不存在 Network Policy,则由 Baseline Admin Network Policy 处理)。
    Note: baseline admin network policy 不支持 Pass 操作。
    Rule

    Description:如果在规则中添加了多个 source,则它们之间为逻辑 OR 关系。
    Pod Selector匹配集群中带有指定标签的 namespaces 或 Pods;只有匹配的 Pods 才能访问目标 Pod。您可以单击 Preview 查看受当前规则影响的 Pods。
    • 如果同时配置了 namespace 和 Pod 选择器,则取二者的交集,即从指定 namespaces 中选择带有指定标签的 Pods。
    • 如果未配置此项,默认允许集群中所有 namespaces 中的所有 Pods 访问目标 Pod。
    Namespace Selector

    匹配当前 namespace 中带有指定标签的 Pods;只有匹配的 Pods 才能访问目标 Pod。您可以单击 Preview 查看受 当前规则影响的 Pods。如果未配置此项,默认允许当前 namespace 中的所有 Pods 访问目标 Pod。

    Ports匹配指定协议和端口上的流量;您可以为 Pods 添加数字端口或端口名称。如果未配置此项,则匹配所有端口。
    EgressRule

    Description:如果在规则中添加了多个 source,则它们之间为逻辑 OR 关系。
    Node Selector指定目标 Pods 允许访问哪些节点 IP。您可以通过节点标签选择节点,以控制 Pods 可访问的节点 IP。
    IP Range指定目标 Pods 允许连接的 CIDR 范围。如果未配置此项,则默认允许目标 Pods 连接到任意 IP。
    Other Parameters与 Ingress 参数类似,具有相同的配置选项和行为。

使用 CLI 创建 AdminNetworkPolicy 或 BaselineAdminNetworkPolicy

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