2.3. 策略控制器
策略控制器监控并报告集群是否合规。通过使用开箱即用的策略模板应用由这些控制器管理的策略,使用 Red Hat Advanced Cluster Management for Kubernetes 策略框架。策略控制器管理 Kubernetes 自定义资源定义 (CRD) 实例。
策略控制器监控策略违反情况,如果控制器支持强制功能,可以使集群状态兼容。
查看以下主题以了解有关以下 Red Hat Advanced Cluster Management for Kubernetes 策略控制器的更多信息:
				重要 :只有配置策略控制器策略支持 enforce 功能。当策略控制器不支持 enforce 功能时,您必须手动修复策略。
			
有关管理您的策略的更多主题,请参阅监管。
2.3.1. Kubernetes 配置策略控制器
					配置策略控制器可用于配置任何 Kubernetes 资源,并在集群中应用安全策略。配置策略在 hub 集群上的策略的 policy-templates 字段中提供,并由监管框架传播到所选受管集群。有关 hub 集群策略的详情,请参阅策略概述。
				
					在配置策略中的 object-templates 数组中定义了 Kubernetes 对象(完整或部分),指示字段的配置策略控制器与受管集群上的对象进行比较。配置策略控制器与本地 Kubernetes API 服务器通信,以获取集群中的配置列表。
				
					配置策略控制器是在安装过程中在受管集群上创建的。配置策略控制器支持在配置策略不合规时修复 enforce 功能。当将配置策略的 remediationAction 设置为 enforce 时,控制器会将指定的配置应用到目标受管集群。注: 指定没有名称的对象的配置策略只能是 inform。
				
您还可以在配置策略中使用模板的值。如需更多信息,请参阅配置策略中的模板支持。
如果您有要放入策略中的现有 Kubernetes 清单,策略生成器 是完成此操作的有用工具。
继续读取以了解更多有关配置策略控制器的信息:
2.3.1.1. 配置策略示例
2.3.1.2. 配置策略 YAML 标
| 字段 | 可选或必需的 | 描述 | 
|---|---|---|
| 
										 | 必需 | 
										将值设置为  | 
| 
										 | 必需 | 
										将值设为  | 
| 
										 | 必需 | 策略的名称。 | 
| 
										 | 没有指定命名空间的命名空间对象是必需的 | 
										决定对象要应用到的受管集群中的命名空间。 | 
| 
										 | 必需 | 
										指定当策略不合规时要执行的操作。使用以下参数值: | 
| 
										 | 必需 | 
										当策略不合规时,指定严重性。使用以下参数值: | 
| 
										 | 选填 | 
										用于定义策略处于合规状态时的评估频率。该值的格式必须是一个持续时间,它是带有时间单元后缀的数字序列。例如: | 
| 
										 | 选填 | 
										用于定义策略处于不合规状态时的频率。与  | 
| 
										 | 必需 | 用于控制器的 Kubernetes 对象数组(已定义或包含字段子集),以便与受管集群上的对象进行比较。 | 
| 
										 | 必需 | 在受管集群中定义 Kubernetes 对象的所需状态。您必须使用以下动词之一作为参数值: 
										 
										 
										 | 
| 
										 | 选填 | 
										当将清单的 metadata 部分与集群中的对象比较时覆盖  | 
| 
										 | 必需 | 用于控制器的 Kubernetes 对象数组(完整定义或包含字段子集),以便与受管集群上的对象进行比较。 | 
						请参阅 CM-Configuration-Management 目录获取使用NIST Special Publication 800-53 (Rev. 4) 的,被 Red Hat Advanced Cluster Management 支持的策略示例。了解策略如何应用到您的 hub 集群,请参阅支持的策略以了解更多详细信息。
					
2.3.1.3. 配置配置策略控制器
						您可以为每个受管集群配置配置策略控制器的并发性,以更改它可以同时评估的配置策略。要更改默认值 2,请在引号内设置 policy-evaluation-concurrency 注解,使用非零整数。您可以在 hub 集群的受管集群命名空间中名为 config-policy-controller 的 ManagedClusterAddOn 对象上设置值。
					
						注: 高并发值会增加 config-policy-controller pod、Kubernetes API 服务器和 OpenShift API 服务器上的 CPU 和内存利用率。
					
						在以下 YAML 示例中,在名为 cluster1 的受管集群中,并发值被设为 5 :
					
继续阅读以下主题以了解更多有关如何使用配置策略:
2.3.2. 证书策略控制器
					证书策略控制器可以用来检测快要到期的证书,并检测时间太长(小时)或包含无法与指定模式匹配的 DNS 名称。证书策略在 hub 集群上的策略的 policy-templates 字段中提供,并由监管框架传播到所选受管集群。有关 hub 集群策略的详情,请参阅策略概述文档。
				
通过更新控制器策略中的以下参数来配置和自定义证书策略控制器:
- 
							minimumDuration
- 
							minimumCADuration
- 
							maximumDuration
- 
							maximumCADuration
- 
							allowedSANPattern
- 
							disallowedSANPattern
由于以下情况之一,您的策略可能会变得不合规:
- 当证书过期的时间少于最短持续时间,或超过最长时间时。
- 当 DNS 名称与指定模式匹配时。
证书策略控制器是在受管集群上创建的。控制器与本地 Kubernetes API 服务器通信,以获取包含证书的 secret 列表,并确定所有不合规的证书。
					证书策略控制器不支持 enforce 功能。
				
2.3.2.1. 证书策略控制器 YAML 结构
查看证书策略的以下示例,并查看 YAML 表中的元素:
2.3.2.1.1. 证书策略控制器 YAML 表
| 字段 | 可选或必需的 | 描述 | 
|---|---|---|
| 
											 | 必需 | 
											将值设置为  | 
