4.6. 使用 GitOps ZTP 管理主机固件设置


主机需要正确的固件配置,以确保高性能和最佳性能。您可以使用 GitOps ZTP 为受管集群部署自定义主机固件配置。

使用实验室中的特定硬件配置文件调优主机,并确保它们根据您的要求进行了优化。当您对主机调整满意后,您将提取主机配置文件并将其保存到 GitOps ZTP 存储库中。然后,您可以使用主机配置集在使用 GitOps ZTP 部署的受管集群主机中配置固件设置。

您可以在用于部署受管集群的 SiteConfig 自定义资源 (CR) 中指定所需的硬件配置集。GitOps ZTP 管道生成应用到 hub 集群所需的 HostFirmwareSettings (HFS)和 BareMetalHost (BMH) CR。

使用以下最佳实践管理您的主机固件配置集。

使用硬件供应商识别关键固件设置
与硬件供应商合作,识别和记录关键主机固件设置,以获得最佳性能以及与部署的主机平台的兼容性。
在类似的硬件平台中使用通用固件配置
在可能的情况下,在类似的硬件平台间使用标准化主机固件配置,以降低部署期间的复杂性和潜在错误。
在实验室环境中测试固件配置
在生产环境中进行部署前,请在一个可以控制的实验室环境中测试主机固件配置,以确保设置与硬件、固件和软件兼容。
在源控制中管理固件配置集
在 Git 存储库中管理主机固件配置文件,以跟踪更改,确保一致性并促进与供应商协作。

4.6.1. 为受管集群检索主机固件模式

您可以为受管集群发现主机固件模式。裸机主机的主机固件模式填充 Ironic API 返回的信息。API 返回有关主机固件接口的信息,包括固件设置类型、允许值、范围和标志。

先决条件

  • 已安装 OpenShift CLI(oc)。
  • 已安装 Red Hat Advanced Cluster Management (RHACM),并以具有 cluster-admin 权限的用户身份登录 hub 集群。
  • 您已置备了由 RHACM 管理的集群。

流程

  • 发现受管集群的主机固件模式。运行以下命令:

    $ oc get firmwareschema -n <managed_cluster_namespace> -o yaml

    输出示例

    apiVersion: v1
    items:
    - apiVersion: metal3.io/v1alpha1
      kind: FirmwareSchema
      metadata:
        creationTimestamp: "2024-09-11T10:29:43Z"
        generation: 1
        name: schema-40562318
        namespace: compute-1
        ownerReferences:
        - apiVersion: metal3.io/v1alpha1
          kind: HostFirmwareSettings
          name: compute-1.example.com
          uid: 65d0e89b-1cd8-4317-966d-2fbbbe033fe9
        resourceVersion: "280057624"
        uid: 511ad25d-f1c9-457b-9a96-776605c7b887
      spec:
        schema:
          AccessControlService:
            allowable_values:
            - Enabled
            - Disabled
            attribute_type: Enumeration
            read_only: false
          # ...

4.6.2. 检索受管集群的主机固件设置

您可以检索受管集群的主机固件设置。当您对主机固件进行了更改,并希望监控更改并确保它们被成功应用时,这非常有用。

先决条件

  • 已安装 OpenShift CLI(oc)。
  • 已安装 Red Hat Advanced Cluster Management (RHACM),并以具有 cluster-admin 权限的用户身份登录 hub 集群。
  • 您已置备了由 RHACM 管理的集群。

流程

  1. 检索受管集群的主机固件设置。运行以下命令:

    $ oc get hostfirmwaresettings -n <cluster_namespace> <node_name> -o yaml

    输出示例

    apiVersion: v1
    items:
    - apiVersion: metal3.io/v1alpha1
      kind: HostFirmwareSettings
      metadata:
        creationTimestamp: "2024-09-11T10:29:43Z"
        generation: 1
        name: compute-1.example.com
        namespace: kni-qe-24
        ownerReferences:
        - apiVersion: metal3.io/v1alpha1
          blockOwnerDeletion: true
          controller: true
          kind: BareMetalHost
          name: compute-1.example.com
          uid: 0baddbb7-bb34-4224-8427-3d01d91c9287
        resourceVersion: "280057626"
        uid: 65d0e89b-1cd8-4317-966d-2fbbbe033fe9
      spec:
        settings: {}
      status:
        conditions:
        - lastTransitionTime: "2024-09-11T10:29:43Z"
          message: ""
          observedGeneration: 1
          reason: Success
          status: "True" 1
          type: ChangeDetected
        - lastTransitionTime: "2024-09-11T10:29:43Z"
          message: Invalid BIOS setting
          observedGeneration: 1
          reason: ConfigurationError
          status: "False" 2
          type: Valid
        lastUpdated: "2024-09-11T10:29:43Z"
        schema:
          name: schema-40562318
          namespace: compute-1
        settings: 3
          AccessControlService: Enabled
          AcpiHpet: Enabled
          AcpiRootBridgePxm: Enabled
          # ...

    1
    表示主机固件设置的更改已被检测到
    2
    表示主机具有无效的固件设置
    3
    配置的主机固件设置的完整列表在 status.settings 字段中返回
  2. 可选:检查集群中的 HostFirmwareSettings (hfs)自定义资源的状态:

    $ oc get hfs -n <managed_cluster_namespace> <managed_cluster_name> -o jsonpath='{.status.conditions[?(@.type=="ChangeDetected")].status}'

    输出示例

    True

  3. 可选:检查集群主机中的无效固件设置。运行以下命令:

    $ oc get hfs -n <managed_cluster_namespace> <managed_cluster_name> -o jsonpath='{.status.conditions[?(@.type=="Valid")].status}'

    输出示例

    False

