16.4. GitOps ZTP를 사용하여 단일 노드 OpenShift 클러스터에 대한 이미지 기반 업그레이드 수행
모든 단계에서 선택한 관리 클러스터 그룹에서 이미지 기반 업그레이드를 관리하려면 hub 클러스터인 ImageBasedGroupUpgrade 사용자 정의 리소스(CR)에서 단일 리소스를 사용할 수 있습니다. TALM( topology Aware Lifecycle Manager)은 ImageBasedGroupUpgrade CR을 조정하고 수동으로 제어하거나 완전히 자동화된 업그레이드 흐름에서 정의된 스테이지 전환을 완료하기 위한 기본 리소스를 만듭니다.
이미지 기반 업그레이드에 대한 자세한 내용은 "단일 노드 OpenShift 클러스터의 이미지 기반 업그레이드 이해"를 참조하십시오.
16.4.1. 허브의 ImageBasedGroupUpgrade CR을 사용하여 대규모의 이미지 기반 업그레이드 관리 링크 복사링크가 클립보드에 복사되었습니다!
ImageBasedGroupUpgrade CR은 ImageBasedUpgrade 및 ClusterGroupUpgrade API를 결합합니다. 예를 들어 ClusterGroupUpgrade API와 동일한 방식으로 ImageBasedGroupUpgrade API를 사용하여 클러스터 선택 및 롤아웃 전략을 정의할 수 있습니다. 스테이지 전환은 ImageBasedUpgrade API와 다릅니다. ImageBasedGroupUpgrade API를 사용하여 작업이라고도 하는 여러 단계 전환을 하나의 롤아웃 전략을 공유하는 하나의 단계로 결합할 수 있습니다.
예 16.1. 예제 ImageBasedGroupUpgrade.yaml
apiVersion: lcm.openshift.io/v1alpha1
kind: ImageBasedGroupUpgrade
metadata:
name: <filename>
namespace: default
spec:
clusterLabelSelectors:
- matchExpressions:
- key: name
operator: In
values:
- spoke1
- spoke4
- spoke6
ibuSpec:
seedImageRef:
image: quay.io/seed/image:4.22.0
version: 4.22.0
pullSecretRef:
name: "<seed_pull_secret>"
extraManifests:
- name: example-extra-manifests
namespace: openshift-lifecycle-agent
oadpContent:
- name: oadp-cm
namespace: openshift-adp
plan:
- actions: ["Prep", "Upgrade", "FinalizeUpgrade"]
rolloutStrategy:
maxConcurrency: 200
timeout: 2400
다음과 같습니다.
-
clusterLabelSelectors: 업그레이드할 클러스터입니다. -
seedImageRef: 대상 플랫폼 버전, 시드 이미지 및 이미지에 액세스하는 데 필요한 시크릿입니다.
hub 클러스터에 seed 이미지 풀 시크릿을 추가하면 ImageBasedGroupUpgrade 리소스와 동일한 네임스페이스에 시크릿이 Prep 단계의 매니페스트 목록에 추가됩니다. 시크릿은 openshift-lifecycle-agent 네임스페이스의 각 spoke 클러스터에서 다시 생성됩니다.
-
extraManifests: 선택 사항: 시드 이미지에 없는 추가 매니페스트를 대상 클러스터에 적용합니다. 사용자 정의 카탈로그 소스에ConfigMap오브젝트도 적용합니다. -
oadpContent: OADPBackup및RestoreCR이 포함된ConfigMap리소스입니다. -
계획: 업그레이드 계획 세부 정보. -
maxConcurrency: 일괄로 업데이트할 클러스터 수입니다. -
timeout: 몇 분 내에 작업을 완료하기 위해 제한 시간 제한
16.4.1.1. 지원되는 작업 조합 링크 복사링크가 클립보드에 복사되었습니다!
작업은 선택한 클러스터 그룹에 대한 업그레이드 계획 단계에서 TALM이 완료하는 스테이지 전환 목록입니다. ImageBasedGroupUpgrade CR의 각 작업 항목은 별도의 단계이며 단계는 동일한 롤아웃 전략을 공유하는 하나 이상의 작업이 있습니다. 작업을 단계로 분리하여 각 작업에 대한 롤아웃 전략을 보다 효과적으로 제어할 수 있습니다.
업그레이드 계획에서 이러한 작업을 다르게 결합하고 나중에 다음 단계를 추가할 수 있습니다. 이전 단계가 완료되거나 실패할 때까지 기다린 후 계획에 단계를 추가합니다. 이전 단계에서 실패한 클러스터에 대해 추가된 단계의 첫 번째 작업은 Abort 또는 Rollback 이어야 합니다.
진행 중인 계획에서 작업 또는 단계를 제거할 수 없습니다.
다음 표는 롤아웃 전략에 대한 다양한 수준의 제어 계획에 대한 예제 계획을 보여줍니다.
| 계획 예 | 설명 |
|---|---|
| 모든 작업이 동일한 전략을 공유합니다. |
| 일부 작업은 동일한 전략을 공유합니다. |
| 모든 작업에는 다른 전략이 있습니다. |
작업 중 하나에 실패하는 클러스터는 동일한 단계에서 나머지 작업을 건너뜁니다.
ImageBasedGroupUpgrade API는 다음 작업을 허용합니다.
prep-
Prep단계로 이동하여 업그레이드 리소스 준비를 시작합니다. 업그레이드-
업그레이드 단계로 이동하여
업그레이드를 시작합니다. FinalizeUpgrade-
Idle단계로 이동하여 업그레이드 작업을 완료한 선택한 클러스터에서업그레이드를 완료합니다. rollback-
롤백 단계로 이동하여 성공적으로 업그레이드된 클러스터에서만
롤백을 시작합니다. FinalizeRollback-
Idle단계로 이동하여 롤백을 완료합니다. AbortOnFailure-
준비또는업그레이드작업에 실패한 선택된 클러스터의 업그레이드를 취소하려면유휴단계로 이동합니다. Abort-
Idle단계로 이동하여 아직 업그레이드되지 않은 클러스터에서만 지속적인 업그레이드를 취소합니다.
다음과 같은 동작 조합이 지원됩니다. 한 쌍의 대괄호는 plan 섹션의 한 단계를 나타냅니다.
-
["Prep"],["Abort"] -
["Prep", "Upgrade", "FinalizeUpgrade"] -
["Prep"],["bortOnFailure"],["Upgrade"],["bortOnFailure"],["FinalizeUpgrade"]] -
["Rollback", "FinalizeRollback"]
완전히 새로운 ImageBasedGroupUpgrade CR에서 지속적인 업그레이드를 다시 시작하거나 취소해야 하는 경우 다음 조합 중 하나를 사용합니다.
-
["Upgrade","FinalizeUpgrade"] -
["FinalizeUpgrade"] -
["FinalizeRollback"] -
["Abort"] -
["AbortOnFailure"]
16.4.1.2. 클러스터 선택 라벨링 링크 복사링크가 클립보드에 복사되었습니다!
초기 클러스터 선택에 spec.clusterLabelSelectors 필드를 사용합니다. 또한 TALM은 마지막 단계 전환 결과에 따라 관리 클러스터에 레이블을 지정합니다.
단계가 완료되거나 실패하면 TALM은 다음 레이블이 있는 관련 클러스터를 표시합니다.
-
lcm.openshift.io/ibgu-<stage>-completed -
lcm.openshift.io/ibgu-<stage>-failed
문제를 해결한 후 이러한 클러스터 레이블을 사용하여 클러스터 그룹에서 업그레이드를 취소하거나 롤백합니다.
ImageBasedGroupUpgrade CR을 사용하여 클러스터를 업그레이드하는 경우 관리 클러스터에서 문제 해결 또는 복구 단계를 올바르게 수행한 후 lcm.openshift.io/ibgu-<stage>-completed 또는 lcm.openshift.io/ibgu-<stage>-failed 클러스터 레이블을 업데이트해야 합니다. 이렇게 하면 TALM에서 클러스터의 이미지 기반 업그레이드를 계속 관리합니다.
예를 들어 업그레이드를 성공적으로 완료한 클러스터를 제외하고 모든 관리 클러스터의 업그레이드를 취소하려면 계획에 Abort 작업을 추가할 수 있습니다. Abort 작업은 ImageBasedUpgrade CR을 Idle 단계로 다시 이동하여 아직 업그레이드되지 않은 클러스터의 업그레이드를 취소합니다. 별도의 Abort 작업을 추가하면 TALM에서 lcm.openshift.io/ibgu-upgrade-completed 레이블이 있는 클러스터에서 Abort 작업을 수행하지 않습니다.
TALM은 업그레이드를 성공적으로 취소하거나 종료한 후 클러스터 레이블을 제거합니다.
16.4.1.3. 상태 모니터링 링크 복사링크가 클립보드에 복사되었습니다!
ImageBasedGroupUpgrade CR은 모든 클러스터에 대한 상태 보고를 한 곳에서 집계하여 더 나은 모니터링 환경을 보장합니다. 다음 작업을 모니터링할 수 있습니다.
status.clusters.completedActions-
계획섹션에 정의된 모든 완료된 작업을 표시합니다. status.clusters.currentAction- 현재 진행 중인 모든 작업을 표시합니다.
status.clusters.failedActions- 실패한 모든 작업을 자세한 오류 메시지와 함께 표시합니다.