5.6. 验证配置策略 CR 的生成
策略自定义资源(CR)在与创建它们的 PolicyGenTemplate
相同的命名空间中生成。同样的故障排除流程适用于从 PolicyGenTemplate
生成的所有策略 CR,无论它们是 ztp-common
、ztp-group
,还是基于 ztp-site
,请使用以下命令:
$ export NS=<namespace>
$ oc get policy -n $NS
应该会显示预期的策略嵌套 CR 集合。
如果策略失败的同步,请使用以下故障排除步骤。
流程
要显示策略的详细信息,请运行以下命令:
$ oc describe -n openshift-gitops application policies
检查
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
检查
Status: Sync:
。如果Status: Conditions:
中存在日志错误,则Status: Sync:
显示Unknown
或Error
: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
当 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>
。检查放置规则中是否有没有复制到集群命名空间中的策略。这些策略的
PlacementRule
中的matchSelector
应与ManagedCluster
对象上的标签匹配:$ oc get placementrule -n $NS
使用以下命令,注意适合缺少策略、通用、组或站点的
PlacementRule
名称:$ oc get placementrule -n $NS <placementRuleName> -o yaml
- status-decisions 应该包括集群名称。
-
spec 中
matchSelector
的键值对必须与受管集群上的标签匹配。
使用以下命令,检查
ManagedCluster
对象上的标签:$ oc get ManagedCluster $CLUSTER -o jsonpath='{.metadata.labels}' | jq
使用以下命令查看合规策略:
$ oc get policy -n $CLUSTER
如果
Namespace
、OperatorGroup
和Subscription
策略兼容,但 Operator 配置策略不兼容,则 Operator 可能不会在受管集群中安装。这会导致 Operator 配置策略无法应用,因为 CRD 还没有应用到 spoke。