15장. 단일 노드 OpenShift 클러스터를 위한 이미지 기반 업그레이드


15.1. 단일 노드 OpenShift 클러스터의 이미지 기반 업그레이드 이해

OpenShift Container Platform 4.14.13부터 Lifecycle Agent는 단일 노드 OpenShift 클러스터의 플랫폼 버전을 업그레이드하는 대체 방법을 제공합니다. 이미지 기반 업그레이드는 표준 업그레이드 방식보다 빠르며 OpenShift Container Platform <4.y>에서 <4.y+2>로, <4.yz>에서 <4.y.z+n>으로 직접 업그레이드할 수 있습니다.

이 업그레이드 방법은 대상 단일 노드 OpenShift 클러스터에 새로운 ostree stateroot로 설치된 전용 시드 클러스터에서 생성된 OCI 이미지를 활용합니다. 시드 클러스터는 대상 OpenShift Container Platform 버전, Day 2 Operator 및 모든 대상 클러스터에 공통적인 구성을 사용하여 배포된 단일 노드 OpenShift 클러스터입니다.

시드 클러스터에서 생성된 시드 이미지를 사용하면 시드 클러스터와 동일한 하드웨어 조합, Day 2 Operator 및 클러스터 구성을 갖춘 모든 단일 노드 OpenShift 클러스터에서 플랫폼 버전을 업그레이드할 수 있습니다.

중요

이미지 기반 업그레이드는 클러스터가 실행되는 하드웨어 플랫폼에 맞는 사용자 정의 이미지를 사용합니다. 각 하드웨어 플랫폼에는 별도의 시드 이미지가 필요합니다.

Lifecycle Agent는 참여 클러스터에서 두 개의 사용자 정의 리소스(CR)를 사용하여 업그레이드를 조정합니다.

  • 시드 클러스터에서 SeedGenerator CR은 시드 이미지 생성을 허용합니다. 이 CR은 시드 이미지를 푸시할 저장소를 지정합니다.
  • 대상 클러스터에서 ImageBasedUpgrade CR은 대상 클러스터 업그레이드를 위한 시드 이미지와 워크로드에 대한 백업 구성을 지정합니다.

SeedGenerator CR의 예

apiVersion: lca.openshift.io/v1
kind: SeedGenerator
metadata:
  name: seedimage
spec:
  seedImage: <seed_image>
Copy to Clipboard Toggle word wrap

ImageBasedUpgrade CR 예시

apiVersion: lca.openshift.io/v1
kind: ImageBasedUpgrade
metadata:
  name: upgrade
spec:
  stage: Idle 
1

  seedImageRef: 
2

    version: <target_version>
    image: <seed_container_image>
    pullSecretRef:
      name: <seed_pull_secret>
  autoRollbackOnFailure: {}
#    initMonitorTimeoutSeconds: 1800 
3

  extraManifests: 
4

  - name: example-extra-manifests
    namespace: openshift-lifecycle-agent
  oadpContent: 
5

  - name: oadp-cm-example
    namespace: openshift-adp
Copy to Clipboard Toggle word wrap

1
ImageBasedUpgrade CR의 단계. 값은 Idle , Prep , Upgrade 또는 Rollback이 될 수 있습니다.
2
대상 플랫폼 버전, 사용할 시드 이미지, 이미지에 액세스하는 데 필요한 비밀번호입니다.
3
선택 사항: 첫 번째 재부팅 후 업그레이드가 해당 시간 내에 완료되지 않을 경우 롤백할 시간(초)입니다. 정의되지 않았거나 0 으로 설정된 경우 기본값인 1800 초(30분)가 사용됩니다.
4
선택 사항: 업그레이드 후에도 보관할 사용자 정의 카탈로그 소스가 포함된 ConfigMap 리소스 목록과 시드 이미지에 포함되지 않은 대상 클러스터에 적용할 추가 매니페스트입니다.
5
OADP 백업복원 CR이 포함된 ConfigMap 리소스 목록입니다.

15.1.1. 이미지 기반 업그레이드 단계

시드 클러스터에서 시드 이미지를 생성한 후 ImageBasedUpgrade CR에서 spec.stage 필드를 다음 값 중 하나로 설정하여 대상 클러스터의 단계를 이동할 수 있습니다.

  • 게으른
  • 예습
  • 업그레이드
  • 롤백 (선택 사항)

그림 15.1. 이미지 기반 업그레이드 단계

15.1.1.1. 유휴 단계

Lifecycle Agent는 Operator가 처음 배포될 때 ImageBasedUpgrade CR을 생성하여 상태를 Idle 로 설정합니다. 이는 기본 단계입니다. 지속적인 업그레이드가 없으며 클러스터는 준비 단계로 이동할 준비가 되었습니다.

그림 15.2. Idle 단계에서의 전환

또한 다음 단계 중 하나를 수행하려면 유휴 단계로 이동합니다.

  • 성공적인 업그레이드를 마무리하세요
  • 롤백을 마무리하다
  • 업그레이드 단계의 피벗 전 단계까지 진행 중인 업그레이드를 취소합니다.

유휴 단계로 이동하면 수명 주기 에이전트가 리소스를 정리하여 클러스터가 다시 업그레이드될 준비가 됩니다.

그림 15.3. 유휴 단계로의 전환

중요

업그레이드를 취소할 때 RHACM을 사용하는 경우 대상 관리 클러스터에서 import.open-cluster-management.io/disable-auto-import 주석을 제거하여 클러스터의 자동 가져오기를 다시 활성화해야 합니다.

15.1.1.2. 준비 단계

참고

예정된 유지 관리 기간 전에 이 단계를 완료할 수 있습니다.

준비 단계의 경우 ImageBasedUpgrade CR에서 다음 업그레이드 세부 정보를 지정합니다.

  • 사용할 시드 이미지
  • 백업할 리소스
  • 업그레이드 후 적용할 추가 매니페스트 및 유지할 사용자 정의 카탈로그 소스(있는 경우)

그런 다음, 귀하가 지정한 내용에 따라 Lifecycle Agent는 현재 실행 중인 버전에 영향을 주지 않고 업그레이드를 준비합니다. 이 단계에서 라이프사이클 에이전트는 특정 조건을 충족하는지 확인하여 대상 클러스터가 업그레이드 단계로 진행할 준비가 되었는지 확인합니다. 운영자는 시드 이미지에 지정된 추가 컨테이너 이미지와 함께 시드 이미지를 대상 클러스터로 가져옵니다. Lifecycle Agent는 컨테이너 스토리지 디스크에 충분한 공간이 있는지 확인하고, 필요한 경우 Operator는 디스크 사용량이 지정된 임계값 아래로 떨어질 때까지 고정 해제된 이미지를 삭제합니다. 컨테이너 스토리지 디스크 정리를 구성하거나 비활성화하는 방법에 대한 자세한 내용은 "컨테이너 스토리지 디스크의 자동 이미지 정리 구성"을 참조하세요.

또한 OADP 운영자의 백업복원 CR을 사용하여 백업 리소스를 준비합니다. 이러한 CR은 업그레이드 단계에서 클러스터를 재구성하고, RHACM에 클러스터를 등록하고, 애플리케이션 아티팩트를 복원하는 데 사용됩니다.

OADP Operator 외에도 Lifecycle Agent는 ostree 버전 관리 시스템을 사용하여 백업을 생성하는데, 이를 통해 업그레이드와 롤백 후에 클러스터를 완전히 재구성할 수 있습니다.

준비 단계가 완료되면 유휴 단계로 이동하여 업그레이드 프로세스를 취소할 수 있고, ImageBasedUpgrade CR에서 업그레이드 단계로 이동하여 업그레이드를 시작할 수 있습니다. 업그레이드를 취소하면 운영자가 정리 작업을 수행합니다.

그림 15.4. 준비 단계에서의 전환

15.1.1.3. 업그레이드 단계

업그레이드 단계는 두 단계로 구성됩니다.

피벗 전
새로운 stateroot로 전환하기 직전에 Lifecycle Agent는 필요한 클러스터별 아티팩트를 수집하여 새로운 stateroot에 저장합니다. 준비 단계에서 지정한 클러스터 리소스의 백업은 호환 가능한 개체 스토리지 솔루션에 생성됩니다. Lifecycle Agent는 ImageBasedUpgrade CR의 extraManifests 필드에 지정된 CR이나 대상 클러스터에 바인딩된 ZTP 정책에 설명된 CR을 내보냅니다. 피벗 전 단계가 완료되면 Lifecycle Agent는 새로운 stateroot 배포를 기본 부팅 항목으로 설정하고 노드를 재부팅합니다.
post-pivot
새로운 stateroot에서 부팅한 후 Lifecycle Agent는 시드 이미지의 클러스터 암호화도 다시 생성합니다. 이를 통해 동일한 시드 이미지로 업그레이드된 각 단일 노드 OpenShift 클러스터에 고유하고 유효한 암호화 개체가 있는지 확인할 수 있습니다. 그런 다음 운영자는 피벗 이전 단계에서 수집된 클러스터별 아티팩트를 적용하여 클러스터를 재구성합니다. 운영자는 저장된 모든 CR을 적용하고 백업을 복원합니다.

업그레이드가 완료되고 변경 사항에 만족하면 유휴 단계로 이동하여 업그레이드를 마무리할 수 있습니다.

중요

업그레이드를 완료하면 원래 릴리스로 롤백할 수 없습니다.

그림 15.5. 업그레이드 단계에서 전환

업그레이드를 취소하려면 업그레이드 단계의 피벗 이전 단계까지 취소할 수 있습니다. 업그레이드 후 문제가 발생하면 롤백 단계로 이동하여 수동 롤백을 수행할 수 있습니다.

15.1.1.4. 롤백 단계

롤백 단계는 실패 시 수동 또는 자동으로 시작될 수 있습니다. 롤백 단계에서 라이프사이클 에이전트는 원래 ostree stateroot 배포를 기본값으로 설정합니다. 그런 다음 노드는 이전 릴리스의 OpenShift Container Platform과 애플리케이션 구성으로 재부팅됩니다.

주의

롤백 후 유휴 단계로 전환하면 라이프사이클 에이전트는 실패한 업그레이드 문제를 해결하는 데 사용할 수 있는 리소스를 정리합니다.

Lifecycle Agent는 업그레이드가 지정된 시간 제한 내에 완료되지 않으면 자동 롤백을 시작합니다. 자동 롤백에 대한 자세한 내용은 "Lifecycle Agent를 사용하여 롤백 단계로 이동" 또는 "Lifecycle Agent와 GitOps ZTP를 사용하여 롤백 단계로 이동" 섹션을 참조하세요.

그림 15.6. 롤백 단계에서 전환

15.1.2. 이미지 기반 업그레이드에 대한 지침

성공적인 이미지 기반 업그레이드를 위해서는 배포가 특정 요구 사항을 충족해야 합니다.

이미지 기반 업그레이드를 수행할 수 있는 다양한 배포 방법이 있습니다.

GitOps ZTP
GitOps Zero Touch Provisioning(ZTP)을 사용하여 클러스터를 배포하고 구성합니다.
Non-GitOps
클러스터를 수동으로 배포하고 구성합니다.

연결이 끊긴 환경에서 이미지 기반 업그레이드를 수행할 수 있습니다. 연결이 끊긴 환경에서 이미지를 미러링하는 방법에 대한 자세한 내용은 "연결이 끊긴 설치 환경에서 이미지 미러링"을 참조하세요.

15.1.2.1. 구성 요소의 최소 소프트웨어 버전

배포 방법에 따라 이미지 기반 업그레이드에는 다음과 같은 최소 소프트웨어 버전이 필요합니다.

Expand
표 15.1. 구성 요소의 최소 소프트웨어 버전
Component소프트웨어 버전필수 항목

라이프사이클 에이전트

4.16

제공됨

OADP 운영자

1.4.1

제공됨

관리형 클러스터 버전

4.14.13

제공됨

hub 클러스터 버전

4.16

없음

RHACM

2.10.2

없음

GitOps ZTP 플러그인

4.16

GitOps ZTP 배포 방법에만 해당

Red Hat OpenShift GitOps

1.12

GitOps ZTP 배포 방법에만 해당

토폴로지 인식 라이프사이클 관리자(TALM)

4.16

GitOps ZTP 배포 방법에만 해당

로컬 스토리지 운영자 [1]

4.14

제공됨

논리 볼륨 관리자(LVM) 스토리지 [1]

4.14.2

제공됨

  1. 영구 저장소는 LVM 저장소 또는 로컬 저장소 운영자 중 하나에서 제공해야 하며, 둘 다에서 제공해서는 안 됩니다.

15.1.2.2. 허브 클러스터 가이드라인

Red Hat Advanced Cluster Management(RHACM)를 사용하는 경우 허브 클러스터가 다음 조건을 충족해야 합니다.

  • 시드 이미지에 RHACM 리소스가 포함되지 않도록 하려면 시드 이미지를 생성하기 전에 모든 선택적 RHACM 추가 기능을 비활성화해야 합니다.
  • 대상 단일 노드 OpenShift 클러스터에서 이미지 기반 업그레이드를 수행하기 전에 허브 클러스터를 최소한 대상 버전으로 업그레이드해야 합니다.

