×

应用的Policy 自定义资源 (CR) 配置您配置的托管集群。您可以自定义 Red Hat Advanced Cluster Management (RHACM) 如何使用PolicyGenTemplate CR 生成应用的Policy CR。

使用PolicyGenTemplate CR 管理和部署策略到托管集群的功能将在即将发布的 OpenShift Container Platform 版本中弃用。可以使用 Red Hat Advanced Cluster Management (RHACM) 和PolicyGenerator CR 获得等效且改进的功能。

有关PolicyGenerator 资源的更多信息,请参阅 RHACM 的策略生成器文档。

关于 PolicyGenTemplate CRD

PolicyGenTemplate 自定义资源定义 (CRD) 告诉PolicyGen 策略生成器在集群配置中包含哪些自定义资源 (CR),如何将 CR 组合到生成的策略中,以及这些 CR 中哪些项目需要使用覆盖内容更新。

以下示例显示从ztp-site-generate 参考容器中提取的PolicyGenTemplate CR (common-du-ranGen.yaml)。common-du-ranGen.yaml 文件定义了两个 Red Hat Advanced Cluster Management (RHACM) 策略。这些策略管理一系列配置 CR,每个 CR 都有一个唯一的policyName 值。common-du-ranGen.yaml 创建单个放置绑定和放置规则,以根据spec.bindingRules 部分中列出的标签将策略绑定到集群。

PolicyGenTemplate CR 示例 - common-ranGen.yaml
apiVersion: ran.openshift.io/v1
kind: PolicyGenTemplate
metadata:
  name: "common-latest"
  namespace: "ztp-common"
spec:
  bindingRules:
    common: "true" (1)
    du-profile: "latest"
  sourceFiles: (2)
    - fileName: SriovSubscriptionNS.yaml
      policyName: "subscriptions-policy"
    - fileName: SriovSubscriptionOperGroup.yaml
      policyName: "subscriptions-policy"
    - fileName: SriovSubscription.yaml
      policyName: "subscriptions-policy"
    - fileName: SriovOperatorStatus.yaml
      policyName: "subscriptions-policy"
    - fileName: PtpSubscriptionNS.yaml
      policyName: "subscriptions-policy"
    - fileName: PtpSubscriptionOperGroup.yaml
      policyName: "subscriptions-policy"
    - fileName: PtpSubscription.yaml
      policyName: "subscriptions-policy"
    - fileName: PtpOperatorStatus.yaml
      policyName: "subscriptions-policy"
    - fileName: ClusterLogNS.yaml
      policyName: "subscriptions-policy"
    - fileName: ClusterLogOperGroup.yaml
      policyName: "subscriptions-policy"
    - fileName: ClusterLogSubscription.yaml
      policyName: "subscriptions-policy"
    - fileName: ClusterLogOperatorStatus.yaml
      policyName: "subscriptions-policy"
    - fileName: StorageNS.yaml
      policyName: "subscriptions-policy"
    - fileName: StorageOperGroup.yaml
      policyName: "subscriptions-policy"
    - fileName: StorageSubscription.yaml
      policyName: "subscriptions-policy"
    - fileName: StorageOperatorStatus.yaml
      policyName: "subscriptions-policy"
    - fileName: DefaultCatsrc.yaml (3)
      policyName: "config-policy" (4)
      metadata:
        name: redhat-operators-disconnected
      spec:
        displayName: disconnected-redhat-operators
        image: registry.example.com:5000/disconnected-redhat-operators/disconnected-redhat-operator-index:v4.9
    - fileName: DisconnectedICSP.yaml
      policyName: "config-policy"
      spec:
        repositoryDigestMirrors:
        - mirrors:
          - registry.example.com:5000
          source: registry.redhat.io
1 common: "true" 将策略应用于具有此标签的所有集群。
2 sourceFiles 下列出的文件为已安装的集群创建 Operator 策略。
3 DefaultCatsrc.yaml 为断开连接的注册表配置目录源。
4 policyName: "config-policy" 配置 Operator 订阅。OperatorHub CR 禁用默认值,此 CR 将redhat-operators 替换为指向断开连接的注册表的CatalogSource CR。

可以使用任意数量的包含 CR 来构建PolicyGenTemplate CR。在中心集群中应用以下示例 CR 以生成包含单个 CR 的策略

apiVersion: ran.openshift.io/v1
kind: PolicyGenTemplate
metadata:
  name: "group-du-sno"
  namespace: "ztp-group"
spec:
  bindingRules:
    group-du-sno: ""
  mcp: "master"
  sourceFiles:
    - fileName: PtpConfigSlave.yaml
      policyName: "config-policy"
      metadata:
        name: "du-ptp-slave"
      spec:
        profile:
        - name: "slave"
          interface: "ens5f0"
          ptp4lOpts: "-2 -s --summary_interval -4"
          phc2sysOpts: "-a -r -n 24"

以源文件PtpConfigSlave.yaml 为例,该文件定义了PtpConfig CR。为PtpConfigSlave 示例生成的策略名为group-du-sno-config-policy。在生成的group-du-sno-config-policy 中定义的PtpConfig CR 名为du-ptp-slavePtpConfigSlave.yaml 中定义的spec 与源文件中定义的其他spec 项目一起放在du-ptp-slave 下。

以下示例显示group-du-sno-config-policy CR

apiVersion: policy.open-cluster-management.io/v1
kind: Policy
metadata:
  name: group-du-ptp-config-policy
  namespace: groups-sub
  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
spec:
    remediationAction: inform
    disabled: false
    policy-templates:
        - objectDefinition:
            apiVersion: policy.open-cluster-management.io/v1
            kind: ConfigurationPolicy
            metadata:
                name: group-du-ptp-config-policy-config
            spec:
                remediationAction: inform
                severity: low
                namespaceselector:
                    exclude:
                        - kube-*
                    include:
                        - '*'
                object-templates:
                    - complianceType: musthave
                      objectDefinition:
                        apiVersion: ptp.openshift.io/v1
                        kind: PtpConfig
                        metadata:
                            name: du-ptp-slave
                            namespace: openshift-ptp
                        spec:
                            recommend:
                                - match:
                                - nodeLabel: node-role.kubernetes.io/worker-du
                                  priority: 4
                                  profile: slave
                            profile:
                                - interface: ens5f0
                                  name: slave
                                  phc2sysOpts: -a -r -n 24
                                  ptp4lConf: |
                                    [global]
                                    #
                                    # Default Data Set
                                    #
                                    twoStepFlag 1
                                    slaveOnly 0
                                    priority1 128
                                    priority2 128
                                    domainNumber 24

自定义 PolicyGenTemplate CR 时的建议

自定义站点配置PolicyGenTemplate 自定义资源 (CR) 时,请考虑以下最佳实践

  • 尽可能少地使用策略。使用更少的策略需要更少的资源。每个额外的策略都会增加中心集群和已部署的托管集群的 CPU 负载。CR 根据PolicyGenTemplate CR 中的policyName 字段组合到策略中。在同一个PolicyGenTemplate 中具有相同policyName 值的 CR 在单个策略下进行管理。

  • 在断开连接的环境中,通过将注册表配置为包含所有 Operator 的单个索引,为所有 Operator 使用单个目录源。托管集群上的每个附加CatalogSource CR 都会增加 CPU 使用率。

  • 应将MachineConfig CR 作为SiteConfig CR 中的extraManifests 包含在内,以便在安装期间应用它们。这可以缩短集群准备部署应用程序所需的时间。

  • PolicyGenTemplate CR 应覆盖 channel 字段以明确标识所需版本。这可确保升级期间源 CR 的更改不会更新生成的订阅。

其他资源

在中心集群上管理大量 spoke 集群时,请最大限度地减少策略数量以减少资源消耗。

将多个配置 CR 组合到单个或少量策略中,是减少中心集群中策略总数的一种方法。当使用常见的、组的和站点的策略层次结构来管理站点配置时,将站点特定的配置组合到单个策略中尤其重要。

RAN 部署的 PolicyGenTemplate CR

使用PolicyGenTemplate自定义资源 (CR) 通过 GitOps 零接触配置 (ZTP) 管道自定义应用于集群的配置。PolicyGenTemplate CR 允许您生成一个或多个策略来管理集群群集上的配置 CR 集。PolicyGenTemplate CR 识别受管理的 CR 集,将它们捆绑到策略中,构建围绕这些 CR 的策略包装,并使用标签绑定规则将策略与集群关联。

从 GitOps ZTP 容器获得的参考配置旨在提供一组关键功能和节点调整设置,以确保集群能够支持 RAN(无线接入网)分布式单元 (DU) 应用程序通常具有的严格性能和资源利用率约束。与基线配置相比的更改或遗漏可能会影响功能可用性、性能和资源利用率。使用参考PolicyGenTemplate CR 作为创建适合您特定站点要求的配置文件层次结构的基础。

为 RAN DU 集群配置定义的基线PolicyGenTemplate CR 可以从 GitOps ZTP ztp-site-generate 容器中提取。有关更多详细信息,请参见“准备 GitOps ZTP 站点配置存储库”。

PolicyGenTemplate CR 位于./out/argocd/example/policygentemplates文件夹中。参考架构具有常见、组和特定于站点的配置 CR。每个PolicyGenTemplate CR 都引用可以在./out/source-crs文件夹中找到的其他 CR。

下面描述了与 RAN 集群配置相关的PolicyGenTemplate CR。为组PolicyGenTemplate CR 提供了变体,以解释单节点、三节点紧凑型和标准集群配置的差异。类似地,为单节点集群和多节点(紧凑型或标准型)集群提供了特定于站点的配置变体。使用与您的部署相关的组和特定于站点的配置变体。

表 1. RAN 部署的 PolicyGenTemplate CR
PolicyGenTemplate CR 描述

example-multinode-site.yaml

包含应用于多节点集群的一组 CR。这些 CR 配置 RAN 安装中常见的 SR-IOV 功能。

example-sno-site.yaml

包含应用于单节点 OpenShift 集群的一组 CR。这些 CR 配置 RAN 安装中常见的 SR-IOV 功能。

common-mno-ranGen.yaml

包含应用于多节点集群的一组常见的 RAN 策略配置。

common-ranGen.yaml

包含应用于所有集群的一组常见的 RAN CR。这些 CR 订阅了一组运营商,这些运营商提供 RAN 中常见的集群功能以及基线集群调整。

group-du-3node-ranGen.yaml

仅包含三节点集群的 RAN 策略。

group-du-sno-ranGen.yaml

仅包含单节点集群的 RAN 策略。

group-du-standard-ranGen.yaml

包含标准三控制平面集群的 RAN 策略。

group-du-3node-validator-ranGen.yaml

用于生成三节点集群所需的各种策略的PolicyGenTemplate CR。

group-du-standard-validator-ranGen.yaml

用于生成标准集群所需的各种策略的PolicyGenTemplate CR。

group-du-sno-validator-ranGen.yaml

用于生成单节点 OpenShift 集群所需的各种策略的PolicyGenTemplate CR。

使用 PolicyGenTemplate CR 自定义受管集群

使用以下步骤自定义应用于使用 GitOps 零接触配置 (ZTP) 管道配置的受管集群的策略。

先决条件
  • 您已安装 OpenShift CLI (oc)。

  • 您已以具有cluster-admin权限的用户身份登录到中心集群。

  • 您已配置中心集群以生成所需的安装和策略 CR。

  • 您创建了一个 Git 存储库,用于管理您的自定义站点配置数据。该存储库必须可从中心集群访问,并被定义为 Argo CD 应用程序的源存储库。

步骤
  1. 为特定于站点的配置 CR 创建PolicyGenTemplate CR。

    1. out/argocd/example/policygentemplates文件夹中选择适合您 CR 的示例,例如example-sno-site.yamlexample-multinode-site.yaml

    2. 更改示例文件中的spec.bindingRules字段以匹配SiteConfig CR 中包含的特定于站点的标签。在示例SiteConfig文件中,特定于站点的标签是sites: example-sno

      确保在您的PolicyGenTemplate spec.bindingRules字段中定义的标签与在相关受管集群SiteConfig CR 中定义的标签相对应。

    3. 更改示例文件中的内容以匹配所需的配置。

  2. 可选:为应用于整个集群群集的任何常见配置 CR 创建PolicyGenTemplate CR。

    1. out/argocd/example/policygentemplates文件夹中选择适合您 CR 的示例,例如common-ranGen.yaml

    2. 更改示例文件中的内容以匹配所需的配置。

  3. 可选:为应用于群集中某些集群组的任何组配置 CR 创建PolicyGenTemplate CR。

    确保叠加的 spec 文件的内容与您所需的最终状态匹配。作为参考,out/source-crs目录包含可由您的 PolicyGenTemplate 模板包含和叠加的完整源 cr 列表。

    根据集群的具体要求,您可能需要每个集群类型多个组策略,尤其考虑到示例组策略每个都只有一个PerformancePolicy.yaml文件,只有当这些集群包含相同的硬件配置时,才能在这些集群之间共享。

    1. out/argocd/example/policygentemplates文件夹中选择适合您 CR 的示例,例如group-du-sno-ranGen.yaml

    2. 更改示例文件中的内容以匹配所需的配置。

  4. 可选。创建一个验证器信息策略PolicyGenTemplate CR 以在部署集群的 GitOps ZTP 安装和配置完成后发出信号。有关更多信息,请参见“创建验证器信息策略”。

  5. 在类似于示例out/argocd/example/policygentemplates/ns.yaml文件的 YAML 文件中定义所有策略命名空间。

    不要在同一个文件中包含Namespace CR 和PolicyGenTemplate CR。

  6. PolicyGenTemplate CR、Namespace CR 和关联的kustomization.yaml文件添加到生成器部分的kustomization.yaml文件中,类似于out/argocd/example/policygentemplateskustomization.yaml中显示的示例。

  7. 提交您的 Git 存储库中的PolicyGenTemplate CR、Namespace CR 和关联的kustomization.yaml文件并推送更改。

    ArgoCD 管道检测到更改并开始受管集群部署。您可以同时将更改推送到SiteConfig CR 和PolicyGenTemplate CR。

监控受管集群策略部署进度

ArgoCD 管道使用 Git 中的PolicyGenTemplate CR 来生成 RHACM 策略,然后将其同步到 hub 集群。在辅助服务在托管集群上安装 OpenShift Container Platform 后,您可以监控托管集群策略同步的进度。

先决条件
  • 您已安装 OpenShift CLI (oc)。

  • 您已以具有cluster-admin权限的用户身份登录到中心集群。

步骤
  1. 拓扑感知生命周期管理器 (TALM) 应用绑定到集群的配置策略。

    集群安装完成后且集群变为Ready状态后,TALM 会自动创建一个与该集群对应的ClusterGroupUpgrade CR,其中包含由ran.openshift.io/ztp-deploy-wave 注释定义的已排序策略列表。集群的策略将按照ClusterGroupUpgrade CR 中列出的顺序应用。

    您可以使用以下命令监控配置策略协调的高级进度

    $ export CLUSTER=<clusterName>
    $ oc get clustergroupupgrades -n ztp-install $CLUSTER -o jsonpath='{.status.conditions[-1:]}' | jq
    示例输出
    {
      "lastTransitionTime": "2022-11-09T07:28:09Z",
      "message": "Remediating non-compliant policies",
      "reason": "InProgress",
      "status": "True",
      "type": "Progressing"
    }
  2. 您可以使用 RHACM 仪表板或命令行监控详细的集群策略合规性状态。

    1. 要使用oc检查策略合规性,请运行以下命令

      $ oc get policies -n $CLUSTER
      示例输出
      NAME                                                     REMEDIATION ACTION   COMPLIANCE STATE   AGE
      ztp-common.common-config-policy                          inform               Compliant          3h42m
      ztp-common.common-subscriptions-policy                   inform               NonCompliant       3h42m
      ztp-group.group-du-sno-config-policy                     inform               NonCompliant       3h42m
      ztp-group.group-du-sno-validator-du-policy               inform               NonCompliant       3h42m
      ztp-install.example1-common-config-policy-pjz9s          enforce              Compliant          167m
      ztp-install.example1-common-subscriptions-policy-zzd9k   enforce              NonCompliant       164m
      ztp-site.example1-config-policy                          inform               NonCompliant       3h42m
      ztp-site.example1-perf-policy                            inform               NonCompliant       3h42m
    2. 要从 RHACM Web 控制台检查策略状态,请执行以下操作

      1. 点击治理查找策略

      2. 点击集群策略以检查其状态。

当所有集群策略都符合要求时,GitOps ZTP 集群安装和配置完成。ztp-done标签将添加到集群。

在参考配置中,最终符合要求的策略是在*-du-validator-policy策略中定义的策略。此策略在集群上符合要求时,确保所有集群配置、Operator 安装和 Operator 配置都已完成。

验证配置策略 CR 的生成

Policy 自定义资源 (CR) 在与创建它们的PolicyGenTemplate相同的命名空间中生成。与所有从PolicyGenTemplate生成的策略 CR 相同的故障排除流程适用,无论它们是基于ztp-commonztp-group还是ztp-site,如下面的命令所示

$ export NS=<namespace>
$ oc get policy -n $NS

应该显示预期的策略包装 CR 集。

如果策略同步失败,请使用以下故障排除步骤。

步骤
  1. 要显示有关策略的详细信息,请运行以下命令

    $ oc describe -n openshift-gitops application policies
  2. 检查Status: Conditions:以显示错误日志。例如,将无效的sourceFile条目设置为fileName:会生成以下所示的错误

    Status:
      Conditions:
        Last Transition Time:  2021-11-26T17:21:39Z
        Message:               rpc error: code = Unknown desc = `kustomize build /tmp/https___git.com/ran-sites/policies/ --enable-alpha-plugins` failed exit status 1: 2021/11/26 17:21:40 Error could not find test.yaml under source-crs/: no such file or directory Error: failure in plugin configured via /tmp/kust-plugin-config-52463179; exit status 1: exit status 1
        Type:  ComparisonError
  3. 检查Status: Sync:。如果Status: Conditions:中存在日志错误,则Status: Sync:显示UnknownError

    Status:
      Sync:
        Compared To:
          Destination:
            Namespace:  policies-sub
            Server:     https://kubernetes.default.svc
          Source:
            Path:             policies
            Repo URL:         https://git.com/ran-sites/policies/.git
            Target Revision:  master
        Status:               Error
  4. 当 Red Hat Advanced Cluster Management (RHACM) 识别到策略适用于ManagedCluster对象时,策略 CR 对象将应用于集群命名空间。检查策略是否已复制到集群命名空间

    $ oc get policy -n $CLUSTER
    示例输出
    NAME                                         REMEDIATION ACTION   COMPLIANCE STATE   AGE
    ztp-common.common-config-policy              inform               Compliant          13d
    ztp-common.common-subscriptions-policy       inform               Compliant          13d
    ztp-group.group-du-sno-config-policy         inform               Compliant          13d
    ztp-group.group-du-sno-validator-du-policy   inform               Compliant          13d
    ztp-site.example-sno-config-policy           inform               Compliant          13d

    RHACM 将所有适用的策略复制到集群命名空间。复制的策略名称格式为:<PolicyGenTemplate.Namespace>.<PolicyGenTemplate.Name>-<policyName>

  5. 检查未复制到集群命名空间的任何策略的放置规则。这些策略的PlacementRule中的matchSelector应与ManagedCluster对象的标签匹配

    $ oc get PlacementRule -n $NS
  6. 使用以下命令注意适用于缺少的策略(通用、组或站点)的PlacementRule名称

    $ oc get PlacementRule -n $NS <placement_rule_name> -o yaml
    • 状态决策应包含您的集群名称。

    • 规范中matchSelector的键值对必须与托管集群上的标签匹配。

  7. 使用以下命令检查ManagedCluster对象的标签

    $ oc get ManagedCluster $CLUSTER -o jsonpath='{.metadata.labels}' | jq
  8. 使用以下命令检查哪些策略符合要求

    $ oc get policy -n $CLUSTER

    如果NamespaceOperatorGroupSubscription策略符合要求,但 Operator 配置策略不符合要求,则可能是因为 Operator 未安装在托管集群上。这会导致 Operator 配置策略无法应用,因为 CRD 尚未应用于 spoke。

重新启动策略协调

当出现意外的合规性问题时,例如当ClusterGroupUpgrade自定义资源 (CR) 超时时,您可以重新启动策略协调。

步骤
  1. 托管集群变为Ready状态后,拓扑感知生命周期管理器会在ztp-install命名空间中生成一个ClusterGroupUpgrade CR

    $ export CLUSTER=<clusterName>
    $ oc get clustergroupupgrades -n ztp-install $CLUSTER
  2. 如果存在意外问题并且策略在配置的超时时间内(默认为 4 小时)未能符合要求,则ClusterGroupUpgrade CR 的状态将显示UpgradeTimedOut

    $ oc get clustergroupupgrades -n ztp-install $CLUSTER -o jsonpath='{.status.conditions[?(@.type=="Ready")]}'
  3. 处于UpgradeTimedOut状态的ClusterGroupUpgrade CR 会每小时自动重新启动其策略协调。如果您已更改策略,则可以通过删除现有的ClusterGroupUpgrade CR 来立即启动重试。这将触发自动创建新的ClusterGroupUpgrade CR,该 CR 将立即开始协调策略

    $ oc delete clustergroupupgrades -n ztp-install $CLUSTER

请注意,当ClusterGroupUpgrade CR 以UpgradeCompleted状态完成并且托管集群已应用标签ztp-done时,您可以使用PolicyGenTemplate进行其他配置更改。删除现有的ClusterGroupUpgrade CR 不会使 TALM 生成新的 CR。

此时,GitOps ZTP 已完成与其集群的交互,任何进一步的交互都应视为更新,并为策略修复创建新的ClusterGroupUpgrade CR。

其他资源
  • 有关使用拓扑感知生命周期管理器 (TALM) 构造您自己的ClusterGroupUpgrade CR 的信息,请参阅关于 ClusterGroupUpgrade CR

使用策略更改应用的托管集群 CR

您可以删除通过策略部署在托管集群中的自定义资源 (CR) 中的内容。

默认情况下,从PolicyGenTemplate CR 创建的所有Policy CR 的complianceType字段都设置为musthave。没有删除内容的musthave策略仍然符合要求,因为托管集群上的 CR 包含所有指定的内容。在此配置下,当您从 CR 中删除内容时,TALM 会从策略中删除内容,但不会从托管集群上的 CR 中删除内容。

complianceType字段设置为mustonlyhave,策略可确保集群上的 CR 与策略中指定的 CR 完全匹配。

先决条件
  • 您已安装 OpenShift CLI (oc)。

  • 您已以具有cluster-admin权限的用户身份登录到中心集群。

  • 您已从运行 RHACM 的 hub 集群部署了托管集群。

  • 您已在 hub 集群上安装了拓扑感知生命周期管理器。

步骤
  1. 删除不再需要的受影响 CR 中的内容。在此示例中,从SriovOperatorConfig CR 中删除了disableDrain: false行。

    示例 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

    当策略的合规性状态符合要求时,表示 CR 已更新且已删除不需要的内容。

  2. 通过在托管集群上运行以下命令,检查策略是否已从目标集群中删除

    $ oc get <kind> <changed_cr_name>

    如果没有结果,则表示 CR 已从托管集群中删除。

GitOps ZTP 安装完成的指示

GitOps 零接触配置 (ZTP) 简化了检查集群 GitOps ZTP 安装状态的过程。GitOps ZTP 状态分为三个阶段:集群安装、集群配置和 GitOps ZTP 完成。

集群安装阶段

集群安装阶段由 `ManagedCluster` CR 中的 `ManagedClusterJoined` 和 `ManagedClusterAvailable` 条件指示。如果 `ManagedCluster` CR 不包含这些条件,或者条件设置为 `False`,则集群仍处于安装阶段。有关安装的更多详细信息,请参阅 `AgentClusterInstall` 和 `ClusterDeployment` CR。更多信息,请参见“GitOps ZTP 故障排除”。

集群配置阶段

集群配置阶段由应用于集群 `ManagedCluster` CR 的 `ztp-running` 标签指示。

GitOps ZTP 完成

在 GitOps ZTP 完成阶段,集群安装和配置完成。这由删除 `ztp-running` 标签并向 `ManagedCluster` CR 添加 `ztp-done` 标签来指示。`ztp-done` 标签表示配置已应用,并且基线 DU 配置已完成集群调整。

GitOps ZTP 完成状态的更改取决于 Red Hat Advanced Cluster Management (RHACM) 验证器信息策略的合规状态。此策略捕获已完成安装的现有标准,并且仅在已完成受管集群的 GitOps ZTP 配置时才将其验证为合规状态。

验证器信息策略确保集群的配置已完全应用,并且操作员已完成其初始化。该策略验证以下内容:

  • 目标 `MachineConfigPool` 包含预期的条目并已完成更新。所有节点都可用且未降级。

  • SR-IOV 运算符已完成初始化,至少有一个 `SriovNetworkNodeState` 的 `syncStatus: Succeeded` 指示了这一点。

  • PTP 运算符守护程序集存在。