| 
											 | 必需 | 
											将值设为  | 
| 
											 | 必需 | 用于标识策略的名称。 | 
| 
											 | 选填 | 
											在证书策略中, | 
| 
											 | 必需 | 
											决定监控 secret 的受管集群中的命名空间。 
											注: 如果证书策略控制器的  | 
| 
											 | 必需 | 
											指定您的策略的修复。将参数值设置为  | 
| 
											 | 选填 | 
											当策略不合规时,会告知用户的严重性。使用以下参数值: | 
| 
											 | 必需 | 
											如果没有指定值,则默认为  | 
| 
											 | 选填 | 
											设定一个与其他证书不同的值来标识可能很快过期的签名证书。如果没有指定参数值,则 CA 证书过期时间作为  | 
| 
											 | 选填 | 指定一个值来标识创建的时间超过您所期望的限制值的证书。参数使用 Golang 的持续时间格式。如需更多信息,请参阅 Golang 解析持续时间。 | 
| 
											 | 选填 | 创建一个值来标识创建的时间超过您定义的限制值的签名的证书。参数使用 Golang 的持续时间格式。如需更多信息,请参阅 Golang 解析持续时间。 | 
| 
											 | 选填 | 正则表达式,必须与您证书中定义的每个 SAN 条目匹配。这个参数会根据特征检查 DNS 名称。如需更多信息,请参阅 Golang 郑则表达式语法。 | 
| 
											 | 选填 | 正则表达式,不能与证书中定义的任何 SAN 条目匹配。这个参数会根据特征检查 DNS 名称。 
											注:要检测通配符证书,请使用以下 SAN 模式: 如需更多信息,请参阅 Golang 郑则表达式语法。 | 
2.3.2.2. 证书策略示例
						当在 hub 集群上创建证书策略控制器时,会在受管集群上创建复制策略。请参阅 policy-certificate.yaml 查看证书策略示例。
					
2.3.3. IAM 策略控制器
					Identity and Access Management (IAM) 策略控制器可以用来接收有关不合规的 IAM 策略的通知。合规性检查是基于您在 IAM 策略中配置的参数。IAM 策略在 hub 集群上的策略的 policy-templates 字段中提供,并由监管框架传播到所选受管集群。有关 hub 集群策略的详情,请参阅策略 YAML 结构文档。
				
					IAM 策略控制器监控集群中具有特定集群角色(例如 ClusterRole)所需的最大数量用户数。要监控的默认集群角色是 cluster-admin。IAM 策略控制器与本地 Kubernetes API 服务器通信。
				
IAM 策略控制器在您的受管集群上运行。查看以下部分以了解更多信息:
2.3.3.1. IAM 策略 YAML 结构
查看 IAM 策略的以下示例,并查看 YAML 表中的参数:
2.3.3.2. IAM 策略 YAML 表
查看以下参数表以获详细信息:
| 字段 | 可选或必需的 | 描述 | 
|---|---|---|
| 
										 | 必需 | 
										将值设置为  | 
| 
										 | 必需 | 
										将值设为  | 
| 
										 | 必需 | 用于标识策略资源的名称。 | 
| 
										 | 选填 | 
										要监控的集群角色(如  | 
| 
										 | 选填 | 
										当策略不合规时,会告知用户的严重性。使用以下参数值: | 
| 
										 | 选填 | 
										指定您的策略的修复。输入  | 
| 
										 | 选填 | 
										正则表达式(regex)值列表,指示要忽略的集群角色绑定名称。这些正则表达式值必须遵循 Go regexp 语法。默认情况下,所有具有以  | 
| 
										 | 必需 | 在策略被视为不合规前可用的 IAM rolebinding 的最大数量。 | 
2.3.3.3. IAM 策略示例
						请参阅 policy-limitclusteradmin.yaml 查看 IAM 策略示例。如需更多信息,请参阅管理安全策略。如需更多主题,请参阅策略控制器。
					
2.3.4. 策略控制器
					策略控制器将策略状态范围聚合到同一命名空间中定义的策略。创建策略集合(PolicySet),以对同一命名空间中的策略进行分组。PolicySet 中的所有策略都放在选定集群中,方法是创建一个 PlacementBinding 来绑定 PolicySet 和 Placement。策略集已部署到 hub 集群。
				
					另外,当策略是多个策略集的一部分时,现有和新的 Placement 资源保留在策略中。当用户从策略集合中删除策略时,策略不会应用到在策略集合中选择的集群,但放置会保留。策略控制器只检查包括策略设置放置的集群中的违反情况。
				
注: Red Hat Advanced Cluster Management 强化示例策略集使用集群放置。如果使用集群放置,请将包含策略的命名空间绑定到受管集群集。有关使用集群放置的详情,请参阅在集群中部署策略。
在以下部分了解更多有关策略设置结构的详细信息:
2.3.4.1. 策略设置 YAML 结构
您的策略集可能类似以下 YAML 文件:
2.3.4.2. 策略设置表
查看以下参数表以获详细信息:
| 字段 | 可选或必需的 | 描述 | 
|---|---|---|
| 
										 | 必需 | 
										将值设为  | 
| 
										 | 必需 | 
										将值设为  | 
| 
										 | 必需 | 用于标识策略资源的名称。 | 
| 
										 | 必需 | 添加策略的配置详情。 | 
| 
										 | 选填 | 要在策略集合中分组的策略列表。 | 
2.3.4.3. 策略示例
						请参阅管理安全策略部分中的创建策略部分。另外,查看 stable PolicySets,它要求策略生成器用于部署,PolicySets- Stable。请参阅策略生成器文档。