17장. RHCOS 이미지 계층화
RHCOS(Red Hat Enterprise Linux CoreOS) 이미지 계층 지정을 사용하면 기본 이미지에 추가 이미지를 계층화하여 기본 RHCOS 이미지의 기능을 쉽게 확장할 수 있습니다. 이 계층화는 기본 RHCOS 이미지를 수정하지 않습니다. 대신 모든 RHCOS 기능을 포함하는 사용자 정의 계층 이미지를 생성하고 클러스터의 특정 노드에 기능을 추가합니다.
Containerfile을 사용하여 사용자 정의 계층 이미지를 생성하고 MachineConfig 오브젝트를 사용하여 노드에 적용합니다. Machine Config Operator는 연결된 머신 구성의 osImageURL 값에 의해 지정된 대로 기본 RHCOS 이미지를 재정의하고 새 이미지를 부팅합니다. 머신 구성을 삭제하여 사용자 정의 계층 이미지를 제거할 수 있습니다. MCO는 노드를 기본 RHCOS 이미지로 다시 재부팅합니다.
RHCOS 이미지 계층 지정을 사용하면 RPM을 기본 이미지에 설치할 수 있으며 사용자 정의 콘텐츠는 RHCOS와 함께 부팅됩니다. MCO(Machine Config Operator)는 이러한 사용자 정의 계층 이미지를 롤아웃하고 기본 RHCOS 이미지에 대해 수행하는 방식과 동일하게 사용자 지정 컨테이너를 모니터링할 수 있습니다. RHCOS 이미지 계층화를 통해 RHCOS 노드를 관리하는 방법에 있어 유연성이 향상됩니다.
실시간 커널 및 확장 RPM을 사용자 지정 계층 콘텐츠로 설치하는 것은 권장되지 않습니다. 이러한 RPM은 머신 구성을 사용하여 설치된 RPM과 충돌할 수 있기 때문입니다. 충돌이 발생하면 머신 구성 RPM 설치를 시도할 때 MCO는 성능이 저하된 상태가 됩니다. 계속하기 전에 머신 구성에서 충돌하는 확장을 제거해야 합니다.
사용자 정의 계층 이미지를 클러스터에 적용하는 즉시 사용자 정의 계층 이미지 및 해당 노드의 소유권을 효과적으로 소유할 수 있습니다. Red Hat은 표준 노드에서 기본 RHCOS 이미지를 유지 관리 및 업데이트해야 하지만 사용자 정의 계층 이미지를 사용하는 노드에서 이미지를 유지 관리하고 업데이트해야 합니다. 사용자 정의 계층 이미지로 적용한 패키지 및 패키지에 발생할 수 있는 문제에 대한 책임이 있다고 가정합니다.
사용자 정의 계층 이미지를 적용하려면 OpenShift Container Platform 이미지 및 적용하려는 RPM을 참조하는 Containerfile을 생성합니다. 그런 다음 생성된 사용자 정의 계층 이미지를 이미지 레지스트리로 내보냅니다. 프로덕션 환경 외 OpenShift Container Platform 클러스터에서 새 이미지를 가리키는 대상 노드 풀에 대한 MachineConfig 오브젝트를 생성합니다.
나머지 클러스터에 설치된 동일한 기본 RHCOS 이미지를 사용합니다. oc adm release info --image-for rhel-coreos 명령을 사용하여 클러스터에 사용되는 기본 이미지를 가져옵니다.
RHCOS 이미지 계층 지정을 사용하면 다음 유형의 이미지를 사용하여 사용자 정의 계층 이미지를 생성할 수 있습니다.
OpenShift Container Platform Hotfixes. CEE(Customer Experience and Engagement)를 사용하여 RHCOS 이미지 위에 Hotfix 패키지를 확보하고 적용할 수 있습니다. 경우에 따라 공식 OpenShift Container Platform 릴리스에 포함되기 전에 버그 수정 또는 개선 사항을 원할 수 있습니다. RHCOS 이미지 계층 지정을 사용하면 공식적으로 릴리스되기 전에 핫픽스를 쉽게 추가하고 기본 RHCOS 이미지에 수정 사항이 통합되면 Hotfix를 제거할 수 있습니다.
중요일부 핫픽스에는 Red Hat 지원 예외가 필요하며 OpenShift Container Platform 지원 범위 또는 라이프 사이클 정책의 일반 범위를 벗어납니다.
핫픽스를 원하는 경우 Red Hat Hotfix 정책을 기반으로 제공됩니다. 기본 이미지 위에 적용하고 프로덕션 환경 이외의 환경에서 새 사용자 지정 계층 이미지가 있는지 테스트합니다. 프로덕션에서 사용자 정의 계층 이미지를 안전하게 사용할 수 있다는 것이 만족되면 자체 일정에 따라 특정 노드 풀로 롤아웃할 수 있습니다. 어떠한 이유로든 사용자 정의 계층 이미지를 쉽게 롤백하고 기본 RHCOS를 사용하여 로 돌아갈 수 있습니다.
Hotfix를 적용하는 Containerfile의 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow RHEL 패키지. Red Hat 고객 포털(예: chrony, firewalld, iputils)에서 RHEL(Red Hat Enterprise Linux) 패키지를 다운로드할 수 있습니다.
firewalld 유틸리티를 적용하는 Containerfile의 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow libreswan 유틸리티를 적용하는 Containerfile의 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow libreswan에는 추가 RHEL 패키지가 필요하므로 권한이 있는 RHEL 호스트에 이미지를 빌드해야 합니다.
타사 패키지. 다음 유형의 패키지와 같은 타사 조직에서 RPM을 다운로드하고 설치할 수 있습니다.
- 성능을 개선하거나 기능을 추가하기 위해 엣지 드라이버 및 커널 개선 사항 유지.
- 가능한 실제 중단을 조사하기 위한 포렌식 클라이언트 툴입니다.
- 보안 에이전트.
- 전체 클러스터에 대한 일관된 보기를 제공하는 인벤토리 에이전트입니다.
- SSH 키 관리 패키지.
EPEL의 타사 패키지를 적용하는 Containerfile의 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow RHEL 종속 항목이 있는 타사 패키지를 적용하는 Containerfile의 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 Containerfile은 Linux Fish 프로그램을 설치합니다. 어류에는 추가 RHEL 패키지가 필요하므로 권한이 있는 RHEL 호스트에 이미지를 빌드해야 합니다.
머신 구성을 생성한 후 MCO(Machine Config Operator)에서 다음 단계를 수행합니다.
- 지정된 풀 또는 풀에 대해 새 머신 구성을 렌더링합니다.
- 풀 또는 풀의 노드에서 차단 및 드레이닝 작업을 수행합니다.
- 나머지 머신 구성 매개변수를 노드에 씁니다.
- 사용자 정의 계층 이미지를 노드에 적용합니다.
- 새 이미지를 사용하여 노드를 재부팅합니다.
클러스터에 롤아웃하기 전에 프로덕션 환경 외부의 이미지를 테스트하는 것이 좋습니다.
17.1. RHCOS 사용자 정의 계층 이미지 적용 링크 복사링크가 클립보드에 복사되었습니다!
특정 머신 구성 풀의 노드에서 RHCOS(Red Hat Enterprise Linux CoreOS) 이미지 계층을 쉽게 구성할 수 있습니다. MCO(Machine Config Operator)는 새 사용자 정의 계층 이미지로 노드를 재부팅하여 기본 RHCOS(Red Hat Enterprise Linux CoreOS) 이미지를 덮어씁니다.
클러스터에 사용자 정의 계층 이미지를 적용하려면 클러스터가 액세스할 수 있는 리포지토리에 사용자 정의 계층 이미지가 있어야 합니다. 그런 다음 사용자 지정 계층화된 이미지를 가리키는 MachineConfig 오브젝트를 만듭니다. 구성할 각 머신 구성 풀에 대해 별도의 MachineConfig 오브젝트가 필요합니다.
사용자 정의 계층 이미지를 구성하면 OpenShift Container Platform에서 더 이상 사용자 정의 계층 이미지를 사용하는 노드를 자동으로 업데이트하지 않습니다. 필요에 따라 노드를 수동으로 업데이트해야 합니다. 사용자 정의 계층을 롤백하면 OpenShift Container Platform에서 노드를 자동으로 업데이트합니다. 사용자 지정 계층화된 이미지를 사용하는 노드 업데이트에 대한 중요한 정보는 다음 추가 리소스 섹션을 참조하십시오.
사전 요구 사항
태그가 아닌 OpenShift Container Platform 이미지 다이제스트를 기반으로 하는 사용자 정의 계층 이미지를 생성해야 합니다.
참고나머지 클러스터에 설치된 동일한 기본 RHCOS 이미지를 사용해야 합니다.
oc adm release info --image-for rhel-coreos명령을 사용하여 클러스터에서 사용 중인 기본 이미지를 가져옵니다.예를 들어 다음 Containerfile은 OpenShift Container Platform 4.15 이미지에서 사용자 정의 계층 이미지를 생성하고 CentOS 9 Stream의 커널 패키지를 덮어씁니다.
사용자 정의 계층 이미지의 컨테이너 파일 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고Containerfile을 생성하는 방법에 대한 지침은 이 문서의 범위를 벗어납니다.
-
사용자 정의 계층 이미지를 빌드하는 프로세스는 클러스터 외부에서 수행되므로 Podman 또는 Buildah와 함께
--authfile /path/to/pull-secret옵션을 사용해야 합니다. 또는 이러한 툴에서 풀 시크릿을 자동으로 읽을 수 있도록 기본 파일 위치(~/.docker/config.json,$XDG_RUNTIME_DIR/containers/auth.json,~/.docker/config.json또는~/.dockercfg) 중 하나에 추가할 수 있습니다. 자세한 내용은containers-auth.json도움말 페이지를 참조하십시오. - 사용자 정의 계층 이미지를 클러스터가 액세스할 수 있는 리포지토리로 푸시해야 합니다.
프로세스
머신 구성 파일을 생성합니다.
다음과 유사한 YAML 파일을 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow MachineConfig오브젝트를 생성합니다.oc create -f <file_name>.yaml
$ oc create -f <file_name>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 중요클러스터에 롤아웃하기 전에 프로덕션 환경 외부의 이미지를 테스트하는 것이 좋습니다.
검증
다음 점검 중 하나를 수행하여 사용자 정의 계층 이미지가 적용되었는지 확인할 수 있습니다.
작업자 머신 구성 풀이 새 머신 구성을 사용하여 롤아웃되었는지 확인합니다.
새 머신 구성이 생성되었는지 확인합니다.
oc get mc
$ oc get mcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 샘플 출력
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 새 머신 구성의
osImageURL값이 예상 이미지를 가리키는지 확인합니다.oc describe mc rendered-master-4e8be63aef68b843b546827b6ebe0913
$ oc describe mc rendered-master-4e8be63aef68b843b546827b6ebe0913Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 연결된 머신 구성 풀이 새 머신 구성을 사용하여 업데이트되었는지 확인합니다.
oc get mcp
$ oc get mcpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 샘플 출력
NAME CONFIG UPDATED UPDATING DEGRADED MACHINECOUNT READYMACHINECOUNT UPDATEDMACHINECOUNT DEGRADEDMACHINECOUNT AGE master rendered-master-6faecdfa1b25c114a58cf178fbaa45e2 True False False 3 3 3 0 39m worker rendered-worker-6b000dbc31aaee63c6a2d56d04cd4c1b False True False 3 0 0 0 39m
NAME CONFIG UPDATED UPDATING DEGRADED MACHINECOUNT READYMACHINECOUNT UPDATEDMACHINECOUNT DEGRADEDMACHINECOUNT AGE master rendered-master-6faecdfa1b25c114a58cf178fbaa45e2 True False False 3 3 3 0 39m worker rendered-worker-6b000dbc31aaee63c6a2d56d04cd4c1b False True False 3 0 0 0 39m1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
UPDATING필드가True이면 머신 구성 풀이 새 머신 구성으로 업데이트됩니다. 필드가False가 되면 작업자 머신 구성 풀이 새 머신 구성에 롤아웃됩니다.
노드를 확인하여 노드의 스케줄링이 비활성화되어 있는지 확인합니다. 변경 사항이 적용 중임을 나타냅니다.
oc get nodes
$ oc get nodesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
노드가
Ready상태가 되면 노드가 사용자 정의 계층화된 이미지를 사용하고 있는지 확인합니다.노드에 대한
oc 디버그세션을 엽니다. 예를 들면 다음과 같습니다.oc debug node/ip-10-0-155-125.us-west-1.compute.internal
$ oc debug node/ip-10-0-155-125.us-west-1.compute.internalCopy to Clipboard Copied! Toggle word wrap Toggle overflow 디버그 쉘 내에서
/host를 root 디렉터리로 설정합니다.chroot /host
sh-4.4# chroot /hostCopy to Clipboard Copied! Toggle word wrap Toggle overflow rpm-ostree status명령을 실행하여 사용자 정의 계층화된 이미지가 사용 중인지 확인합니다.sudo rpm-ostree status
sh-4.4# sudo rpm-ostree statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
State: idle Deployments: * ostree-unverified-registry:quay.io/my-registry/... Digest: sha256:...State: idle Deployments: * ostree-unverified-registry:quay.io/my-registry/... Digest: sha256:...Copy to Clipboard Copied! Toggle word wrap Toggle overflow
추가 리소스