7.3. 클러스터상의 계층화를 사용하여 사용자 정의 계층 이미지 적용
on-cluster 빌드 프로세스를 사용하여 클러스터에 사용자 정의 계층 이미지를 적용하려면 사전 요구 사항에 설명된 대로 Containerfile, 머신 구성 풀 참조, 리포지토리 내보내기 및 가져오기 보안을 포함하는 MachineOSConfig
사용자 정의 리소스를 만듭니다.
오브젝트를 생성할 때 MCO(Machine Config Operator)는 MachineOSBuild
오브젝트 및 machine-os-builder
Pod를 생성합니다. 빌드 프로세스는 빌드가 완료된 후 정리되는 구성 맵과 같은 일시적인 오브젝트도 생성합니다.
빌드가 완료되면 MCO는 새 노드를 배포할 때 사용할 수 있도록 새 사용자 지정 계층 이미지를 리포지토리로 푸시합니다. MachineOSBuild
오브젝트 및 machine-os-builder
Pod에서 새 사용자 정의 계층 이미지에 대한 다이제스트된 이미지 가져오기 사양을 확인할 수 있습니다.
이러한 새 오브젝트 또는 machine-os-builder
Pod와 상호 작용할 필요가 없습니다. 그러나 필요한 경우 이러한 리소스를 모두 사용하여 문제를 해결할 수 있습니다.
사용자 정의 계층 이미지를 사용하려는 각 머신 구성 풀에 대해 별도의 MachineOSConfig
CR이 필요합니다.
클러스터상의 이미지 계층 지정은 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.
Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.
사전 요구 사항
-
기능 게이트를 사용하여 설정된
TechPreviewNoUpgrade
기능을 활성화했습니다. 자세한 내용은 "기능 게이트를 사용하여 기능 활성화"를 참조하십시오. -
MCO가 기본 운영 체제 이미지를 가져오는 데 필요한
openshift-machine-config-operator
네임스페이스에 풀 시크릿이 있습니다. - MCO가 새 사용자 지정 계층 이미지를 레지스트리로 내보내는 데 필요한 푸시 시크릿이 있습니다.
- 노드에서 새 사용자 지정 계층화된 이미지를 레지스트리에서 가져와야 하는 풀 시크릿이 있습니다. 이미지를 리포지토리로 내보내는 데 사용한 것과 다른 시크릿이어야 합니다.
- 컨테이너 파일을 구성하는 방법에 대해 잘 알고 있습니다. Containerfile을 생성하는 방법에 대한 지침은 이 문서의 범위를 벗어납니다.
- 선택 사항: 사용자 정의 계층 이미지를 적용하려는 노드에 대해 별도의 머신 구성 풀이 있습니다.
프로세스
machineOSconfig
오브젝트를 생성합니다.다음과 유사한 YAML 파일을 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 사용자 정의 계층 이미지를 배포하려는 노드와 연결된 머신 구성 풀의 이름을 지정합니다.
- 2
- 사용자 지정 계층 이미지를 구성할 Containerfile을 지정합니다.
- 3
- 사용할 이미지 빌더의 이름을 지정합니다.
PodImageBuilder
여야 합니다. - 4
- MCO가 레지스트리에서 기본 운영 체제 이미지를 가져오는 데 필요한 풀 시크릿의 이름을 지정합니다.
- 5
- 새로 빌드된 사용자 정의 계층 이미지를 내보낼 이미지 레지스트리를 지정합니다. 이는 클러스터가 액세스할 수 있는 모든 레지스트리일 수 있습니다. 이 예에서는 내부 OpenShift Container Platform 레지스트리를 사용합니다.
- 6
- MCO에서 새로 빌드된 사용자 지정 계층 이미지를 해당 레지스트리로 푸시해야 하는 내보내기 보안의 이름을 지정합니다.
- 7
- 노드에서 새로 빌드된 사용자 정의 계층 이미지를 가져와야 하는 이미지 레지스트리에 필요한 보안을 지정합니다. 이미지를 리포지토리에 내보내는 데 사용한 것과 다른 시크릿이어야 합니다.
MachineOSConfig
오브젝트를 생성합니다.oc create -f <file_name>.yaml
$ oc create -f <file_name>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
필요한 경우
MachineOSBuild
오브젝트가 생성되어READY
상태에 있는 경우 새 사용자 지정 계층 이미지를 사용하려는 노드의 노드 사양을 수정합니다.MachineOSBuild
오브젝트가READY
인지 확인합니다.SUCCEEDED
값이True
이면 빌드가 완료됩니다.oc get machineosbuild
$ oc get machineosbuild
Copy to Clipboard Copied! Toggle word wrap Toggle overflow MachineOSBuild
오브젝트가 준비되었음을 보여주는 출력 예NAME PREPARED BUILDING SUCCEEDED INTERRUPTED FAILED layered-rendered-layered-ad5a3cad36303c363cf458ab0524e7c0-builder False False True False False
NAME PREPARED BUILDING SUCCEEDED INTERRUPTED FAILED layered-rendered-layered-ad5a3cad36303c363cf458ab0524e7c0-builder False False True False False
Copy to Clipboard Copied! Toggle word wrap Toggle overflow MachineOSConfig
오브젝트에 지정한 머신 구성 풀의 레이블을 추가하여 사용자 정의 계층 이미지를 배포하려는 노드를 편집합니다.oc label node <node_name> 'node-role.kubernetes.io/<mcp_name>='
$ oc label node <node_name> 'node-role.kubernetes.io/<mcp_name>='
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음과 같습니다.
- node-role.kubernetes.io/<mcp_name>=
- 사용자 정의 계층 이미지를 배포할 노드를 식별하는 노드 선택기를 지정합니다.
변경 사항을 저장하면 MCO가 노드를 드레이닝, 차단 및 재부팅합니다. 재부팅 후 노드는 새 사용자 정의 계층 이미지를 사용합니다.
검증
다음 명령을 사용하여 새 포드가 실행 중인지 확인합니다.
oc get pods -n <machineosbuilds_namespace>
$ oc get pods -n <machineosbuilds_namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NAME READY STATUS RESTARTS AGE build-rendered-layered-ad5a3cad36303c363cf458ab0524e7c0 2/2 Running 0 2m40s # ... machine-os-builder-6fb66cfb99-zcpvq 1/1 Running 0 2m42s
NAME READY STATUS RESTARTS AGE build-rendered-layered-ad5a3cad36303c363cf458ab0524e7c0 2/2 Running 0 2m40s
1 # ... machine-os-builder-6fb66cfb99-zcpvq 1/1 Running 0 2m42s
2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow MachineOSConfig
오브젝트에 새 사용자 정의 계층 이미지에 대한 참조가 포함되어 있는지 확인합니다.oc describe MachineOSConfig <object_name>
$ oc describe MachineOSConfig <object_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 새 사용자 지정 계층 이미지에 대한 다이제스트된 이미지 가져오기 사양입니다.
MachineOSBuild
오브젝트에 새 사용자 지정 계층 이미지에 대한 참조가 포함되어 있는지 확인합니다.oc describe machineosbuild <object_name>
$ oc describe machineosbuild <object_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 새 사용자 지정 계층 이미지에 대한 다이제스트된 이미지 가져오기 사양입니다.
적절한 노드에서 새 사용자 지정 계층 이미지를 사용하고 있는지 확인합니다.
컨트롤 플레인 노드의 root로 디버그 세션을 시작합니다.
oc debug node/<node_name>
$ oc debug node/<node_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 디버그 쉘 내에서
/host
를 root 디렉터리로 설정합니다.chroot /host
sh-4.4# chroot /host
Copy to Clipboard Copied! Toggle word wrap Toggle overflow rpm-ostree status
명령을 실행하여 사용자 정의 계층화된 이미지가 사용 중인지 확인합니다.rpm-ostree status
sh-5.1# rpm-ostree status
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
...
# ... Deployments: * ostree-unverified-registry:quay.io/openshift-release-dev/os-image@sha256:f636fa5b504e92e6faa22ecd71a60b089dab72200f3d130c68dfec07148d11cd
1 Digest: sha256:bcea2546295b2a55e0a9bf6dd4789433a9867e378661093b6fdee0031ed1e8a4 Version: 416.94.202405141654-0 (2024-05-14T16:58:43Z)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 새 사용자 지정 계층 이미지에 대한 다이제스트된 이미지 가져오기 사양입니다.
추가 리소스