第 4 章 集成第三方策略控制器
集成第三方策略,在策略模板中创建自定义注解,以指定一个或多个合规标准、控制类别和控制。
您还可以使用 policy-collection/community 中的第三方策略。
了解如何集成以下第三方策略:
4.1. 策略生成器
Policy Generator 是 Red Hat Advanced Cluster Management for Kubernetes 应用程序生命周期订阅 GitOps 工作流的一部分,它使用 Kustomize 生成 Red Hat Advanced Cluster Management 策略。策略生成器从 Kubernetes 清单 YAML 文件构建 Red Hat Advanced Cluster Management 策略,该文件通过用于配置它的 PolicyGenerator
清单 YAML 文件提供。策略生成器作为 Kustomize 生成器插件实施。有关 Kustomize 的更多信息,请阅读 Kustomize 文档。
如需更多信息,请参阅以下部分:
4.1.1. 策略生成器功能
Policy Generator 及其与 Red Hat Advanced Cluster Management 应用程序生命周期订阅 GitOps 工作流的集成简化了 Kubernetes 资源对象的分发到受管 OpenShift Container Platform 集群,并通过 Red Hat Advanced Cluster Management 策略简化 Kubernetes 集群的发布。
使用 Policy Generator 完成以下操作:
- 将任何 Kubernetes 清单文件转换为 Red Hat Advanced Cluster Management 配置策略,包括从 Kustomize 目录创建的清单。
- 在将输入 Kubernetes 清单插入到生成的 Red Hat Advanced Cluster Management 策略前对其进行补丁。
- 生成额外的配置策略,以便您可以通过 Red Hat Advanced Cluster Management for Kubernetes 报告 Gatekeeper 策略违反情况。
- 在 hub 集群上生成策略集。
4.1.2. 策略生成器配置结构
策略生成器是一个 Kustomize 生成器插件,它配置了一个 PolicyGenerator
kind 和 policy.open-cluster-management.io/v1
API 版本的清单。
要使用插件,首先在 kustomization.yaml
文件中添加一个 generators
部分。查看以下示例:
generators: - policy-generator-config.yaml
上例中引用的 policy-generator-config.yaml
文件是一个 YAML 文件,其中包含要生成的策略的说明。简单的 PolicyGenerator
配置文件可能类似以下示例:
apiVersion: policy.open-cluster-management.io/v1 kind: PolicyGenerator metadata: name: config-data-policies policyDefaults: namespace: policies policySets: [] policies: - name: config-data manifests: - path: configmap.yaml
configmap.yaml
代表要包含在策略中的 Kubernetes 清单 YAML 文件。另外,您可以设置 Kustomize 目录的路径,或者设置具有多个 Kubernetes 清单 YAML 文件的目录。查看以下示例:
apiVersion: v1 kind: ConfigMap metadata: name: my-config namespace: default data: key1: value1 key2: value2
生成的 Policy
以及生成的 Placement
和 PlacementBinding
可能类似以下示例:
apiVersion: cluster.open-cluster-management.io/v1beta1 kind: Placement metadata: name: placement-config-data namespace: policies spec: predicates: - requiredClusterSelector: labelSelector: matchExpressions: [] --- apiVersion: policy.open-cluster-management.io/v1 kind: PlacementBinding metadata: name: binding-config-data namespace: policies placementRef: apiGroup: cluster.open-cluster-management.io kind: Placement name: placement-config-data subjects: - apiGroup: policy.open-cluster-management.io kind: Policy name: config-data --- apiVersion: policy.open-cluster-management.io/v1 kind: Policy metadata: annotations: policy.open-cluster-management.io/categories: CM Configuration Management policy.open-cluster-management.io/controls: CM-2 Baseline Configuration policy.open-cluster-management.io/standards: NIST SP 800-53 policy.open-cluster-management.io/description: name: config-data namespace: policies spec: disabled: false policy-templates: - objectDefinition: apiVersion: policy.open-cluster-management.io/v1 kind: ConfigurationPolicy metadata: name: config-data spec: object-templates: - complianceType: musthave objectDefinition: apiVersion: v1 data: key1: value1 key2: value2 kind: ConfigMap metadata: name: my-config namespace: default remediationAction: inform severity: low
4.1.3. 策略生成器配置参考表
请注意,每个策略都可以覆盖 policyDefaults
部分中除 namespace
以外的所有字段,每个策略集都可以覆盖 policySetDefaults
部分中的所有字段。
字段 | 可选或必需的 | 描述 |
---|---|---|
| 必填 |
将值设置为 |
| 必填 |
将值设为 |
| 必填 | 用于标识策略资源的名称。 |
| 选填 |
如果多个策略使用相同的放置,则使用此名称为生成的 |
| 必填 |
对于 policies 数组中的条目,这里列出的任何默认值都会被覆盖,但 |
| 必填 | 所有策略的命名空间。 |
| 选填 |
决定在将清单与集群上对象进行比较时的策略控制器行为。您可以使用的值是 |
| 选填 |
在将清单元数据部分与集群中的对象进行比较时,会覆盖 |
| 选填 |
|
| 选填 |
|
| 选填 |
|
| 选填 |
策略在 |
| 选填 |
用于对生成的配置策略设置的注解的键值对。例如,您可以通过定义以下参数来禁用策略模板: |
| 选填 |
复制所有策略的标签和注解,并将它们添加到副本策略中。默认设置为 |
| 选填 |
策略违反的严重性。默认值为 |
| 选填 |
策略是否被禁用,代表不会传播它,因此结果为没有状态。默认值为 |
| 选填 |
策略的补救机制。参数值是 |
| 没有指定命名空间的命名空间对象是必需的 |
决定对象要应用到的受管集群中的命名空间。 |
| 选填 |
使用 |
| 选填 |
决定在删除策略时是否应删除由策略创建或监控的对象。只有策略的补救操作被设置为 |
| 选填 |
指定在策略中记录对象与 |
| 选填 |
应用此策略前必须处于特定合规性状态的对象列表。当 |
| 必填 | 要依赖的对象名称。 |
| 选填 | 要依赖的对象的命名空间。默认为 Policy Generator 设置的策略命名空间。 |
| 选填 |
对象需要处于的合规性状态。默认值为 |
| 选填 |
对象的种类。默认情况下,kind 设置为 |
| 选填 |
对象的 API 版本。默认值为 |
| 选填 | 您要创建的策略的描述。 |
| 选填 |
应用此策略前必须处于特定合规性状态的对象列表。您定义的依赖项会独立于 |
| 必填 | 要依赖的对象名称。 |
| 选填 | 要依赖的对象的命名空间。默认情况下,值设为为 Policy Generator 设置的策略命名空间。 |
| 选填 |
对象需要处于的合规性状态。默认值为 |
| 选填 |
对象的种类。默认值为 |
| 选填 |
对象的 API 版本。默认值为 |
| 选填 |
当 Policy Generator 等待其依赖项达到其所需状态时,绕过合规性状态检查。默认值为 |
| 选填 |
自动生成有关策略的 |
| 选填 |
在策略模板上自动生成 |
| 选填 |
这决定了是否为策略中包含的所有清单生成单一配置策略。如果设置为 |
| 选填 |
将 |
| 选填 |
当策略引用 Kyverno 策略清单时,这决定了在 Kyverno 策略被违反时,是否生成额外的配置策略来接收 Red Hat Advanced Cluster Management 中的策略违反情况。默认值为 |
| 选填 |
策略在 |
| 选填 |
策略加入的策略集合的数组。策略设置详情可在 |
| 选填 |
为策略生成放置清单。默认设置为 |
| 选填 |
当一个策略是策略集的一部分时,默认情况下,生成器不会为这个策略生成放置,因为会为策略集生成一个。将 |
| 选填 | 策略的放置配置。这默认为与所有集群匹配的放置配置。 |
| 选填 | 指定一个名称来整合包含相同集群标签选择器的放置。 |
| 选填 |
使用 |
| 选填 |
定义此参数以使用集群中已存在的放置。没有创建 |
| 选填 |
要重复使用现有放置,请指定相对于 |
| 选填 |
|
| 选填 |
|
| 选填 |
|
| 选填 |
策略设置的默认值。为此参数列出的任何默认值都会被 |
| 选填 |
策略的放置配置。这默认为与所有集群匹配的放置配置。有关此字段的描述,请参阅 |
| 选填 |
为策略集合生成放置清单。默认设置为 |
| 必填 |
要创建的策略列表以及覆盖默认值或 |
| 选填 | 您要创建的策略的描述。 |
| 必填 | 要创建的策略的名称。 |
| 必填 |
策略中包含的 Kubernetes 对象清单列表,以及覆盖默认值、此 |
| 必填 |
相对于 |
| 选填 |
应用到路径上清单的 Kustomize 补丁列表。如果有多个清单,补丁需要设置 |
| 选填 |
策略在 |
| 选填 |
要创建的策略集合列表,以及覆盖默认值或 |
| 必填 | 要创建的策略的名称。 |
| 选填 | 要创建的策略集的描述。 |
| 选填 |
包括在策略集中的策略列表。如果还指定了 |
4.1.4. 其他资源
- 读取 生成策略以安装 GitOps Operator。
- 如需了解更多详细信息,请参阅策略设置控制器。
- 如需更多信息,请参阅应用 Kustomize。
- 如需了解更多主题,请参阅监管文档。
-
请参阅
kustomization.yaml
文件示例。 - 请参阅 Kubernetes 标签和选择器 文档。
- 如需更多详细信息,请参阅 Gatekeeper。
- 请参阅 Kustomize 文档。
- 返回集成第三方策略控制器文档。