2.3. 策略控制器

策略控制器监控并报告集群是否合规。通过开箱即用的策略模板应用预定义策略控制器和策略,以使用 Red Hat Advanced Cluster Management for Kubernetes 策略框架。策略控制器是 Kubernetes CustomResourceDefinition (CRD) 实例。有关 CRD 的更多信息,请参阅使用 CustomResourceDefinitions 扩展 Kubernetes API。策略控制器会修复策略违反情况,以使集群状态兼容。

您可以使用产品策略框架创建自定义策略和策略控制器。如需更多信息,请参阅创建自定义策略控制器

重要:只有配置策略控制器支持 enforce 功能。当策略控制器不支持 enforce 功能时,您必须手动修复策略。

查看以下主题以了解有关以下 Red Hat Advanced Cluster Management for Kubernetes 策略控制器的更多信息:

有关管理您的策略的更多主题,请参阅监管和风险

2.3.1. Kubernetes 配置策略控制器

配置策略控制器可用于配置任何 Kubernetes 资源,并在集群中应用安全策略。

配置策略控制器与本地 Kubernetes API 服务器通信,以获取集群中的配置列表。有关 CRD 的更多信息,请参阅使用 CustomResourceDefinitions 扩展 Kubernetes API

配置策略控制器是在安装过程中在 hub 集群上创建的。配置策略控制器支持 enforce 功能并监控以下策略的合规性:

当将配置策略的 remediationAction 设置为 enforce 时,控制器会在目标受管集群上创建副本策略。

2.3.1.1. 配置策略控制器 YAML 结构

Name:         configuration-policy-example
Namespace:
Labels:
APIVersion:   policy.open-cluster-management.io/v1
Kind:         ConfigPolicy
Metadata:
  Finalizers:
    finalizer.policy.open-cluster-management.io
Spec:
  Conditions:
    Ownership:
    NamespaceSelector:
      Exclude:
      Include:
    RemediationAction:
 Status:
   CompliancyDetails:
     Configuration-Policy-Example:
       Default:
       Kube - Public:
   Compliant:          Compliant
 Events:

2.3.1.2. 配置策略示例

apiVersion: policy.open-cluster-management.io/v1
kind: ConfigPolicy
metadata:
  name: policy-config
spec:
  namespaceSelector:
    include: ["default"]
    exclude: []
  remediationAction: inform
    severity: low
    object-templates:
    - complianceType: musthave
      objectDefinition:
        apiVersion: v1
        kind: Pod
        metadata:
          name: nginx-pod
        spec:
          containers:
          - image: nginx:1.7.9
            name: nginx
            ports:
           - containerPort: 80

2.3.1.3. 配置策略 YAML 标

表 2.1. 参数表

字段描述

apiVersion

必需。将值设置为 policy.open-cluster-management.io/v1

kind

必需。将值设置为 ConfigPolicy 来代表策略类型。

metadata.name

必需。策略的名称。

spec

必需。有关监控哪些配置策略以及如何进行修复的规格。

spec.namespaceSelector

必需。策略应用到的节点集群内命名空间。至少为 include 参数输入一个命名空间,这是您要将策略应用到的命名空间。exclude 参数指定您明确不希望将策略应用到的命名空间。

spec.remediationAction

必需。指定您的策略的修复。输入 inform

remediationAction.severity

必需。当策略不合规时,指定严重性。使用以下参数值: lowmediumhigh

remediationAction.complianceType

必需。用于列出必须被评估或应用到受管集群的角色的预期行为和任何 Kubernetes 对象。您必须使用以下操作动词作为参数值:

mustonlyhave :表示必须存在带有准确名称和相关字段的对象。

musthave :表示必须存在名称与指定 object-template 的名称相同的对象。模板中的其它字段是对象中存在的子集。

mustnothave:指明具有相同名称或标签的对象不能存在,需要删除,而不管规格或规则是什么。

了解策略将如何应用到您的 hub 集群中。如需更多详细信息,请参阅策略示例。了解如何创建和自定义策略,请参阅管理安全策略

有关控制器的更多信息,请参阅策略控制器