15.4.2. 여러 단계에서 대규모로 관리 클러스터에서 이미지 기반 업그레이드 수행
업그레이드가 서비스를 중단하는 시기를 더 잘 제어해야 하는 경우 이전 단계가 완료된 후 작업 추가와 함께 ImageBasedGroupUpgrade CR을 사용하여 관리 클러스터 세트를 업그레이드할 수 있습니다. 이전 단계의 결과를 평가한 후 다음 업그레이드 단계로 이동하거나 절차 전체에서 실패한 단계를 해결할 수 있습니다.
지원되는 작업 조합에 특정 작업 조합만 지원 및 나열됩니다.
사전 요구 사항
-
cluster-admin권한이 있는 사용자로 허브 클러스터에 로그인했습니다. -
이미지 기반 업그레이드에 사용되는 리소스에 대한 정책 및
ConfigMap오브젝트가 생성되어 있습니다. - hub 클러스터를 통해 모든 관리 클러스터에 Lifecycle Agent 및 OADP Operator를 설치했습니다.
프로세스
ImageBasedGroupUpgradeCR이 포함된 허브 클러스터에 YAML 파일을 생성합니다.apiVersion: lcm.openshift.io/v1alpha1 kind: ImageBasedGroupUpgrade metadata: name: <filename> namespace: default spec: clusterLabelSelectors:1 - matchExpressions: - key: name operator: In values: - spoke1 - spoke4 - spoke6 ibuSpec: seedImageRef:2 image: quay.io/seed/image:4.16.0-rc.1 version: 4.16.0-rc.1 pullSecretRef: name: "<seed_pull_secret>" extraManifests:3 - name: example-extra-manifests namespace: openshift-lifecycle-agent oadpContent:4 - name: oadp-cm namespace: openshift-adp plan:5 - actions: ["Prep"] rolloutStrategy: maxConcurrency: 2 timeout: 2400hub 클러스터에서 다음 명령을 실행하여 생성된 파일을 적용합니다.
$ oc apply -f <filename>.yamlhub 클러스터에서 다음 명령을 실행하여 상태 업데이트를 모니터링합니다.
$ oc get ibgu -o yaml출력 예
# ... status: clusters: - completedActions: - action: Prep name: spoke1 - completedActions: - action: Prep name: spoke4 - failedActions: - action: Prep name: spoke6 # ...예제 계획의 이전 출력은
Prep단계에서만 시작되고 이전 단계의 결과에 따라 계획에 작업을 추가합니다. TALM은 업그레이드가 성공하거나 실패했는지 표시하는 레이블을 클러스터에 추가합니다. 예를 들어lcm.openshift.io/ibgu-prep-failed가Prep단계에 실패한 클러스터에 적용됩니다.실패를 조사한 후 업그레이드 계획에
AbortOnFailure단계를 추가할 수 있습니다.lcm.openshift.io/ibgu-<action>으로 레이블이 지정된 클러스터를Idle단계로 다시 이동합니다. 선택한 클러스터의 업그레이드와 관련된 모든 리소스가 삭제됩니다.선택 사항: 다음 명령을 실행하여 기존
ImageBasedGroupUpgradeCR에AbortOnFailure작업을 추가합니다.$ oc patch ibgu <filename> --type=json -p \ '[{"op": "add", "path": "/spec/plan/-", "value": {"actions": ["AbortOnFailure"], "rolloutStrategy": {"maxConcurrency": 5, "timeout": 10}}}]'다음 명령을 실행하여 상태 업데이트를 계속 모니터링합니다.
$ oc get ibgu -o yaml
다음 명령을 실행하여 기존
ImageBasedGroupUpgradeCR에 작업을 추가합니다.$ oc patch ibgu <filename> --type=json -p \ '[{"op": "add", "path": "/spec/plan/-", "value": {"actions": ["Upgrade"], "rolloutStrategy": {"maxConcurrency": 2, "timeout": 30}}}]'선택 사항: 다음 명령을 실행하여 기존
ImageBasedGroupUpgradeCR에AbortOnFailure작업을 추가합니다.$ oc patch ibgu <filename> --type=json -p \ '[{"op": "add", "path": "/spec/plan/-", "value": {"actions": ["AbortOnFailure"], "rolloutStrategy": {"maxConcurrency": 5, "timeout": 10}}}]'다음 명령을 실행하여 상태 업데이트를 계속 모니터링합니다.
$ oc get ibgu -o yaml
다음 명령을 실행하여 기존
ImageBasedGroupUpgradeCR에 작업을 추가합니다.$ oc patch ibgu <filename> --type=json -p \ '[{"op": "add", "path": "/spec/plan/-", "value": {"actions": ["FinalizeUpgrade"], "rolloutStrategy": {"maxConcurrency": 10, "timeout": 3}}}]'
검증
다음 명령을 실행하여 상태 업데이트를 모니터링합니다.
$ oc get ibgu -o yaml출력 예
# ... status: clusters: - completedActions: - action: Prep - action: AbortOnFailure failedActions: - action: Upgrade name: spoke1 - completedActions: - action: Prep - action: Upgrade - action: FinalizeUpgrade name: spoke4 - completedActions: - action: AbortOnFailure failedActions: - action: Prep name: spoke6 # ...