第 9 章 构建时网络策略工具


build-time 网络策略工具可让您使用 roxctl CLI 在开发和操作工作流中自动创建和验证 Kubernetes 网络策略。这些工具可用于包含项目工作负载和网络策略清单的指定文件目录,且不需要 RHACS 身份验证。

表 9.1. 网络策略工具
命令描述

roxctl netpol generate

通过分析指定目录中的项目的 YAML 清单来生成 Kubernetes 网络策略。如需更多信息 ,请参阅使用构建时网络策略生成器

roxctl netpol 连接映射

通过检查工作负载和 Kubernetes 网络策略清单,列出项目目录中工作负载间允许的连接。您可以使用各种文本格式或图形 .dot 格式生成输出。如需更多信息,请参阅使用 roxctl netpol connectivity map 命令的连接映射

roxctl netpol 连接 diff

在允许两个项目版本之间的连接中创建一系列变化。这由每个版本的 目录中的工作负载和 Kubernetes 网络策略清单决定。此功能显示执行源代码(syntactic) diff 时的语义差异。如需更多信息,请参阅 识别项目版本之间的允许连接的不同

9.1. 使用构建时网络策略生成器

构建时网络策略生成器可以根据应用程序 YAML 清单自动生成 Kubernetes 网络策略。在在集群中部署应用程序前,您可以使用它来开发网络策略,作为持续集成/持续部署(CI/CD)管道的一部分。

红帽开发了此功能,与 NP-Guard 项目 开发人员兼容。首先,build-time 网络策略生成器分析本地文件夹中的 Kubernetes 清单,包括服务清单、配置映射和工作负载清单,如 PodDeploymentReplicaSetJobDaemonSetStatefulSet。然后,它会发现所需的连接,并创建 Kubernetes 网络策略来实现 pod 隔离。这些策略不允许超过所需的入口和出口流量。

9.1.1. 生成构建时网络策略

build-time 网络策略生成器包含在 roxctl CLI 中。对于构建网络策略生成功能,roxctl CLI 不需要与 RHACS Central 通信,因此您可以在任何开发环境中使用它。

先决条件

  1. build-time 网络策略生成器递归扫描您在运行命令时指定的目录。因此,在运行该命令前,您必须已具有服务清单、配置映射和工作负载清单,如 PodDeploymentReplicaSetJobDaemonSetStatefulSet 作为指定目录中的 YAML 文件。
  2. 使用 kubectl apply -f 命令验证这些 YAML 文件是否按原样应用。build-time 网络策略生成器不适用于使用 Helm 样式模板的文件。
  3. 验证服务网络地址没有硬编码。需要连接到服务的每个工作负载都必须将服务网络地址指定为变量。您可以使用工作负载的资源环境变量或配置映射来指定此变量。

  4. 服务网络地址必须与以下官方正则表达式模式匹配:

    (http(s)?://)?<svc>(.<ns>(.svc.cluster.local)?)?(:<portNum>)? 1
    1
    在这种模式中,
    • <svc> 是服务名称。
    • <ns> 是定义该服务的命名空间。
    • <portNum> 是公开的服务端口号。

    以下是与模式匹配的一些示例:

    • wordpress-mysql:3306
    • redis-follower.redis.svc.cluster.local:6379
    • redis-leader.redis
    • http://rating-service.

流程

  1. 运行 help 命令验证构建网络策略生成功能是否可用:

    $ roxctl netpol generate -h
  2. 使用 netpol generate 命令生成策略:

    $ roxctl netpol generate <folder_path> [flags] 1
    1
    指定文件夹的路径,其中可以包含用于分析的 YAML 资源的子目录。命令扫描整个子文件夹树。另外,您还可以指定参数来修改命令的行为。

    有关可选参数的更多信息,请参阅 roxctl netpol generate 命令选项

后续步骤

  • 生成策略后,您必须检查它们以确保完整性和准确性,以防 YAML 文件中未按预期指定任何相关网络地址。
  • 最重要的是,验证所需的连接是否没有被隔离策略阻止。为了帮助进行这个检查,您可以使用 roxctl netpol connectivity map 工具。
注意

作为工作负载部署的一部分,使用自动化将网络策略应用到集群可节省时间并确保准确性。您可以使用拉取请求提交生成的策略来遵循 GitOps 方法,为团队提供在部署作为管道的一部分前查看策略的机会。

9.1.2. roxctl netpol generate 命令选项

roxctl netpol generate 命令支持以下选项:

选项描述

-h, --help

查看 netpol 命令的帮助文本。

-d, --output-dir <dir>

将生成的策略保存到目标文件夹中。每个策略有一个文件。

-f, --output-file <filename>

将生成的策略保存并合并到单个 YAML 文件中。

--fail

在第一次遇到的错误时失败。默认值为 false

--remove

删除输出路径(如果已存在)。

--strict

将警告视为错误。默认值为 false

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.