8.3. 识别项目版本之间允许的连接的不同
此命令可帮助您了解两个项目版本之间允许的连接的不同。它分析每个版本目录中的工作负载和 Kubernetes 网络策略清单,并创建文本格式的不同表示。
您可以在各种输出格式中查看连接差异报告,包括 文本、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]指定文件夹的路径,其中可以包含包含 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命令的有效输入。Expand 表 8.3. 输出示例 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