8.6. OADP를 사용하여 호스트된 클러스터에 대한 재해 복구
OADP(OpenShift API for Data Protection) Operator를 사용하여 AWS(Amazon Web Services) 및 베어 메탈에서 재해 복구를 수행할 수 있습니다.
OADP(OpenShift API for Data Protection)의 재해 복구 프로세스에는 다음 단계가 포함됩니다.
- OADP를 사용하도록 Amazon Web Services 또는 베어 메탈과 같은 플랫폼 준비
- 데이터 플레인 워크로드 백업
- 컨트롤 플레인 워크로드 백업
- OADP를 사용하여 호스트 클러스터 복원
8.6.1. 사전 요구 사항
관리 클러스터에서 다음 사전 요구 사항을 충족해야 합니다.
- OADP Operator가 설치되어 있어야 합니다.
- 스토리지 클래스를 생성하셨습니다.
-
cluster-admin
권한이 있는 클러스터에 액세스할 수 있습니다. - 카탈로그 소스를 통해 OADP 서브스크립션에 액세스할 수 있습니다.
- S3, Microsoft Azure, Google Cloud Platform 또는 MinIO와 같은 OADP와 호환되는 클라우드 스토리지 공급자에 액세스할 수 있습니다.
- 연결이 끊긴 환경에서는 OADP와 호환되는 자체 호스팅 스토리지 공급자(예: Red Hat OpenShift Data Foundation 또는 MinIO )에 액세스할 수 있습니다.
- 호스팅된 컨트롤 플레인 pod가 실행 중입니다.
8.6.2. OADP를 사용하도록 AWS 준비
호스트된 클러스터에 대한 재해 복구를 수행하려면 AWS(Amazon Web Services) S3 호환 스토리지에서 OADP(OpenShift API for Data Protection)를 사용할 수 있습니다. DataProtectionApplication
오브젝트를 생성하면 openshift-adp
네임스페이스에 새 velero
배포 및 node-agent
Pod가 생성됩니다.
OADP를 사용하도록 AWS를 준비하려면 "Multicloud Object Gateway로 데이터 보호를 위한 OpenShift API 구성"을 참조하십시오.
다음 단계
- 데이터 플레인 워크로드 백업
- 컨트롤 플레인 워크로드 백업
8.6.3. OADP를 사용하도록 베어 메탈 준비
호스트된 클러스터에 대한 재해 복구를 수행하려면 베어 메탈에서 OADP(OpenShift API for Data Protection)를 사용할 수 있습니다. DataProtectionApplication
오브젝트를 생성하면 openshift-adp
네임스페이스에 새 velero
배포 및 node-agent
Pod가 생성됩니다.
OADP를 사용하도록 베어 메탈을 준비하려면 "AWS S3 호환 스토리지로 데이터 보호를 위한 OpenShift API 구성"을 참조하십시오.
다음 단계
- 데이터 플레인 워크로드 백업
- 컨트롤 플레인 워크로드 백업
8.6.4. 데이터 플레인 워크로드 백업
데이터 플레인 워크로드가 중요하지 않은 경우 이 절차를 건너뛸 수 있습니다. OADP Operator를 사용하여 데이터 플레인 워크로드를 백업하려면 "애플리케이션 백업"을 참조하십시오.
추가 리소스
다음 단계
- OADP를 사용하여 호스트 클러스터 복원
8.6.5. 컨트롤 플레인 워크로드 백업
Backup
CR(사용자 정의 리소스)을 생성하여 컨트롤 플레인 워크로드를 백업할 수 있습니다.
백업 프로세스를 모니터링하고 관찰하려면 "백업 및 복원 프로세스 예약"을 참조하십시오.
프로세스
다음 명령을 실행하여
NodePool
복제본을0
으로 축소합니다.$ oc --kubeconfig <management_cluster_kubeconfig_file> \ scale nodepool -n <hosted_cluster_namespace> \ <node_pool_name> --replicas 0
다음 명령을 실행하여
HostedCluster
리소스의 조정을 일시 중지합니다.$ oc --kubeconfig <management_cluster_kubeconfig_file> \ patch hostedcluster -n <hosted_cluster_namespace> <hosted_cluster_name> \ --type json -p '[{"op": "add", "path": "/spec/pausedUntil", "value": "true"}]'
다음 명령을 실행하여
NodePool
리소스의 조정을 일시 중지합니다.$ oc --kubeconfig <management_cluster_kubeconfig_file> \ patch nodepool -n <hosted_cluster_namespace> <node_pool_name> \ --type json -p '[{"op": "add", "path": "/spec/pausedUntil", "value": "true"}]'
Backup
CR을 정의하는 YAML 파일을 생성합니다.예 8.1.
backup-control-plane.yaml
파일 예apiVersion: velero.io/v1 kind: Backup metadata: name: <backup_resource_name> 1 namespace: openshift-adp labels: velero.io/storage-location: default spec: hooks: {} includedNamespaces: 2 - <hosted_cluster_namespace> 3 - <hosted_control_plane_namespace> 4 includedResources: - sa - role - rolebinding - pod - pvc - pv - bmh - configmap - infraenv 5 - priorityclasses - pdb - agents - hostedcluster - nodepool - secrets - hostedcontrolplane - cluster - agentcluster - agentmachinetemplate - agentmachine - machinedeployment - machineset - machine excludedResources: [] storageLocation: default ttl: 2h0m0s snapshotMoveData: true 6 datamover: "velero" 7 defaultVolumesToFsBackup: true 8
- 1
backup_resource_name
을Backup
리소스의 이름으로 교체합니다.- 2
- 특정 네임스페이스를 선택하여 오브젝트를 백업합니다. 호스팅 클러스터 네임스페이스와 호스팅된 컨트롤 플레인 네임스페이스를 포함해야 합니다.
- 3
<hosted_cluster_namespace>
를 호스트된 클러스터 네임스페이스의 이름으로 바꿉니다(예:클러스터
).- 4
<hosted_control_plane_namespace>
를 호스트된 컨트롤 플레인 네임스페이스의 이름으로 바꿉니다(예:클러스터 호스팅
).- 5
- 별도의 네임스페이스에
infraenv
리소스를 생성해야 합니다. 백업 프로세스 중에infraenv
리소스를 삭제하지 마십시오. - 6 7
- CSI 볼륨 스냅샷을 활성화하고 컨트롤 플레인 워크로드를 클라우드 스토리지에 자동으로 업로드합니다.
- 8
- PV(영구 볼륨)의
fs-backup
방법을 기본값으로 설정합니다. 이 설정은 CSI(Container Storage Interface) 볼륨 스냅샷과fs-backup
방법을 조합할 때 유용합니다.
참고CSI 볼륨 스냅샷을 사용하려면
backup.velero.io/backup-volumes-excludes=<pv_name>
주석을 PV에 추가해야 합니다.다음 명령을 실행하여
Backup
CR을 적용합니다.$ oc apply -f backup-control-plane.yaml
검증
다음 명령을 실행하여
status.phase
의 값이완료
되었는지 확인합니다.$ oc get backup <backup_resource_name> -n openshift-adp -o jsonpath='{.status.phase}'
다음 단계
- OADP를 사용하여 호스트 클러스터 복원
8.6.6. OADP를 사용하여 호스트 클러스터 복원
Restore
CR(사용자 정의 리소스)을 생성하여 호스팅된 클러스터를 복원할 수 있습니다.
- 인플레이스 업데이트를 사용하는 경우 InfraEnv에는 예비 노드가 필요하지 않습니다. 새 관리 클러스터에서 작업자 노드를 다시 프로비저닝해야 합니다.
- 교체 업데이트를 사용하는 경우 작업자 노드를 배포하려면 InfraEnv에 대한 예비 노드가 필요합니다.
호스트 클러스터를 백업한 후 이를 삭제하여 복원 프로세스를 시작해야 합니다. 노드 프로비저닝을 시작하려면 호스팅 클러스터를 삭제하기 전에 데이터 플레인의 워크로드를 백업해야 합니다.
사전 요구 사항
- 콘솔을 사용하여 호스팅된 클러스터를 삭제하여 클러스터 제거 단계를 완료했습니다.
- 클러스터를 제거한 후 나머지 리소스 제거 단계를 완료했습니다.
백업 프로세스를 모니터링하고 관찰하려면 "백업 및 복원 프로세스 예약"을 참조하십시오.
프로세스
다음 명령을 실행하여 호스팅된 컨트롤 플레인 네임스페이스에 Pod 및 PVC(영구 볼륨 클레임)가 없는지 확인합니다.
$ oc get pod pvc -n <hosted_control_plane_namespace>
예상 출력
No resources found
Restore
CR을 정의하는 YAML 파일을 생성합니다.restore-hosted-cluster.yaml
파일의 예apiVersion: velero.io/v1 kind: Restore metadata: name: <restore_resource_name> 1 namespace: openshift-adp spec: backupName: <backup_resource_name> 2 restorePVs: true 3 existingResourcePolicy: update 4 excludedResources: - nodes - events - events.events.k8s.io - backups.velero.io - restores.velero.io - resticrepositories.velero.io
중요별도의 네임스페이스에
infraenv
리소스를 생성해야 합니다. 복원 프로세스 중에infraenv
리소스를 삭제하지 마십시오. 새 노드를 다시 프로비저닝하려면infraenv
리소스가 필요합니다.다음 명령을 실행하여
Restore
CR을 적용합니다.$ oc apply -f restore-hosted-cluster.yaml
다음 명령을 실행하여
status.phase
의 값이완료
되었는지 확인합니다.$ oc get hostedcluster <hosted_cluster_name> -n <hosted_cluster_namespace> -o jsonpath='{.status.phase}'
복원 프로세스가 완료되면 컨트롤 플레인 워크로드를 백업하는 동안 일시 중지된
HostedCluster
및NodePool
리소스의 조정을 시작합니다.다음 명령을 실행하여
HostedCluster
리소스의 조정을 시작합니다.$ oc --kubeconfig <management_cluster_kubeconfig_file> \ patch hostedcluster -n <hosted_cluster_namespace> <hosted_cluster_name> \ --type json -p '[{"op": "add", "path": "/spec/pausedUntil", "value": "false"}]'
다음 명령을 실행하여
NodePool
리소스의 조정을 시작합니다.$ oc --kubeconfig <management_cluster_kubeconfig_file> \ patch nodepool -n <hosted_cluster_namespace> <node_pool_name> \ --type json -p '[{"op": "add", "path": "/spec/pausedUntil", "value": "false"}]'
다음 명령을 실행하여
NodePool
리소스를 원하는 복제본 수로 조정합니다.$ oc --kubeconfig <management_cluster_kubeconfig_file> \ scale nodepool -n <hosted_cluster_namespace> <node_pool_name> \ --replicas <replica_count> 1
- 1
<replica_count>
를 정수 값으로 바꿉니다(예:3
).
8.6.7. 백업 및 복원 프로세스 관찰
OADP(OpenShift API for Data Protection)를 사용하여 호스팅된 클러스터를 백업하고 복원할 때 프로세스를 모니터링하고 관찰할 수 있습니다.
프로세스
다음 명령을 실행하여 백업 프로세스를 관찰합니다.
$ watch "oc get backup -n openshift-adp <backup_resource_name> -o jsonpath='{.status}'"
다음 명령을 실행하여 복원 프로세스를 관찰합니다.
$ watch "oc get restore -n openshift-adp <backup_resource_name> -o jsonpath='{.status}'"
다음 명령을 실행하여 Velero 로그를 관찰합니다.
$ oc logs -n openshift-adp -ldeploy=velero -f
다음 명령을 실행하여 모든 OADP 오브젝트의 진행 상황을 확인합니다.
$ watch "echo BackupRepositories:;echo;oc get backuprepositories.velero.io -A;echo; echo BackupStorageLocations: ;echo; oc get backupstoragelocations.velero.io -A;echo;echo DataUploads: ;echo;oc get datauploads.velero.io -A;echo;echo DataDownloads: ;echo;oc get datadownloads.velero.io -n openshift-adp; echo;echo VolumeSnapshotLocations: ;echo;oc get volumesnapshotlocations.velero.io -A;echo;echo Backups:;echo;oc get backup -A; echo;echo Restores:;echo;oc get restore -A"
8.6.8. velero CLI를 사용하여 백업 및 복원 리소스 설명
데이터 보호를 위한 OpenShift API를 사용하는 경우 velero
CLI(명령줄 인터페이스)를 사용하여 Backup
및 Restore
리소스에 대한 자세한 정보를 얻을 수 있습니다.
프로세스
다음 명령을 실행하여 컨테이너에서
velero
CLI를 사용하도록 별칭을 생성합니다.$ alias velero='oc -n openshift-adp exec deployment/velero -c velero -it -- ./velero'
다음 명령을 실행하여
Restore
CR(사용자 정의 리소스)에 대한 세부 정보를 가져옵니다.$ velero restore describe <restore_resource_name> --details 1
- 1
<restore_resource_name>
을Restore
리소스의 이름으로 바꿉니다.
다음 명령을 실행하여
Backup
CR에 대한 세부 정보를 가져옵니다.$ velero restore describe <backup_resource_name> --details 1
- 1
<backup_resource_name>
을Backup
리소스의 이름으로 바꿉니다.