4.6. GitOps ZTP によるホストファームウェア設定の管理
高いパフォーマンスと最適な効率を確保するには、ホストに正しいファームウェア設定が必要です。GitOps ZTP を使用すると、マネージドクラスターのカスタムのホストファームウェア設定をデプロイできます。
ラボ内で詳細なハードウェアプロファイルを使用してホストをチューニングし、要件に合わせてホストを最適化してください。満足のいくホストのチューニングが完了したら、ホストプロファイルを抽出し、GitOps ZTP リポジトリーに保存します。その後、ホストプロファイルを使用して、GitOps ZTP でデプロイするマネージドクラスターホストのファームウェア設定を指定します。
必要なハードウェアプロファイルは、マネージドクラスターのデプロイに使用する SiteConfig
カスタムリソース (CR) で指定します。GitOps ZTP パイプラインによって、ハブクラスターに適用される必要な HostFirmwareSettings
(HFS
) および BareMetalHost
(BMH
) CR が生成されます。
ホストのファームウェアプロファイルを管理する際には、次のベストプラクティスを使用してください。
- ハードウェアベンダーと協力して重要なファームウェア設定を特定する
- ハードウェアベンダーと協力して、最適なパフォーマンスと、デプロイされるホストプラットフォームとの互換性を確保するのに必要な、重要なホストファームウェア設定を特定してドキュメント化します。
- 類似するハードウェアプラットフォーム間で共通のファームウェア設定を使用する
- 可能であれば、類似するハードウェアプラットフォーム間で標準化されたホストファームウェア設定を使用して、デプロイ時の複雑さと潜在的なエラーを軽減します。
- ラボ環境でファームウェア設定をテストする
- 実稼働環境にデプロイする前に、制御されたラボ環境でホストファームウェア設定をテストし、ハードウェア、ファームウェア、ソフトウェアと設定の間に互換性があることを確認します。
- ソースコントロールでファームウェアプロファイルを管理する
- 変更を追跡し、一貫性を確保し、ベンダーとの協働を容易にするために、Git リポジトリーでホストのファームウェアプロファイルを管理します。
4.6.1. マネージドクラスターのホストファームウェアスキーマの取得
マネージドクラスターのホストファームウェアスキーマを検出できます。ベアメタルホストのホストファームウェアスキーマには、Ironic API が返す情報が入力されます。Ironic API は、ファームウェア設定タイプ、許容値、範囲、フラグなど、ホストのファームウェアインターフェイスに関する情報を返します。
前提条件
-
OpenShift CLI (
oc
) がインストールされている。 -
Red Hat Advanced Cluster Management (RHACM) をインストールを完了し、
cluster-admin
権限を持つユーザーとしてハブクラスターにログインしている。 - 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
権限を持つユーザーとしてハブクラスターにログインしている。 - 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
権限を持つユーザーとしてハブクラスターにログインしている。 - RHACM によって管理されるクラスターをプロビジョニングした。
- カスタムサイトの設定データを管理する Git リポジトリーを作成している。リポジトリーはハブクラスターからアクセス可能で、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
- サイト全体のすべてのクラスターホストにハードウェアプロファイルを適用します。
注記可能な場合は、クラスターごとに 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
ホストに適用します。
SiteConfig
CR と関連するkustomization.yaml
の変更を Git リポジトリーにコミットし、変更をプッシュします。ArgoCD パイプラインが変更を検出し、マネージドクラスターのデプロイを開始します。
注記無効なファームウェア設定が検出された場合でも、クラスターのデプロイは続行されます。GitOps ZTP を使用して修正を適用するには、修正したハードウェアプロファイルを使用してクラスターを再デプロイしてください。
検証
マネージドクラスターのホストにファームウェア設定が適用されていることを確認します。たとえば、以下のコマンドを実行します。
$ oc get hfs -n <managed_cluster_namespace> <managed_cluster_name> -o jsonpath='{.status.conditions[?(@.type=="Valid")].status}'
出力例
True