5.8. 使用策略更改应用的受管集群 CR
您可以通过策略从受管集群中部署的自定义资源(CR)中删除内容。
默认情况下,从 PolicyGenTemplate
CR 创建的所有 Policy
CR 将 complianceType
字段设置为 musthave
。没有删除内容的 musthave
策略仍然合规,因为受管集群上的 CR 具有所有指定的内容。使用这个配置,当从 CR 中删除内容时,TALM 从策略中删除内容,但不会从受管集群的 CR 中删除内容。
当 complianceType
字段为 mustonlyhave
时,策略可确保集群中的 CR 与策略中指定的内容完全匹配。
先决条件
-
已安装 OpenShift CLI(
oc
)。 -
已以具有
cluster-admin
权限的用户身份登录到 hub 集群。 - 您已从运行 RHACM 的 hub 集群部署了受管集群。
- 您已在 hub 集群中安装了 Topology Aware Lifecycle Manager。
流程
从受影响的 CR 中删除您不再需要的内容。在本例中,
disableDrain: false
行已从SriovOperatorConfig
CR 中删除。CR 示例
apiVersion: sriovnetwork.openshift.io/v1 kind: SriovOperatorConfig metadata: name: default namespace: openshift-sriov-network-operator spec: configDaemonNodeSelector: "node-role.kubernetes.io/$mcp": "" disableDrain: true enableInjector: true enableOperatorWebhook: true
在
group-du-sno-ranGen.yaml
文件中,将受影响的策略的complianceType
更改为mustonlyhave
。YAML 示例
# ... - fileName: SriovOperatorConfig.yaml policyName: "config-policy" complianceType: mustonlyhave # ...
创建
ClusterGroupUpdates
CR,并指定必须接收 CR 更改的集群:ClusterGroupUpdates CR 示例
apiVersion: ran.openshift.io/v1alpha1 kind: ClusterGroupUpgrade metadata: name: cgu-remove namespace: default spec: managedPolicies: - ztp-group.group-du-sno-config-policy enable: false clusters: - spoke1 - spoke2 remediationStrategy: maxConcurrency: 2 timeout: 240 batchTimeoutAction:
运行以下命令来创建
ClusterGroupUpgrade
CR:$ oc create -f cgu-remove.yaml
当您准备好应用更改时,例如在适当的维护窗口中,运行以下命令将
spec.enable
字段的值改为true
:$ oc --namespace=default patch clustergroupupgrade.ran.openshift.io/cgu-remove \ --patch '{"spec":{"enable":true}}' --type=merge
验证
运行以下命令,检查策略的状态:
$ oc get <kind> <changed_cr_name>
输出示例
NAMESPACE NAME REMEDIATION ACTION COMPLIANCE STATE AGE default cgu-ztp-group.group-du-sno-config-policy enforce 17m default ztp-group.group-du-sno-config-policy inform NonCompliant 15h
当策略的
COMPLIANCE STATE
为Compliant
时,这意味着已更新 CR,并删除不需要的内容。在受管集群中运行以下命令来检查策略是否已从目标集群中移除:
$ oc get <kind> <changed_cr_name>
如果没有结果,则会从受管集群中删除 CR。