创建管理员网络策略

INFO

该平台现在提供两种不同的集群网络策略用户界面。旧版本出于兼容性原因而保留,而新版本则更灵活,并提供原生的 YAML 编辑器。我们建议使用新版本。

请联系平台管理员启用 cluster-network-policycluster-network-policy-next 功能开关,以访问新用户界面。

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

当应用多个网络策略时,它们遵循严格的优先级顺序:管理员网络策略优先于网络策略,网络策略优先于基线管理员网络策略。

操作步骤如下:

目录

注意事项

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

  • 在 Kube-OVN 网络模式下,此功能处于 Alpha 成熟度级别。

  • 集群中只能存在一个基线管理员网络策略。

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 表示允许流量并跳过后续低优先级的集群网络策略,继续由其他策略(网络策略和基线管理员网络策略)处理流量。
  4. 可用值为命名空间选择器、Pod 选择器。
  5. 可用值为命名空间选择器、Pod 选择器、节点选择器、IP 块。

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. 集群中只能创建一个元数据名称为 default 的基线管理员网络策略。
  2. 可用值为 Allow、Deny。

通过 Web 控制台创建 AdminNetworkPolicy 或 BaselineAdminNetworkPolicy

  1. 转到 平台管理

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

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

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

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

    描述:如果规则中添加了多个来源,则它们之间存在逻辑 OR 关系。
    Pod 选择器匹配集群中具有指定标签的命名空间或 Pods;只有匹配的 Pods 可以访问目标 Pod。您可以点击 预览 查看当前规则影响的 Pods。
    • 如果同时配置了命名空间和 Pod 选择器,则将取它们的交集,这意味着将从指定的命名空间中选择具有指定标签的 Pods。
    • 如果未配置此项,则集群中所有命名空间中的所有 Pods 默认可以访问目标 Pod。
    命名空间选择器

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

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

    描述:如果规则中添加了多个来源,则它们之间存在逻辑 OR 关系。
    节点选择器指定目标 Pods 允许访问的节点 IP。您可以通过标签选择节点,以控制 Pods 可以访问哪些节点 IP。
    IP 范围指定目标 Pods 允许连接的 CIDR 范围。如果未配置此项,目标 Pods 默认可以连接到任何 IP。
    其他参数与入口参数类似,具有相同的配置选项和行为。

通过 CLI 创建 AdminNetworkPolicy 或 BaselineAdminNetworkPolicy

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

其他资源