6.2.4. 创建验证规则
您可以通过将包含规则的配置映射自定义资源(CR)应用到 Validation
服务来创建验证规则。
-
如果您创建与现有规则 相同的规则,验证服务
将使用
规则执行OR
操作。 -
如果您创建使用默认规则迭代的规则,则
Validation
服务将不会启动。
验证规则示例
验证规则基于由 Provider Inventory
服务收集的虚拟机(VM)属性。
例如,VMware API 使用此路径来检查 VMware 虚拟机是否配置了 NUMA 节点关联性: MOR:VirtualMachine.config.extraConfig["numa.nodeAffinity"]
。
Provider Inventory
服务使用列表值简化了此配置并返回 testable 属性:
"numaNodeAffinity": [ "0", "1" ],
"numaNodeAffinity": [
"0",
"1"
],
您可以根据此属性创建一个 Rego 查询,并将其添加到 forklift-validation-config
配置映射中:
`count(input.numaNodeAffinity) != 0`
`count(input.numaNodeAffinity) != 0`
流程
根据以下示例创建配置映射 CR:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过将
forklift-controller
部署扩展到0
来停止Validation
pod:oc scale -n openshift-mtv --replicas=0 deployment/forklift-controller
$ oc scale -n openshift-mtv --replicas=0 deployment/forklift-controller
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过将
forklift-controller
部署扩展到1:
oc scale -n openshift-mtv --replicas=1 deployment/forklift-controller
$ oc scale -n openshift-mtv --replicas=1 deployment/forklift-controller
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查
Validation
pod 日志,以验证 pod 是否已启动:oc logs -f <validation_pod>
$ oc logs -f <validation_pod>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果自定义规则与默认规则冲突,则
Validation
pod 将不会启动。删除源供应商:
oc delete provider <provider> -n openshift-mtv
$ oc delete provider <provider> -n openshift-mtv
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 添加源供应商以应用新规则:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
您必须在创建自定义规则后更新规则版本,以便 Inventory
服务检测到更改并验证虚拟机。