7.3.3. 使用 Egress Firewall 限制 Pod 访问


作为 OpenShift Container Platform 集群管理员,您可以使用出口策略限制集群中有些或所有 pod 可以访问的外部地址,以便:

  • pod 只能与内部主机通信,且无法启动到公共互联网的连接。

    或者,

  • pod 只能与公共互联网通信,且无法(在集群外)启动与内部主机的连接。

    或者,

  • pod 无法访问不应该联系的特定内部子网/主机。

例如,您可以使用不同的出口策略配置项目,允许 <project A> 访问指定的 IP 范围,但拒绝对 <project B> 相同的访问。

Important

您必须启用 ovs-multitenant 插件, 以便限制通过出口策略的 pod 访问。

项目管理员既不能创建 EgressNetworkPolicy 对象,也不能编辑您在项目中创建的对象。另外还有一些其他限制可以创建 EgressNetworkPolicy

  1. default 项目(以及通过 oc adm pod-network make-projects-global使全局化的任何其他项目)不能具有出口策略。
  2. 如果您将两个项目合并在一起(通过 oc adm pod-network join-projects),则无法 在任何 合并的项目中使用出口策略。
  3. 项目不能有多个出口策略对象。

违反这些限制将导致项目的出口策略中断,并可能导致所有外部网络流量被丢弃。

7.3.3.1. 配置 Pod 访问限制

要配置 pod 访问限制,您必须使用 oc 命令或 REST API。您可以使用 oc [create|replace|delete] 来操作 EgressNetworkPolicy 对象api/swagger-spec/oapi-v1.json 文件包含对象的实际工作方式的 API 级别详情。

配置 pod 访问限制:

  1. 导航到您要影响的项目。
  2. 为 pod 限制策略创建 JSON 文件:

    # oc create -f <policy>.json
    Copy to Clipboard Toggle word wrap
  3. 使用策略详情配置 JSON 文件。例如:

    {
        "kind": "EgressNetworkPolicy",
        "apiVersion": "v1",
        "metadata": {
            "name": "default"
        },
        "spec": {
            "egress": [
                {
                    "type": "Allow",
                    "to": {
                        "cidrSelector": "1.2.3.0/24"
                    }
                },
                {
                    "type": "Allow",
                    "to": {
                        "dnsName": "www.foo.com"
                    }
                },
                {
                    "type": "Deny",
                    "to": {
                        "cidrSelector": "0.0.0.0/0"
                    }
                }
            ]
        }
    }
    Copy to Clipboard Toggle word wrap

    当上例添加到项目中时,它允许到 IP 范围 1.2.3.0/24 的流量和域名 www.foo.com,但拒绝访问所有其他外部 IP 地址。(流量到其他 pod 不会受到影响,因为策略仅适用于 外部 流量。)

    EgressNetworkPolicy 中的规则按顺序检查,第一个匹配的规则会生效。如果上面示例中的三个规则被颠倒,则不允许流量到 1.2.3.0/24www.foo.com,因为首先要检查 0.0.0.0/0 规则,它将匹配和拒绝所有流量。

    域名更新在 30 分钟内有所反映。在上面的示例中,假设 www.foo.com 解析为 10.11.12.13,但之后被更改为 20.21.22.23。然后,OpenShift Container Platform 最多需要 30 分钟时间来适应这些 DNS 更新。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat