8.3. 识别项目版本之间允许的连接的不同
roxctl netpol connectivity diff 命令标识两个项目版本之间允许的连接的不同。它分析每个版本的目录中的网络策略、管理网络策略(ANP)和 Baseline Admin Network Policy (BANP)清单。此分析提供了关于差异的基于文本的报告。它还包括 ANP 和 BANP 资源的影响,可让您在集群范围内策略更改的完整视图。
您可以在各种输出格式中查看连接差异报告,包括 文本、md、dot 和 csv。
8.3.1. 使用 roxctl netpol connectivity diff 命令生成连接差异报告 复制链接链接已复制到粘贴板!
生成两组 Kubernetes 清单之间连接差异的报告,包括使用 roxctl netpol connectivity diff 命令在内的网络策略。
先决条件
-
您有两个文件夹
dir1和dir2,每个文件夹都包含 Kubernetes 清单,包括网络策略。
流程
要在指定目录中查找 Kubernetes 清单之间的连接区别,请运行以下命令:
$ roxctl netpol connectivity diff --dir1=<folder_path_1> --dir2=<folder_path_2> [flags]1 - 1
- 指定文件夹的路径,其中可以包含包含 YAML 资源和网络策略的子文件夹,以用于分析。命令扫描两个目录的整个子文件夹树。
例如,&
lt;folder_path_1> 是netpol-analysis-example-minimal/,<folder_path_2> 是netpol-diff-example-minimal/。另外,您还可以指定参数来更改命令的行为。
该命令考虑您可以使用 kubectl apply -f 接受的所有 YAML 文件,然后 YAML 文件将成为 roxctl netpol connectivity diff 命令的有效输入。
| diff-type | source | 目的地 | 目录 1 | dir 2 | workloads-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 中更改、添加或删除的连接的概述。当您查看输出时,每行都代表一个允许添加、删除或更改 dir2 中的连接,与 dir1 相比。
如果适用,workload-diff-info 提供有关添加或删除连接的详情。
例如,如果因为删除了工作负载 B 而删除了从工作负载 A 到工作负载 B 的连接,则 workload -diff-info 表示工作负载 B 已被删除。但是,如果只因为网络策略更改而删除了这样的连接,且工作负载 A 和 B 都不会被删除,则 workload -diff-info 为空。
8.3.2. 区分语法和语义差别输出 复制链接链接已复制到粘贴板!
在以下示例中,dir1 是 netpol-analysis-example-minimal/,dir2 是 netpol-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: {}
dir2 中的更改是在 ports 属性前面添加的,它会产生一个区别的输出。
8.3.2.1. 语法输出 复制链接链接已复制到粘贴板!
流程
运行以下命令比较两个指定目录中
netpols.yaml文件的内容:$ diff netpol-diff-example-minimal/netpols.yaml netpol-analysis-example-minimal/netpols.yaml输出示例
12c12 < - ports: --- > ports:
8.3.2.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输出示例
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