15.1.2.3. 씨앗 이미지 가이드라인

시드 이미지는 동일한 하드웨어와 유사한 구성을 갖춘 단일 노드 OpenShift 클러스터 세트를 대상으로 합니다. 즉, 시드 클러스터는 다음 항목에 대한 대상 클러스터의 구성과 일치해야 합니다.

  • CPU 토폴로지

    • CPU 코어 수
    • 예약된 CPU 수와 같은 조정된 성능 구성
  • 대상 클러스터에 대한 MachineConfig 리소스
  • IP 버전

    참고

    이 릴리스에서는 듀얼 스택 네트워킹이 지원되지 않습니다.

  • Lifecycle Agent 및 OADP Operator를 포함한 Day 2 Operator 세트
  • 연결이 끊긴 레지스트리
  • FIPS 구성

다음 구성은 참여 클러스터에서 부분적으로만 일치해야 합니다.

  • 대상 클러스터에 프록시 구성이 있는 경우 시드 클러스터에도 프록시 구성이 있어야 하지만 구성은 동일할 필요는 없습니다.
  • 모든 참여 클러스터에는 컨테이너 스토리지를 위한 기본 디스크의 전용 파티션이 필요합니다. 하지만 파티션의 크기와 시작점은 꼭 같을 필요는 없습니다. MachineConfig CR의 spec.config.storage.disks.partitions.label: varlibcontainers 레이블만 시드 클러스터와 대상 클러스터에서 일치해야 합니다. 디스크 파티션을 만드는 방법에 대한 자세한 내용은 "ostree stateroots 간 공유 컨테이너 파티션 구성" 또는 "GitOps ZTP를 사용할 때 ostree stateroots 간 공유 컨테이너 파티션 구성"을 참조하세요.

시드 이미지에 포함할 내용에 대한 자세한 내용은 "시드 이미지 구성" 및 "RAN DU 프로필을 사용한 시드 이미지 구성"을 참조하세요.

15.1.2.4. OADP 백업 및 복원 지침

OADP Operator를 사용하면 ConfigMap 객체에 래핑된 백업복원 CR을 사용하여 대상 클러스터에서 애플리케이션을 백업하고 복원할 수 있습니다. 업그레이드 후 복원할 수 있도록 애플리케이션은 현재 및 대상 OpenShift Container Platform 버전에서 작동해야 합니다. 백업에는 처음 생성된 리소스가 포함되어야 합니다.

다음 리소스는 백업에서 제외해야 합니다.

  • pods
  • 엔드포인트
  • controllerrevision
  • podmetrics
  • packagemanifest
  • 레플리카셋
  • localvolume, LSO(Local Storage Operator)를 사용하는 경우

단일 노드 OpenShift에는 두 가지 로컬 스토리지 구현이 있습니다.

로컬 스토리지 운영자(LSO)
Lifecycle Agent는 localvolume 리소스와 관련 StorageClass 리소스를 포함하여 필요한 아티팩트를 자동으로 백업하고 복원합니다. 애플리케이션 Backup CR에서 persistentvolumes 리소스를 제외해야 합니다.
LVM 스토리지
LVM 스토리지 아티팩트에 대한 백업복원 CR을 만들어야 합니다. 애플리케이션 Backup CR에 persistentVolumes 리소스를 포함해야 합니다.

이미지 기반 업그레이드의 경우, 지정된 대상 클러스터에서 하나의 Operator만 지원됩니다.

중요

두 연산자 모두 ImageBasedUpgrade CR을 통해 연산자 CR을 추가 매니페스트로 적용해서는 안 됩니다.

영구 볼륨 내용은 피벗 이후에 보존되고 사용됩니다. DataProtectionApplication CR을 구성할 때 이미지 기반 업그레이드에 대해 .spec.configuration.restic.enablefalse 로 설정되어 있는지 확인해야 합니다. 이렇게 하면 컨테이너 스토리지 인터페이스 통합이 비활성화됩니다.

15.1.2.4.1. lca.openshift.io/apply-wave 가이드라인

lca.openshift.io/apply-wave 주석은 백업 또는 복원 CR의 적용 순서를 결정합니다. 주석의 값은 문자열 숫자여야 합니다. 백업 또는 복원 CR에 lca.openshift.io/apply-wave 주석을 정의하는 경우 주석 값을 기준으로 증가하는 순서대로 적용됩니다. 주석을 정의하지 않으면 함께 적용됩니다.

lca.openshift.io/apply-wave 주석은 플랫폼 복원 CR(예: RHACM 및 LVM 스토리지 아티팩트)에서 애플리케이션의 CR보다 숫자적으로 낮아야 합니다. 이렇게 하면 플랫폼 아티팩트가 애플리케이션보다 먼저 복원됩니다.

애플리케이션에 클러스터 범위 리소스가 포함되어 있는 경우 별도의 백업복원 CR을 만들어 애플리케이션에서 만든 특정 클러스터 범위 리소스에 대한 백업 범위를 지정해야 합니다. 클러스터 범위 리소스에 대한 복원 CR은 나머지 애플리케이션 복원 CR보다 먼저 복원되어야 합니다.

15.1.2.4.2. lca.openshift.io/apply-label guidelines

lca.openshift.io/apply-label 주석을 사용하면 특정 리소스만 독점적으로 백업할 수 있습니다. 주석에서 정의한 리소스에 따라 Lifecycle Agent는 lca.openshift.io/backup: <backup_name> 레이블을 적용하고 Backup CR을 생성할 때 지정된 리소스에 labelSelector.matchLabels.lca.openshift.io/backup: <backup_name> 레이블 선택기를 추가합니다.

특정 리소스를 백업하기 위해 lca.openshift.io/apply-label 주석을 사용하려면 주석에 나열된 리소스도 spec 섹션에 포함되어야 합니다. lca.openshift.io/apply-label 주석이 Backup CR에 사용되는 경우 spec 섹션에 다른 리소스 유형이 지정되어 있어도 주석에 나열된 리소스만 백업됩니다.

CR 예

apiVersion: velero.io/v1
kind: Backup
metadata:
  name: acm-klusterlet
  namespace: openshift-adp
  annotations:
    lca.openshift.io/apply-label: rbac.authorization.k8s.io/v1/clusterroles/klusterlet,apps/v1/deployments/open-cluster-management-agent/klusterlet 
1

  labels:
    velero.io/storage-location: default
spec:
  includedNamespaces:
   - open-cluster-management-agent
  includedClusterScopedResources:
   - clusterroles
  includedNamespaceScopedResources:
   - deployments
Copy to Clipboard Toggle word wrap

1
값은 클러스터 범위 리소스의 group/version/resource/name 형식의 쉼표로 구분된 오브젝트 목록 또는 네임스페이스 범위 리소스의 group/version/resource/namespace/name 형식이어야 하며 관련 Backup CR에 연결해야 합니다.

15.1.2.5. 추가 매니페스트 지침

Lifecycle Agent는 추가 매니페스트를 사용하여 새 stateroot 배포로 재부팅한 후 애플리케이션 아티팩트를 복원하기 전에 대상 클러스터를 복원합니다.

다른 배포 방법에는 추가 매니페스트를 적용하는 다른 방법이 필요합니다.

GitOps ZTP

lca.openshift.io/target-ocp-version: <target_ocp_version > 레이블을 사용하여 피벗 후 Lifecycle Agent에서 추출하고 적용해야 하는 추가 매니페스트를 표시합니다. ImageBasedUpgrade CR에서 lca.openshift.io/target-ocp-version /target-ocp-version- count 주석을 사용하여 lca.openshift.io/target-ocp-ocp-version으로 레이블이 지정된 매니페스트 수를 지정할 수 있습니다. 지정된 경우 라이프사이클 에이전트는 정책에서 추출된 매니페스트 수가 사전 및 업그레이드 단계에서 주석에 제공된 수와 일치하는지 확인합니다.

lca.openshift.io/target-ocp-version-manifest-count 주석의 예

apiVersion: lca.openshift.io/v1
kind: ImageBasedUpgrade
metadata:
  annotations:
    lca.openshift.io/target-ocp-version-manifest-count: "5"
  name: upgrade
Copy to Clipboard Toggle word wrap

Non-GitOps
추가 매니페스트를 lca.openshift.io/apply-ECDSA 주석 으로 표시하여 적용 순서를 결정합니다. 레이블이 지정된 추가 매니페스트는 ConfigMap 오브젝트로 래핑되고, Lifecycle Agent에서 피벗 후 사용하는 ImageBasedUpgrade CR에서 참조합니다.

대상 클러스터에서 사용자 정의 카탈로그 소스를 사용하는 경우 올바른 릴리스 버전을 가리키는 추가 매니페스트로 포함해야 합니다.

중요

다음 항목을 추가 매니페스트로 적용할 수 없습니다.

  • MachineConfig 오브젝트
  • OLM Operator 서브스크립션
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat