6.4. 编辑网络策略

作为集群管理员,您可以编辑命名空间的现有网络策略。

6.4.1. 删除 NetworkPolicy 对象

您可以编辑命名空间中的 NetworkPolicy 对象。

先决条件

  • 集群使用支持 NetworkPolicy 对象的默认 CNI 网络供应商,如设置了 mode: NetworkPolicy 的 OpenShift SDN 网络供应商。此模式是 OpenShift SDN 的默认模式。
  • 安装了 OpenShift 命令行界面 (CLI),通常称为 oc
  • 使用具有 cluster-admin 权限的用户登陆到集群。

流程

  1. 可选:列出当前 NetworkPolicy 对象。

    1. 如果要列出特定命名空间中的策略对象,请输入以下命令。将 <namespace> 替换为一个项目的命名空间。

      $ oc get networkpolicy -n <namespace>
    2. 如果要列出整个集群的策略对象,请输入以下命令:

      $ oc get networkpolicy --all-namespaces
  2. 编辑 NetworkPolicy 对象

    1. 如果将 NetworkPolicy 保存在一个文件中,编辑该文件并进行必要的更改,然后输入以下命令。将 <policy-file> 替换为包含对象定义的文件名称。

      $ oc apply -f <policy-file>.yaml
    2. 如果需要直接更新 NetworkPolicy 对象,可以输入以下命令。将 <policy-name> 替换为 NetworkPolicy 对象的名称,<namespace> 替换为对象存在的项目的名称。

      $ oc edit <policy-name> -n <namespace>
  3. 确认 NetworkPolicy 对象已更新。将 <namespace> 替换为对象存在的项目的名称。

    $ oc get networkpolicy -n <namespace> -o yaml

6.4.2. 示例 NetworkPolicy 对象

下文解释了示例 NetworkPolicy 对象:

kind: NetworkPolicy
apiVersion: extensions/v1beta1
metadata:
  name: allow-27107 1
spec:
  podSelector: 2
    matchLabels:
      app: mongodb
  ingress:
  - from:
    - podSelector: 3
        matchLabels:
          app: app
    ports: 4
    - protocol: TCP
      port: 27017
1
NetworkPolicy 对象的名称
2
一个选择器(selector)用于描述策略应用到的 Pod。策略对象只能选择定义了 NetworkPolicy 对象的项目中的 Pod。
3
与策略对象允许从其传入流量的 Pod 匹配的选择器。选择器将匹配任何项目中的 Pod。
4
接受流量的一个或多个目标端口的列表。

6.4.3. 其他资源