9.4. 为项目编辑出口防火墙

作为集群管理员,您可以修改现有出口防火墙的网络流量规则。

9.4.1. 编辑 EgressNetworkPolicy 对象

作为集群管理员,您可以更新一个项目的出口防火墙。

先决条件

  • 使用 OpenShift SDN 网络插件的集群。
  • 安装 OpenShift CLI(oc)。
  • 您需要使用集群管理员身份登陆到集群。

流程

要编辑项目的现有出口网络策略对象,请完成以下步骤:

  1. 查找项目的 EgressNetworkPolicy 对象的名称。将 <project> 替换为项目的名称。

    $ oc get -n <project> egressnetworkpolicy
  2. 可选,如果您在创建出口网络防火墙时没有保存 EgressNetworkPolicy 对象的副本,请输入以下命令来创建副本。

    $ oc get -n <project> \ 1
      egressnetworkpolicy <name> \ 2
      -o yaml > <filename>.yaml 3
    1
    <project> 替换为项目的名称
    2
    <name> 替换为 Pod 的名称。
    3
    <filename> 替换为要保存 YAML 的文件名称。
  3. 输入以下命令替换 EgressNetworkPolicy 对象。将 <filename> 替换为包含更新的 EgressNetworkPolicy 对象的文件名称。

    $ oc replace -f <filename>.yaml

9.4.2. EgressNetworkPolicy 自定义资源 (CR) 对象

以下 YAML 描述了一个 EgressNetworkPolicy CR 对象:

apiVersion: network.openshift.io/v1
kind: EgressNetworkPolicy
metadata:
  name: <name> 1
spec:
  egress: 2
    ...
1
为出口防火墙指定一个名称
2
如下小节所述,指定一个或多个出口网络策略规则的集合。

9.4.2.1. EgressNetworkPolicy 规则

以下 YAML 描述了一个出口防火墙规则对象。egress 键需要一个包括一个或多个对象的数组。

egress:
- type: <type> 1
  to: 2
    cidrSelector: <cidr> 3
    dnsName: <dns-name> 4
1
指定规则类型。该值必须是 AllowDeny
2
为规则指定一个 cidrSelectordnsName 的值。您不能在规则中同时使用这两个键。
3
以 CIDR 格式指定一个 IP 地址范围。
4
指定一个域名。

9.4.2.2. EgressNetworkPolicy CR 对象示例

以下示例定义了几个出口防火墙策略规则:

apiVersion: network.openshift.io/v1
kind: EgressNetworkPolicy
metadata:
  name: default-rules 1
spec:
  egress: 2
  - type: Allow
    to:
      cidrSelector: 1.2.3.0/24
  - type: Allow
    to:
      dnsName: www.example.com
  - type: Deny
    to:
      cidrSelector: 0.0.0.0/0
1
策略对象的名称。
2
出口防火墙策略规则对象的集合。