4.6.3. 使用 GitOps ZTP 将用户定义的固件部署到集群主机

您可以通过将 SiteConfig 自定义资源(CR)配置为包括要在集群主机置备过程中应用的硬件配置集,将用户定义的固件设置部署到集群主机上。在以下情况下,您可以将硬件配置集配置为应用到主机:

  • 所有主机站点范围
  • 只有满足特定条件的集群主机
  • 单个集群主机
重要

您可以将主机硬件配置文件配置为以层次结构的形式应用。集群级别设置会覆盖站点范围内的设置。节点级别配置集覆盖集群和站点范围内的设置。

先决条件

  • 已安装 OpenShift CLI(oc)。
  • 已安装 Red Hat Advanced Cluster Management (RHACM),并以具有 cluster-admin 权限的用户身份登录 hub 集群。
  • 您已置备了由 RHACM 管理的集群。
  • 您创建了 Git 存储库,用于管理自定义站点配置数据。该存储库必须可从 hub 集群访问,并定义为 Argo CD 应用程序的源仓库。

流程

  1. 创建包含您要应用的固件设置的主机固件配置集。例如,创建以下 YAML 文件:

    host-firmware.profile

    BootMode: Uefi
    LogicalProc: Enabled
    ProcVirtualization: Enabled

  2. 保存相对于 kustomization.yaml 文件的硬件配置集 YAML 文件,用来定义如何置备集群,例如:

    example-ztp/install
        └── site-install
              ├── siteconfig-example.yaml
              ├── kustomization.yaml
              └── host-firmware.profile
  3. 编辑 SiteConfig CR,使其包含您要在集群中应用的固件配置集。例如:

    apiVersion: ran.openshift.io/v1
    kind: SiteConfig
    metadata:
      name: "site-plan-cluster"
      namespace: "example-cluster-namespace"
    spec:
      baseDomain: "example.com"
      # ...
      biosConfigRef:
        filePath: "./host-firmware.profile" 1
    1
    将硬件配置集应用到所有集群主机站点
    注意

    在可能的情况下,每个集群使用一个 SiteConfig CR。

  4. 可选。要将硬件配置集应用到特定集群中的主机,请使用您要应用的硬件配置集更新 clusters.biosConfigRef.filePath。例如:

    clusters:
      - clusterName: "cluster-1"
        # ...
        biosConfigRef:
          filePath: "./host-firmware.profile" 1
    1
    适用于 cluster-1 集群中的所有主机
  5. 可选。要将硬件配置集应用到集群中的特定主机,请使用您要应用的硬件配置文件更新 clusters.nodes.biosConfigRef.filePath。例如:

    clusters:
      - clusterName: "cluster-1"
        # ...
        nodes:
          - hostName: "compute-1.example.com"
            # ...
            bootMode: "UEFI"
            biosConfigRef:
              filePath: "./host-firmware.profile" 1
    1
    将固件配置集应用到集群中的 compute-1.example.com 主机
  6. 在 Git 存储库中提交 SiteConfig CR 及关联的 kustomization.yaml 更改并推送更改。

    ArgoCD 管道检测到更改并开始受管集群部署。

    注意

    即使检测到无效的固件设置,集群部署也会进行。要使用 GitOps ZTP 应用更正,请使用更正的硬件配置集重新部署集群。

验证

  • 检查固件设置是否已应用到受管集群主机中。例如,运行以下命令:

    $ oc get hfs -n <managed_cluster_namespace> <managed_cluster_name> -o jsonpath='{.status.conditions[?(@.type=="Valid")].status}'

    输出示例

    True

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.