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"
],
Copy to Clipboard Toggle word wrap

您可以根据此属性创建一个 Rego 查询,并将其添加到 forklift-validation-config 配置映射中:

`count(input.numaNodeAffinity) != 0`
Copy to Clipboard Toggle word wrap

流程

  1. 根据以下示例创建配置映射 CR:

    $ cat << EOF | oc apply -f -
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: <forklift-validation-config>
      namespace: openshift-mtv
    data:
      vmware_multiple_disks.rego: |-
        package <provider_package> 
    1
    
    
        has_multiple_disks { 
    2
    
          count(input.disks) > 1
        }
    
        concerns[flag] {
          has_multiple_disks 
    3
    
            flag := {
              "category": "<Information>", 
    4
    
              "label": "Multiple disks detected",
              "assessment": "Multiple disks detected on this VM."
            }
        }
    EOF
    Copy to Clipboard Toggle word wrap
    1
    指定供应商软件包名称。允许的值是 VMware 的 io.konveyor.forklift.vmwareio.konveyor.forklift.ovirt
    2
    指定 问题 名称和 Rego 查询。
    3
    指定 concerns 名称和 标志 参数值。
    4
    允许的值是 Critical警告 和信息
  2. 通过将 forklift-controller 部署扩展到 0 来停止 Validation pod:

    $ oc scale -n openshift-mtv --replicas=0 deployment/forklift-controller
    Copy to Clipboard Toggle word wrap
  3. 通过将 forklift-controller 部署扩展到 1:

    $ oc scale -n openshift-mtv --replicas=1 deployment/forklift-controller
    Copy to Clipboard Toggle word wrap
  4. 检查 Validation pod 日志,以验证 pod 是否已启动:

    $ oc logs -f <validation_pod>
    Copy to Clipboard Toggle word wrap

    如果自定义规则与默认规则冲突,则 Validation pod 将不会启动。

  5. 删除源供应商:

    $ oc delete provider <provider> -n openshift-mtv
    Copy to Clipboard Toggle word wrap
  6. 添加源供应商以应用新规则:

    $ cat << EOF | oc apply -f -
    apiVersion: forklift.konveyor.io/v1beta1
    kind: Provider
    metadata:
      name: <provider>
      namespace: openshift-mtv
    spec:
      type: <provider_type> 
    1
    
      url: <api_end_point> 
    2
    
      secret:
        name: <secret> 
    3
    
        namespace: openshift-mtv
    EOF
    Copy to Clipboard Toggle word wrap
    1
    允许的值是 ovirtvsphere
    2
    指定 API 端点 URL,例如: https://<vCenter_host>/sdk for vSphere 或 https://<engine_host>/ovirt-engine/api/ for RHV。
    3
    指定供应商 Secret CR 的名称。

您必须在创建自定义规则后更新规则版本,以便 Inventory 服务检测到更改并验证虚拟机。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat