第 9 章 构建时网络策略工具
			build-time 网络策略工具可让您使用 roxctl CLI 在开发和操作工作流中自动创建和验证 Kubernetes 网络策略。这些工具可用于包含项目工作负载和网络策略清单的指定文件目录,且不需要 RHACS 身份验证。
		
| 命令 | 描述 | 
|---|---|
|   
							  |   通过分析指定目录中的项目的 YAML 清单来生成 Kubernetes 网络策略。如需更多信息 ,请参阅使用构建时网络策略生成器。  | 
|   
							  |   
							通过检查工作负载和 Kubernetes 网络策略清单,列出项目目录中工作负载间允许的连接。您可以使用各种文本格式或图形   | 
|   
							  |   
							在允许两个项目版本之间的连接中创建一系列变化。这由每个版本的 目录中的工作负载和 Kubernetes 网络策略清单决定。此功能显示执行源代码(syntactic)   | 
9.1. 使用构建时网络策略生成器 复制链接链接已复制到粘贴板!
构建时网络策略生成器可以根据应用程序 YAML 清单自动生成 Kubernetes 网络策略。在在集群中部署应用程序前,您可以使用它来开发网络策略,作为持续集成/持续部署(CI/CD)管道的一部分。
				红帽开发了此功能,与 NP-Guard 项目 开发人员兼容。首先,build-time 网络策略生成器分析本地文件夹中的 Kubernetes 清单,包括服务清单、配置映射和工作负载清单,如 Pod、Deployment、ReplicaSet、Job、DaemonSet 和 StatefulSet。然后,它会发现所需的连接,并创建 Kubernetes 网络策略来实现 pod 隔离。这些策略不允许超过所需的入口和出口流量。
			
9.1.1. 生成构建时网络策略 复制链接链接已复制到粘贴板!
					build-time 网络策略生成器包含在 roxctl CLI 中。对于构建网络策略生成功能,roxctl CLI 不需要与 RHACS Central 通信,因此您可以在任何开发环境中使用它。
				
先决条件
- 
							build-time 网络策略生成器递归扫描您在运行命令时指定的目录。因此,在运行该命令前,您必须已具有服务清单、配置映射和工作负载清单,如 
Pod、Deployment、ReplicaSet、Job、DaemonSet和StatefulSet作为指定目录中的 YAML 文件。 - 
							使用 
kubectl apply -f命令验证这些 YAML 文件是否按原样应用。build-time 网络策略生成器不适用于使用 Helm 样式模板的文件。 验证服务网络地址没有硬编码。需要连接到服务的每个工作负载都必须将服务网络地址指定为变量。您可以使用工作负载的资源环境变量或配置映射来指定此变量。
服务网络地址必须与以下官方正则表达式模式匹配:
(http(s)?://)?<svc>(.<ns>(.svc.cluster.local)?)?(:<portNum>)?
(http(s)?://)?<svc>(.<ns>(.svc.cluster.local)?)?(:<portNum>)?1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
 - 在这种模式中,
- <svc> 是服务名称。
 - <ns> 是定义该服务的命名空间。
 - <portNum> 是公开的服务端口号。
 
 
以下是与模式匹配的一些示例:
- 
									
wordpress-mysql:3306 - 
									
redis-follower.redis.svc.cluster.local:6379 - 
									
redis-leader.redis - 
									
http://rating-service. 
流程
运行 help 命令验证构建网络策略生成功能是否可用:
roxctl netpol generate -h
$ roxctl netpol generate -hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
netpol generate命令生成策略:roxctl netpol generate <folder_path> [flags]
$ roxctl netpol generate <folder_path> [flags]1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
 - 指定文件夹的路径,其中可以包含用于分析的 YAML 资源的子目录。命令扫描整个子文件夹树。另外,您还可以指定参数来修改命令的行为。
 
有关可选参数的更多信息,请参阅 roxctl netpol generate 命令选项。
后续步骤
- 生成策略后,您必须检查它们以确保完整性和准确性,以防 YAML 文件中未按预期指定任何相关网络地址。
 - 
							最重要的是,验证所需的连接是否没有被隔离策略阻止。为了帮助进行这个检查,您可以使用 
roxctl netpol connectivity map工具。 
作为工作负载部署的一部分,使用自动化将网络策略应用到集群可节省时间并确保准确性。您可以使用拉取请求提交生成的策略来遵循 GitOps 方法,为团队提供在部署作为管道的一部分前查看策略的机会。
9.1.2. roxctl netpol generate 命令选项 复制链接链接已复制到粘贴板!
					roxctl netpol generate 命令支持以下选项:
				
| 选项 | 描述 | 
|---|---|
|   
									  |   
									查看   | 
|   
									  |   将生成的策略保存到目标文件夹中。每个策略有一个文件。  | 
|   
									  |   将生成的策略保存并合并到单个 YAML 文件中。  | 
|   
									  |   
									在第一次遇到的错误时失败。默认值为   | 
|   
									  |   删除输出路径(如果已存在)。  | 
|   
									  |   
									将警告视为错误。默认值为   |