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。

流程

  1. 从受影响的 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

  2. group-du-sno-ranGen.yaml 文件中,将受影响的策略的 complianceType 更改为 mustonlyhave

    YAML 示例

    # ...
    - fileName: SriovOperatorConfig.yaml
      policyName: "config-policy"
      complianceType: mustonlyhave
    # ...

  3. 创建 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:

  4. 运行以下命令来创建 ClusterGroupUpgrade CR:

    $ oc create -f cgu-remove.yaml
  5. 当您准备好应用更改时,例如在适当的维护窗口中,运行以下命令将 spec.enable 字段的值改为 true

    $ oc --namespace=default patch clustergroupupgrade.ran.openshift.io/cgu-remove \
    --patch '{"spec":{"enable":true}}' --type=merge

验证

  1. 运行以下命令,检查策略的状态:

    $ 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 STATECompliant 时,这意味着已更新 CR,并删除不需要的内容。

  2. 在受管集群中运行以下命令来检查策略是否已从目标集群中移除:

    $ oc get <kind> <changed_cr_name>

    如果没有结果,则会从受管集群中删除 CR。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.