8.2. 使用 roxctl netpol connectivity map 命令连接映射
连接映射显示您在工作负载之间允许的连接。它使用 Kubernetes 清单中定义的网络策略,包括 Admin Network Policy (ANP)和 Baseline Admin Network Policy (BANP)。您可以视觉化并了解 Kubernetes 工作负载如何根据这些组合网络策略进行通信。
要检索连接映射信息,roxctl netpol connectivity map
命令需要一个目录路径。此目录必须包含您的 Kubernetes 网络策略、ANP 和 BANP 清单。命令的输出详细介绍了分析的 Kubernetes 资源内的连接。
8.2.1. 从 Kubernetes 清单目录中检索连接映射信息 复制链接链接已复制到粘贴板!
使用 roxctl netpol connectivity map
命令,从 Kubernetes 清单目录检索连接映射信息。
流程
要检索连接映射信息,请运行以下命令:
roxctl netpol connectivity map <folder_path> [flags]
roxctl netpol connectivity map <folder_path> [flags]
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定文件夹的路径,其中包括包含 YAML 资源和网络策略的子文件夹,例如
netpol-analysis-example-minimal/
。命令扫描整个子文件夹树。另外,您还可以指定参数来修改命令的行为。
Expand 表 8.2. 输出示例 src dst conn 0.0.0.0-255.255.255.255
default/frontend[Deployment]
TCP 8080
default/frontend[Deployment]
0.0.0.0-255.255.255.255
UDP 53
default/frontend[Deployment]
default/backend[Deployment]
TCP 9090
输出中会显示一个表,列出了允许的连接行。每行由以下元素组成:
-
src
:: 代表源端点。 -
dst
:: 代表目标端点。 -
conn
:: 代表允许的连接属性。
端点的格式是 namespace/name[Kind]
。例如,default/backend[Deployment]
。
Opional :要查看哪些策略和规则负责允许或拒绝特定连接,您可以在 roxctl netpol connectivity map
命令中使用- explain
选项。您可以使用输出来调试网络策略配置。有关了解解释输出的更多信息,请参阅"重复解释"。
8.2.2. 检索解释 复制链接链接已复制到粘贴板!
您可以通过检索解释来了解根据 Kubernetes 网络策略规则允许或拒绝连接的原因。
流程
要使用解释生成连接报告,请运行以下命令:
roxctl netpol connectivity map --explain <folder_path>
$ roxctl netpol connectivity map --explain <folder_path>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定文件夹的路径,其中可以包含包含 YAML 资源和网络策略的子文件夹,以用于分析。
当您使用- explain
标志时,连接报告包含一个 说明部分,它详细介绍了每个允许或阻止的连接相关的特定策略和规则。
8.2.2.1. 了解连接说明 复制链接链接已复制到粘贴板!
要了解 Kubernetes 网络策略 YAML 文件中的哪些部分负责允许或拒绝连接,您可以使用 roxctl netpol connectivity map
命令,其中包含解释性模式。您可以使用解释性模式来调试和重新定义网络策略,该模式在标准连接报告之外提供了其他详细信息。
作为开发者或 DevOps 专家,您可能会遇到您希望打开的连接被拒绝的情况,或者您需要确定哪些规则允许连接。
以下是一些常见问题的示例:
- 不匹配的入口和出口规则,其中一侧连接允许流量,但另一个则拒绝它。
- 导致策略打开与预期不同的端口或协议的排字错误。
解释性模式可让您了解每个连接会受到您的策略规则的影响。您可以使用解释性模式快速识别配置错误。
允许的连接示例
考虑有一个带有以下组件的 Kubernetes 集群:
-
名为
monitoring-service
的 监控服务,从各种应用程序收集数据。 -
一个核心 内部应用程序 A,名为
internal-app-a
,它主动公开监控端点和需要监控。 -
定义 Admin Network Policy (ANP)的网络策略配置,将连接从监控
传递给
带有标签安全性的命名空间:内部
,以及特定的网络策略(NP),它明确允许从monitoring-service
到internal-app-a
的连接。
您可以在 netpol-analyzer/tests/anp_banp_explain_demo/
中看到此示例的 YAML 清单。
要分析网络策略并为每个连接提供说明,您可以在此设置上运行 roxctl netpol connectivity map --explain
命令。
此类配置的 monitoring-service
部署允许连接的解释性输出显示:
在本例中,允许从 monitoring/monitoring-service
到 internal-apps/
的连接,它由 ANP internal-app-a
pass-monitoring
的组合使用标签 security: internal
和更具体的 NP internal-apps/allow-monitoring 量身定制的 NP internal-apps/allow-monitoring
。输出显示多个策略可以贡献到允许连接。
阻塞的连接示例
出于安全原因,考虑一个隔离的数据服务 isolated-data-service
,它默认拒绝所有外部访问。
您可以在 netpol-analyzer/tests/anp_banp_explain_demo_2/
中看到此示例的 YAML 清单。
要分析网络策略并为每个连接提供说明,您可以在此设置上运行 roxctl netpol connectivity map --explain
命令。
阻止从 monitoring-service
部署到此工作负载部署的解释性输出显示:
在本例中,与 data/isolated-data-service
的连接通过 ANP with Pass action 的组合阻止,以及拒绝所有监控的 BANP。
8.2.3. 连接映射输出格式和视觉化 复制链接链接已复制到粘贴板!
您可以使用各种输出格式,包括 txt
、md
、csv
、json
和 dot
。dot
格式非常适合将输出可视化为连接图形。它可以通过图形软件(如 Graphviz 工具 )查看,以及对 VSCode 的扩展。您可以使用 Graphviz 将 点
输出转换为格式,如 svg
、jpeg
或 png
,无论是在本地安装还是通过在线查看器安装。
8.2.4. 使用 Graphviz 从点输出生成 svg 图形 复制链接链接已复制到粘贴板!
按照以下步骤,从 点
输出以 svg
格式创建图形。
先决条件
- Graphviz 安装在本地系统中。
流程
运行以下命令以
svg
格式创建图形:dot -Tsvg connlist_output.dot > connlist_output_graph.svg
$ dot -Tsvg connlist_output.dot > connlist_output_graph.svg
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下是点输出的示例以及 Graphviz 生成的图形: