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 资源内的连接。

使用 roxctl netpol connectivity map 命令,从 Kubernetes 清单目录检索连接映射信息。

流程

  • 要检索连接映射信息,请运行以下命令:

    roxctl netpol connectivity map <folder_path> [flags] 
    1
    Copy to Clipboard Toggle word wrap
    1
    指定文件夹的路径,其中包括包含 YAML 资源和网络策略的子文件夹,例如 netpol-analysis-example-minimal/。命令扫描整个子文件夹树。另外,您还可以指定参数来修改命令的行为。
    Expand
    表 8.2. 输出示例
    srcdstconn

    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> 
    1
    Copy to Clipboard Toggle word wrap
    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-serviceinternal-app-a 的连接。

您可以在 netpol-analyzer/tests/anp_banp_explain_demo/ 中看到此示例的 YAML 清单。

要分析网络策略并为每个连接提供说明,您可以在此设置上运行 roxctl netpol connectivity map --explain 命令。

此类配置的 monitoring-service 部署允许连接的解释性输出显示:

Connections between monitoring/monitoring-service[Pod] => internal-apps/internal-app-a[Pod]:
Allowed connections:
	Allowed TCP, UDP, SCTP due to the following policies and rules:
	    Egress (Allowed) due to the system default (Allow all)
	    Ingress (Allowed)
	        AdminNetworkPolicy 'pass-monitoring' passes connections by Ingress rule pass-ingress-from-monitoring
	        NetworkPolicy 'internal-apps/allow-monitoring' allows connections by Ingress rule #1
Copy to Clipboard Toggle word wrap

在本例中,允许从 monitoring/monitoring-serviceinternal-apps/ internal-app-a 的连接,它由 ANP 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 部署到此工作负载部署的解释性输出显示:

Connections between monitoring/monitoring-service[Pod] => isolated-apps/isolated-data-service[Pod]:

Denied connections:
	Denied TCP, UDP, SCTP due to the following policies and rules:
	    Egress (Allowed) due to the system default (Allow all)
	    Ingress (Denied)
	        AdminNetworkPolicy 'pass-monitoring' passes connections by Ingress rule pass-ingress-from-monitoring
	        BaselineAdminNetworkPolicy 'default' denies connections by Ingress rule deny-ingress-from-monitoring
Copy to Clipboard Toggle word wrap

在本例中,与 data/isolated-data-service 的连接通过 ANP with Pass action 的组合阻止,以及拒绝所有监控的 BANP。

8.2.3. 连接映射输出格式和视觉化

您可以使用各种输出格式,包括 txtmdcsvjsondotdot 格式非常适合将输出可视化为连接图形。它可以通过图形软件(如 Graphviz 工具 )查看,以及对 VSCode 的扩展。您可以使用 Graphviz 将 输出转换为格式,如 svgjpegpng,无论是在本地安装还是通过在线查看器安装。

8.2.4. 使用 Graphviz 从点输出生成 svg 图形

按照以下步骤,从 输出以 svg 格式创建图形。

先决条件

流程

  • 运行以下命令以 svg 格式创建图形:

    $ dot -Tsvg connlist_output.dot > connlist_output_graph.svg
    Copy to Clipboard Toggle word wrap

    以下是点输出的示例以及 Graphviz 生成的图形:

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat