4.6. GitOps ZTP를 사용하여 호스트 펌웨어 설정 관리
호스트에는 고성능과 최적의 효율성을 보장하기 위해 올바른 펌웨어 구성이 필요합니다. GitOps ZTP를 사용하여 관리 클러스터의 사용자 정의 호스트 펌웨어 구성을 배포할 수 있습니다.
랩의 특정 하드웨어 프로필로 호스트를 튜닝하고 요구 사항에 맞게 최적화되었는지 확인합니다. 만족에 대한 호스트 튜닝을 완료한 경우 호스트 프로필을 추출하여 GitOps ZTP 리포지토리에 저장합니다. 그런 다음 호스트 프로필을 사용하여 GitOps ZTP로 배포하는 관리 클러스터 호스트에서 펌웨어 설정을 구성합니다.
관리 클러스터를 배포하는 데 사용하는 site Config
CR(사용자 정의 리소스)에서 필요한 하드웨어 프로필을 지정합니다. GitOps ZTP 파이프라인은 허브 클러스터에 적용되는 필수 HostFirmwareSettings
(HFS
) 및 BareMetalHost
(BMH
) CR을 생성합니다.
다음 모범 사례를 사용하여 호스트 펌웨어 프로필을 관리합니다.
- 하드웨어 벤더로 중요한 펌웨어 설정 확인
- 하드웨어 벤더와 협력하여 배포된 호스트 플랫폼과 최적의 성능 및 호환성에 필요한 중요한 호스트 펌웨어 설정을 식별하고 문서화하십시오.
- 유사한 하드웨어 플랫폼에서 공통 펌웨어 구성 사용
- 가능한 경우 유사한 하드웨어 플랫폼에서 표준화된 호스트 펌웨어 구성을 사용하여 배포 중에 복잡성과 잠재적 오류를 줄입니다.
- 랩 환경에서 펌웨어 구성 테스트
- 설정이 하드웨어, 펌웨어 및 소프트웨어와 호환되는지 확인하기 위해 프로덕션에 배포하기 전에 제어된 랩 환경에서 호스트 펌웨어 구성을 테스트합니다.
- 소스 제어에서 펌웨어 프로필 관리
- Git 리포지토리에서 호스트 펌웨어 프로필을 관리하여 변경 사항을 추적하고 일관성을 보장하며 벤더와의 협업이 용이해집니다.
추가 리소스
4.6.1. 관리 클러스터의 호스트 펌웨어 스키마 검색
관리 클러스터의 호스트 펌웨어 스키마를 검색할 수 있습니다. 베어 메탈 호스트의 호스트 펌웨어 스키마는 Ironic API에서 반환하는 정보로 채워집니다. API는 펌웨어 설정 유형, 허용 가능한 값, 범위 및 플래그를 포함하여 호스트 펌웨어 인터페이스에 대한 정보를 반환합니다.
사전 요구 사항
-
OpenShift CLI(
oc
)가 설치되어 있습니다. -
RHACM(Red Hat Advanced Cluster Management)을 설치하고
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
)가 설치되어 있습니다. -
RHACM(Red Hat Advanced Cluster Management)을 설치하고
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 # ...
선택 사항: 클러스터에서 Hfs(
HostFirmwareSettings
)사용자
정의 리소스의 상태를 확인합니다.$ 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
)가 설치되어 있습니다. -
RHACM(Red Hat Advanced Cluster Management)을 설치하고
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을 사용합니다.선택 사항: 특정 클러스터의 호스트에 하드웨어 프로필을 적용하려면 적용하려는 하드웨어 프로필을 사용하여 cluster
.biosConfigRef.filePath
를 업데이트합니다. 예를 들면 다음과 같습니다.clusters: - clusterName: "cluster-1" # ... biosConfigRef: filePath: "./host-firmware.profile" 1
- 1
cluster-1
클러스터의 모든 호스트에 적용
선택 사항: 클러스터의 특정 호스트에 하드웨어 프로필을 적용하려면 적용하려는 하드웨어 프로필을 사용하여 cluster
.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