9.3. 识别项目版本之间允许的连接的不同


此命令帮助您了解两个项目版本之间的允许连接差异。它分析了每个版本目录中的工作负载和 Kubernetes 网络策略清单,并以文本格式创建区别。

您可以在各种输出格式中查看连接差异报告,包括 文本mddotcsv

要生成连接差异报告,roxctl netpol connectivity diff 命令需要两个文件夹 dir1dir2,每个包含 Kubernetes 清单,包括网络策略。

流程

  • 运行以下命令,以确定指定目录中的 Kubernetes 清单之间的连接差异:

    $ roxctl netpol connectivity diff --dir1=<folder_path_1> --dir2=<folder_path_2> [flags] 
    1
    Copy to Clipboard Toggle word wrap
    1
    指定文件夹的路径,其中可以包含用于分析的 YAML 资源和网络策略的子文件夹。命令可扫描两个目录的整个子文件夹树。例如,&lt ;folder_path_1>netpol-analysis-example-minimal/,& lt;folder_path_2&gt; 是 netpol-diff-example-minimal/。另外,您还可以指定参数来修改命令的行为。

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

    注意

    该命令考虑您可以使用 kubectl apply -f 接受的所有 YAML 文件,然后它们成为 roxctl netpol connectivity diff 命令的有效输入。

    例 9.2. 输出示例

    Expand
    diff-typesource目的地dir 1dir 2workloads-diff-info

    changed

    default/frontend[Deployment]

    default/backend[Deployment]

    TCP 9090

    TCP 9090,UDP 53

     

    添加

    0.0.0.0-255.255.255.255

    default/backend[Deployment]

    无连接

    TCP 9090

     

dir1 中允许的连接相比,语义差异报告为您提供了在 dir2 中更改、添加或删除的连接的概述。当您查看输出时,每行都代表了与 dir1 相比,在 dir2 中添加、删除或更改的允许的连接。

以下是 roxctl netpol connectivity diff 命令以各种格式生成的输出示例:

如果适用,Workload-diff-info 提供了有关添加或删除与添加或删除连接相关的工作负载的更多详情。

例如,如果因为删除了工作负载 B,从工作负载 A 到工作负载 B 的连接已被删除,则 workload -diff-info 表示工作负载 B 已被删除。但是,如果因为网络策略更改以及工作负载 AB 都删除了这样的连接,则 workload -diff-info 为空。

9.3.2. roxctl netpol connectivity diff 命令选项

roxctl netpol connectivity diff 命令支持以下选项:

Expand
选项描述

--dir1 string

输入资源的第一个目录路径。这是强制选项。

--dir2 string

要与第一个目录路径进行比较的输入资源的第二个目录路径。这是强制选项。

--fail

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

-h--help

查看 roxctl netpol connectivity diff 命令的帮助文本。

-f,--output-file string

将连接差异输出保存到特定文件中。

-o,--output-format string

配置输出格式。支持的格式有 txtmdcsv。默认值为 txt

--remove

删除输出路径(如果已存在)。默认值为 false

--save-to-file

将连接差异输出保存到默认文件中。默认值为 false

--strict

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

9.3.3. 区分语法和语义差异输出

在以下示例中,dir1netpol-analysis-example-minimal/dir2netpol-diff-example-minimal/。目录之间的区别在于网络策略 backend-netpol 中的小变化。

dir1 中的策略示例:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  creationTimestamp: null
  name: backend-netpol
spec:
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: frontend
    ports:
    - port: 9090
      protocol: TCP
  podSelector:
    matchLabels:
      app: backendservice
  policyTypes:
  - Ingress
  - Egress
status: {}
Copy to Clipboard Toggle word wrap

dir2 中的更改是在 ports 属性前添加的 -,这会产生不同的输出。

9.3.3.1. 语法不同输出

流程

  • 运行以下命令比较两个指定目录中的 netpols.yaml 文件的内容:

    $ diff netpol-diff-example-minimal/netpols.yaml netpol-analysis-example-minimal/netpols.yaml
    Copy to Clipboard Toggle word wrap

    输出示例

    12c12
    <   - ports:
    ---
    >     ports:
    Copy to Clipboard Toggle word wrap

9.3.3.2. 语义差别输出

流程

  • 运行以下命令分析两个指定目录中的 Kubernetes 清单和网络策略之间的连接差异:

    $ roxctl netpol connectivity diff --dir1=roxctl/netpol/connectivity/diff/testdata/netpol-analysis-example-minimal/ --dir2=roxctl/netpol/connectivity/diff/testdata/netpol-diff-example-minimal
    Copy to Clipboard Toggle word wrap

    输出示例

    Connectivity diff:
    diff-type: changed, source: default/frontend[Deployment], destination: default/backend[Deployment], dir1:  TCP 9090, dir2: TCP 9090,UDP 53
    diff-type: added, source: 0.0.0.0-255.255.255.255, destination: default/backend[Deployment], dir1:  No Connections, dir2: TCP 9090
    Copy to Clipboard Toggle word wrap

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat