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