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 管理的集群。
流程
检索受管集群的主机固件设置。运行以下命令:
$ 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 # ...
可选:检查集群中的
HostFirmwareSettings
(hfs
)自定义资源的状态:$ oc get hfs -n <managed_cluster_namespace> <managed_cluster_name> -o jsonpath='{.status.conditions[?(@.type=="ChangeDetected")].status}'
输出示例
True
可选:检查集群主机中的无效固件设置。运行以下命令:
$ 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 应用程序的源仓库。
流程
创建包含您要应用的固件设置的主机固件配置集。例如,创建以下 YAML 文件:
host-firmware.profile
BootMode: Uefi LogicalProc: Enabled ProcVirtualization: Enabled
保存相对于
kustomization.yaml
文件的硬件配置集 YAML 文件,用来定义如何置备集群,例如:example-ztp/install └── site-install ├── siteconfig-example.yaml ├── kustomization.yaml └── host-firmware.profile
编辑
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。可选。要将硬件配置集应用到特定集群中的主机,请使用您要应用的硬件配置集更新
clusters.biosConfigRef.filePath
。例如:clusters: - clusterName: "cluster-1" # ... biosConfigRef: filePath: "./host-firmware.profile" 1
- 1
- 适用于
cluster-1
集群中的所有主机
可选。要将硬件配置集应用到集群中的特定主机,请使用您要应用的硬件配置文件更新
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
主机
在 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