18.5. ClusterGroupUpgrade CR 정보
TALM(토폴로지 라이프사이클 관리자)은 클러스터 그룹의 ClusterGroupUpgrade
CR에서 수정 계획을 빌드합니다. ClusterGroupUpgrade
CR에서 다음 사양을 정의할 수 있습니다.
- 그룹의 클러스터
-
ClusterGroupUpgrade
CR 차단 - 적용 가능한 관리 정책 목록
- 동시 업데이트 수
- 적용 가능한 카나리아 업데이트
- 업데이트 전과 후에 수행할 작업
- 업데이트 타이밍
TALM은 지정된 클러스터에 대한 정책을 수정하여 작동하므로 ClusterGroupUpgrade
CR은 다음과 같은 상태를 가질 수 있습니다.
-
UpgradeNotStarted
-
UpgradeCannotStart
-
UpgradeNotComplete
-
UpgradeTimedOut
-
UpgradeCompleted
-
PrecachingRequired
TALM이 클러스터 업데이트를 완료한 후에는 동일한 ClusterGroupUpgrade
CR의 제어 하에서 클러스터가 다시 업데이트되지 않습니다. 다음 경우 새 ClusterGroupUpgrade
CR을 생성해야 합니다.
- 클러스터를 다시 업데이트해야 하는 경우
-
클러스터가 업데이트 후 알림 정책과 호환되는
비준
수로 변경되는 경우
18.5.1. UpgradeNotStarted 상태
ClusterGroupUpgrade
CR의 초기 상태는 UpgradeNotStarted
입니다.
TALM은 다음 필드에 따라 수정 계획을 빌드합니다.
-
clusterSelector
필드는 업데이트할 클러스터의 레이블을 지정합니다. -
cluster
필드는 업데이트할 클러스터 목록을 지정합니다. -
canaries
필드는 카나리아 업데이트의 클러스터를 지정합니다. -
maxConcurrency
필드는 배치에서 업데이트할 클러스터 수를 지정합니다.
클러스터
와 clusterSelector
필드를 함께 사용하여 결합된 클러스터 목록을 생성할 수 있습니다.
수정 계획은 카나리아
필드에 나열된 클러스터에서 시작됩니다. 각 카나리아 클러스터는 단일 클러스터 배치를 형성합니다.
카나리아 클러스터를 업데이트하는 동안 오류가 발생하면 업데이트 프로세스가 중단됩니다.
수정 계획이 성공적으로 생성되고 enable
필드가 true
로 설정된 후 ClusterGroupUpgrade
CR이 UpgradeNotCompleted
상태로 전환됩니다. 이 시점에서 TALM은 지정된 관리 정책으로 비호환 클러스터를 업데이트하기 시작합니다.
ClusterGroupUpgrade
CR이 UpgradeNotStarted
또는 UpgradeCannotStart
상태에 있는 경우에만 spec
필드를 변경할 수 있습니다.
UpgradeNotStarted
상태의 샘플 ClusterGroupUpgrade
CR
apiVersion: ran.openshift.io/v1alpha1 kind: ClusterGroupUpgrade metadata: name: cgu-upgrade-complete namespace: default spec: clusters: 1 - spoke1 enable: false managedPolicies: 2 - policy1-common-cluster-version-policy - policy2-common-nto-sub-policy remediationStrategy: 3 canaries: 4 - spoke1 maxConcurrency: 1 5 timeout: 240 status: 6 conditions: - message: The ClusterGroupUpgrade CR is not enabled reason: UpgradeNotStarted status: "False" type: Ready copiedPolicies: - cgu-upgrade-complete-policy1-common-cluster-version-policy - cgu-upgrade-complete-policy2-common-nto-sub-policy managedPoliciesForUpgrade: - name: policy1-common-cluster-version-policy namespace: default - name: policy2-common-nto-sub-policy namespace: default placementBindings: - cgu-upgrade-complete-policy1-common-cluster-version-policy - cgu-upgrade-complete-policy2-common-nto-sub-policy placementRules: - cgu-upgrade-complete-policy1-common-cluster-version-policy - cgu-upgrade-complete-policy2-common-nto-sub-policy remediationPlan: - - spoke1
18.5.2. UpgradeCannotStart 상태
UpgradeCannotStart
상태에서는 다음과 같은 이유로 인해 업데이트를 시작할 수 없습니다.
- CR 차단 시스템이 시스템에서 누락됨
- CR 차단이 아직 완료되지 않았습니다.
18.5.3. UpgradeNotCompleted 상태
UpgradeNotCompleted
상태에서 TALM은 UpgradeNotStarted
상태에 정의된 수정 계획 뒤에 정책을 적용합니다.
후속 배치에 대한 정책은 현재 배치의 모든 클러스터가 모든 관리 정책을 준수하는 직후 시작됩니다. 배치 시간이 초과되면 TALM은 다음 배치로 이동합니다. 배치의 시간 초과 값은 spec.timeout
필드이며 수정 계획의 배치 수로 나뉩니다.
관리 정책은 ClusterGroupUpgrade
CR의 managedPolicies
필드에 나열된 순서대로 적용됩니다. 하나의 관리형 정책이 한 번에 지정된 클러스터에 적용됩니다. 지정된 클러스터가 현재 정책을 준수하는 후 다음 비호환 클러스터에 다음 관리 정책이 적용됩니다.
UpgradeNotCompleted
상태의 샘플 ClusterGroupUpgrade
CR
apiVersion: ran.openshift.io/v1alpha1 kind: ClusterGroupUpgrade metadata: name: cgu-upgrade-complete namespace: default spec: clusters: - spoke1 enable: true 1 managedPolicies: - policy1-common-cluster-version-policy - policy2-common-nto-sub-policy remediationStrategy: maxConcurrency: 1 timeout: 240 status: 2 conditions: - message: The ClusterGroupUpgrade CR has upgrade policies that are still non compliant reason: UpgradeNotCompleted status: "False" type: Ready copiedPolicies: - cgu-upgrade-complete-policy1-common-cluster-version-policy - cgu-upgrade-complete-policy2-common-nto-sub-policy managedPoliciesForUpgrade: - name: policy1-common-cluster-version-policy namespace: default - name: policy2-common-nto-sub-policy namespace: default placementBindings: - cgu-upgrade-complete-policy1-common-cluster-version-policy - cgu-upgrade-complete-policy2-common-nto-sub-policy placementRules: - cgu-upgrade-complete-policy1-common-cluster-version-policy - cgu-upgrade-complete-policy2-common-nto-sub-policy remediationPlan: - - spoke1 status: currentBatch: 1 remediationPlanForBatch: 3 spoke1: 0
18.5.4. UpgradeTimedOut 상태
UpgradeTimedOut
상태에서 TALM은 ClusterGroupUpgrade
CR에 대한 모든 정책이 호환되는 경우 매 시간마다 확인합니다. ClusterGroupUpgrade
CR이 삭제되거나 업데이트가 완료될 때까지 검사가 계속됩니다. 주기적인 검사를 통해 네트워크, CPU 또는 기타 문제로 인해 시간이 오래 걸리는 경우 업데이트가 완료될 수 있습니다.
TALM은 다음 두 가지 경우에 UpgradeTimedOut
상태로 전환합니다.
- 현재 배치에 카나리아 업데이트가 포함되고 배치의 클러스터가 배치 제한 시간 내에 있는 모든 관리 정책을 준수하지 않는 경우
-
클러스터에서
remediationStrategy
필드에 지정된시간 초과
값 내의 관리 정책을 준수하지 않는 경우
정책이 호환되는 경우 TALM은 UpgradeCompleted
상태로 전환됩니다.
18.5.5. UpgradeCompleted 상태
UpgradeCompleted
상태에서 클러스터 업데이트가 완료됩니다.
UpgradeCompleted
상태의 샘플 ClusterGroupUpgrade
CR
apiVersion: ran.openshift.io/v1alpha1 kind: ClusterGroupUpgrade metadata: name: cgu-upgrade-complete namespace: default spec: actions: afterCompletion: deleteObjects: true 1 clusters: - spoke1 enable: true managedPolicies: - policy1-common-cluster-version-policy - policy2-common-nto-sub-policy remediationStrategy: maxConcurrency: 1 timeout: 240 status: 2 conditions: - message: The ClusterGroupUpgrade CR has all clusters compliant with all the managed policies reason: UpgradeCompleted status: "True" type: Ready managedPoliciesForUpgrade: - name: policy1-common-cluster-version-policy namespace: default - name: policy2-common-nto-sub-policy namespace: default remediationPlan: - - spoke1 status: remediationPlanForBatch: spoke1: -2 3
PrecachingRequired
상태에서 업데이트를 시작하기 전에 클러스터에 사전 캐시 이미지가 있어야 합니다. 사전 캐싱에 대한 자세한 내용은 "컨테이너 이미지 사전 캐시 기능 사용" 섹션을 참조하십시오.
18.5.6. ClusterGroupUpgrade CR 차단
여러 ClusterGroupUpgrade
CR을 생성하고 애플리케이션 순서를 제어할 수 있습니다.
예를 들어 ClusterGroupUpgrade
CR A의 시작을 차단하는 ClusterGroupUpgrade
CR C를 생성하는 경우 ClusterGroupUpgrade
CR C가 UpgradeComplete
가 될 때까지 ClusterGroupUpgrade
CR A를 시작할 수 없습니다.
하나의 ClusterGroupUpgrade
CR에는 여러 차단 CR이 있을 수 있습니다. 이 경우 현재 CR에 대한 업그레이드를 시작하기 전에 모든 차단 CR을 완료해야 합니다.
사전 요구 사항
- Topology Aware Lifecycle Manager (TALM)를 설치합니다.
- 하나 이상의 관리 클러스터를 프로비저닝합니다.
-
cluster-admin
권한이 있는 사용자로 로그인합니다. - hub 클러스터에서 RHACM 정책을 생성합니다.
절차
ClusterGroupUpgrade
CR의 내용을cgu-a.yaml
,cgu-b.yaml
,cgu-c.yaml
파일에 저장합니다.apiVersion: ran.openshift.io/v1alpha1 kind: ClusterGroupUpgrade metadata: name: cgu-a namespace: default spec: blockingCRs: 1 - name: cgu-c namespace: default clusters: - spoke1 - spoke2 - spoke3 enable: false managedPolicies: - policy1-common-cluster-version-policy - policy2-common-pao-sub-policy - policy3-common-ptp-sub-policy remediationStrategy: canaries: - spoke1 maxConcurrency: 2 timeout: 240 status: conditions: - message: The ClusterGroupUpgrade CR is not enabled reason: UpgradeNotStarted status: "False" type: Ready copiedPolicies: - cgu-a-policy1-common-cluster-version-policy - cgu-a-policy2-common-pao-sub-policy - cgu-a-policy3-common-ptp-sub-policy managedPoliciesForUpgrade: - name: policy1-common-cluster-version-policy namespace: default - name: policy2-common-pao-sub-policy namespace: default - name: policy3-common-ptp-sub-policy namespace: default placementBindings: - cgu-a-policy1-common-cluster-version-policy - cgu-a-policy2-common-pao-sub-policy - cgu-a-policy3-common-ptp-sub-policy placementRules: - cgu-a-policy1-common-cluster-version-policy - cgu-a-policy2-common-pao-sub-policy - cgu-a-policy3-common-ptp-sub-policy remediationPlan: - - spoke1 - - spoke2
- 1
- 차단 CR을 정의합니다.
cgu-a
업데이트는cgu-c
가 완료될 때까지 시작할 수 없습니다.
apiVersion: ran.openshift.io/v1alpha1 kind: ClusterGroupUpgrade metadata: name: cgu-b namespace: default spec: blockingCRs: 1 - name: cgu-a namespace: default clusters: - spoke4 - spoke5 enable: false managedPolicies: - policy1-common-cluster-version-policy - policy2-common-pao-sub-policy - policy3-common-ptp-sub-policy - policy4-common-sriov-sub-policy remediationStrategy: maxConcurrency: 1 timeout: 240 status: conditions: - message: The ClusterGroupUpgrade CR is not enabled reason: UpgradeNotStarted status: "False" type: Ready copiedPolicies: - cgu-b-policy1-common-cluster-version-policy - cgu-b-policy2-common-pao-sub-policy - cgu-b-policy3-common-ptp-sub-policy - cgu-b-policy4-common-sriov-sub-policy managedPoliciesForUpgrade: - name: policy1-common-cluster-version-policy namespace: default - name: policy2-common-pao-sub-policy namespace: default - name: policy3-common-ptp-sub-policy namespace: default - name: policy4-common-sriov-sub-policy namespace: default placementBindings: - cgu-b-policy1-common-cluster-version-policy - cgu-b-policy2-common-pao-sub-policy - cgu-b-policy3-common-ptp-sub-policy - cgu-b-policy4-common-sriov-sub-policy placementRules: - cgu-b-policy1-common-cluster-version-policy - cgu-b-policy2-common-pao-sub-policy - cgu-b-policy3-common-ptp-sub-policy - cgu-b-policy4-common-sriov-sub-policy remediationPlan: - - spoke4 - - spoke5 status: {}
- 1
cgu-b
업데이트는cgu-a
가 완료될 때까지 시작할 수 없습니다.
apiVersion: ran.openshift.io/v1alpha1 kind: ClusterGroupUpgrade metadata: name: cgu-c namespace: default spec: 1 clusters: - spoke6 enable: false managedPolicies: - policy1-common-cluster-version-policy - policy2-common-pao-sub-policy - policy3-common-ptp-sub-policy - policy4-common-sriov-sub-policy remediationStrategy: maxConcurrency: 1 timeout: 240 status: conditions: - message: The ClusterGroupUpgrade CR is not enabled reason: UpgradeNotStarted status: "False" type: Ready copiedPolicies: - cgu-c-policy1-common-cluster-version-policy - cgu-c-policy4-common-sriov-sub-policy managedPoliciesCompliantBeforeUpgrade: - policy2-common-pao-sub-policy - policy3-common-ptp-sub-policy managedPoliciesForUpgrade: - name: policy1-common-cluster-version-policy namespace: default - name: policy4-common-sriov-sub-policy namespace: default placementBindings: - cgu-c-policy1-common-cluster-version-policy - cgu-c-policy4-common-sriov-sub-policy placementRules: - cgu-c-policy1-common-cluster-version-policy - cgu-c-policy4-common-sriov-sub-policy remediationPlan: - - spoke6 status: {}
- 1
cgu-c
업데이트에는 차단 CR이 없습니다. TALM은enable
필드가true
로 설정된 경우cgu-c
업데이트를 시작합니다.
각 관련 CR에 대해 다음 명령을 실행하여
ClusterGroupUpgrade
CR을 생성합니다.$ oc apply -f <name>.yaml
각 관련 CR에 대해 다음 명령을 실행하여 업데이트 프로세스를 시작합니다.
$ oc --namespace=default patch clustergroupupgrade.ran.openshift.io/<name> \ --type merge -p '{"spec":{"enable":true}}'
다음 예제에서는
enable
필드가true
로 설정된ClusterGroupUpgrade
CR을 보여줍니다.CR을 차단하는
cgu-a
의 예apiVersion: ran.openshift.io/v1alpha1 kind: ClusterGroupUpgrade metadata: name: cgu-a namespace: default spec: blockingCRs: - name: cgu-c namespace: default clusters: - spoke1 - spoke2 - spoke3 enable: true managedPolicies: - policy1-common-cluster-version-policy - policy2-common-pao-sub-policy - policy3-common-ptp-sub-policy remediationStrategy: canaries: - spoke1 maxConcurrency: 2 timeout: 240 status: conditions: - message: 'The ClusterGroupUpgrade CR is blocked by other CRs that have not yet completed: [cgu-c]' 1 reason: UpgradeCannotStart status: "False" type: Ready copiedPolicies: - cgu-a-policy1-common-cluster-version-policy - cgu-a-policy2-common-pao-sub-policy - cgu-a-policy3-common-ptp-sub-policy managedPoliciesForUpgrade: - name: policy1-common-cluster-version-policy namespace: default - name: policy2-common-pao-sub-policy namespace: default - name: policy3-common-ptp-sub-policy namespace: default placementBindings: - cgu-a-policy1-common-cluster-version-policy - cgu-a-policy2-common-pao-sub-policy - cgu-a-policy3-common-ptp-sub-policy placementRules: - cgu-a-policy1-common-cluster-version-policy - cgu-a-policy2-common-pao-sub-policy - cgu-a-policy3-common-ptp-sub-policy remediationPlan: - - spoke1 - - spoke2 status: {}
- 1
- 차단 CR 목록을 표시합니다.
CR을 차단하는
cgu-b
의 예apiVersion: ran.openshift.io/v1alpha1 kind: ClusterGroupUpgrade metadata: name: cgu-b namespace: default spec: blockingCRs: - name: cgu-a namespace: default clusters: - spoke4 - spoke5 enable: true managedPolicies: - policy1-common-cluster-version-policy - policy2-common-pao-sub-policy - policy3-common-ptp-sub-policy - policy4-common-sriov-sub-policy remediationStrategy: maxConcurrency: 1 timeout: 240 status: conditions: - message: 'The ClusterGroupUpgrade CR is blocked by other CRs that have not yet completed: [cgu-a]' 1 reason: UpgradeCannotStart status: "False" type: Ready copiedPolicies: - cgu-b-policy1-common-cluster-version-policy - cgu-b-policy2-common-pao-sub-policy - cgu-b-policy3-common-ptp-sub-policy - cgu-b-policy4-common-sriov-sub-policy managedPoliciesForUpgrade: - name: policy1-common-cluster-version-policy namespace: default - name: policy2-common-pao-sub-policy namespace: default - name: policy3-common-ptp-sub-policy namespace: default - name: policy4-common-sriov-sub-policy namespace: default placementBindings: - cgu-b-policy1-common-cluster-version-policy - cgu-b-policy2-common-pao-sub-policy - cgu-b-policy3-common-ptp-sub-policy - cgu-b-policy4-common-sriov-sub-policy placementRules: - cgu-b-policy1-common-cluster-version-policy - cgu-b-policy2-common-pao-sub-policy - cgu-b-policy3-common-ptp-sub-policy - cgu-b-policy4-common-sriov-sub-policy remediationPlan: - - spoke4 - - spoke5 status: {}
- 1
- 차단 CR 목록을 표시합니다.
CR을 차단하는
cgu-c
의 예apiVersion: ran.openshift.io/v1alpha1 kind: ClusterGroupUpgrade metadata: name: cgu-c namespace: default spec: clusters: - spoke6 enable: true managedPolicies: - policy1-common-cluster-version-policy - policy2-common-pao-sub-policy - policy3-common-ptp-sub-policy - policy4-common-sriov-sub-policy remediationStrategy: maxConcurrency: 1 timeout: 240 status: conditions: - message: The ClusterGroupUpgrade CR has upgrade policies that are still non compliant 1 reason: UpgradeNotCompleted status: "False" type: Ready copiedPolicies: - cgu-c-policy1-common-cluster-version-policy - cgu-c-policy4-common-sriov-sub-policy managedPoliciesCompliantBeforeUpgrade: - policy2-common-pao-sub-policy - policy3-common-ptp-sub-policy managedPoliciesForUpgrade: - name: policy1-common-cluster-version-policy namespace: default - name: policy4-common-sriov-sub-policy namespace: default placementBindings: - cgu-c-policy1-common-cluster-version-policy - cgu-c-policy4-common-sriov-sub-policy placementRules: - cgu-c-policy1-common-cluster-version-policy - cgu-c-policy4-common-sriov-sub-policy remediationPlan: - - spoke6 status: currentBatch: 1 remediationPlanForBatch: spoke6: 0
- 1
cgu-c
업데이트에는 차단 CR이 없습니다.