4.5. OADP 사용 사례
4.5.1. 데이터 보호 및 {odf-first}용 OpenShift API를 사용한 백업 링크 복사링크가 클립보드에 복사되었습니다!
다음은 애플리케이션을 백업하기 위해 OADP 및 {odf-short}을 사용하는 사용 사례입니다.
4.5.1.1. OADP 및 {odf-short}을 사용하여 애플리케이션 백업 링크 복사링크가 클립보드에 복사되었습니다!
이 사용 사례에서는 OADP를 사용하여 애플리케이션을 백업하고 {odf-first}에서 제공하는 오브젝트 스토리지에 백업을 저장합니다.
- OBC(오브젝트 버킷 클레임)를 생성하여 백업 스토리지 위치를 구성합니다. {odf-short}을 사용하여 Amazon S3 호환 오브젝트 스토리지 버킷을 구성합니다. {odf-short}은 MultiCloud Object Gateway(NooBaa MCG) 및 Ceph Object Gateway(RGW), 개체 스토리지 서비스라고도 합니다. 이 사용 사례에서는 NooBaa MCG를 백업 스토리지 위치로 사용합니다.
-
aws공급자 플러그인을 사용하여 OADP와 함께 NooBaa MCG 서비스를 사용합니다. - BPA(데이터 보호 애플리케이션)를 백업 스토리지 위치(BSL)로 구성합니다.
- 백업 CR(사용자 정의 리소스)을 생성하고 백업할 애플리케이션 네임스페이스를 지정합니다.
- 백업을 생성하고 확인합니다.
사전 요구 사항
- OADP Operator가 설치되어 있습니다.
- {odf-short} Operator를 설치했습니다.
- 별도의 네임스페이스에서 실행 중인 데이터베이스가 있는 애플리케이션이 있습니다.
절차
다음 예와 같이 OBC 매니페스트 파일을 생성하여 NooBaa MCG 버킷을 요청합니다.
OBC의 예
apiVersion: objectbucket.io/v1alpha1 kind: ObjectBucketClaim metadata: name: test-obc1 namespace: openshift-adp spec: storageClassName: openshift-storage.noobaa.io generateBucketName: test-backup-bucket2 다음 명령을 실행하여 OBC를 생성합니다.
$ oc create -f <obc_file_name>1 - 1
- 오브젝트 버킷 클레임 매니페스트의 파일 이름을 지정합니다.
OBC를 생성할 때 {odf-short}은 오브젝트 버킷 클레임과 동일한 이름의
시크릿및구성 맵을 생성합니다.시크릿에는 버킷 인증 정보가 있으며구성 맵에는 버킷에 액세스하는 데 필요한 정보가 있습니다. 생성된 구성 맵에서 버킷 이름과 버킷 호스트를 가져오려면 다음 명령을 실행합니다.$ oc extract --to=- cm/test-obc1 - 1
test-obc는 OBC의 이름입니다.
출력 예
# BUCKET_NAME backup-c20...41fd # BUCKET_PORT 443 # BUCKET_REGION # BUCKET_SUBREGION # BUCKET_HOST s3.openshift-storage.svc생성된
보안에서 버킷 인증 정보를 가져오려면 다음 명령을 실행합니다.$ oc extract --to=- secret/test-obc출력 예
# AWS_ACCESS_KEY_ID ebYR....xLNMc # AWS_SECRET_ACCESS_KEY YXf...+NaCkdyC3QPym다음 명령을 실행하여
openshift-storage네임스페이스의 s3 경로에서 S3 끝점의 공용 URL을 가져옵니다.$ oc get route s3 -n openshift-storage다음 명령에 표시된 대로 오브젝트 버킷 인증 정보를 사용하여
cloud-credentials파일을 만듭니다.[default] aws_access_key_id=<AWS_ACCESS_KEY_ID> aws_secret_access_key=<AWS_SECRET_ACCESS_KEY>다음 명령에 표시된 대로
cloud-credentials파일 콘텐츠를 사용하여cloud-credentials시크릿을 생성합니다.$ oc create secret generic \ cloud-credentials \ -n openshift-adp \ --from-file cloud=cloud-credentials다음 예와 같이 DPA(Data Protection Application)를 구성합니다.
DPA 예
apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication metadata: name: oadp-backup namespace: openshift-adp spec: configuration: nodeAgent: enable: true uploaderType: kopia velero: defaultPlugins: - aws - openshift - csi defaultSnapshotMoveData: true1 backupLocations: - velero: config: profile: "default" region: noobaa s3Url: https://s3.openshift-storage.svc2 s3ForcePathStyle: "true" insecureSkipTLSVerify: "true" provider: aws default: true credential: key: cloud name: cloud-credentials objectStorage: bucket: <bucket_name>3 prefix: oadp다음 명령을 실행하여 DPA를 생성합니다.
$ oc apply -f <dpa_filename>다음 명령을 실행하여 DPA가 성공적으로 생성되었는지 확인합니다. 예제 출력에서
status오브젝트에type필드가Reconciled으로 설정되어 있음을 확인할 수 있습니다. 즉, DPA가 성공적으로 생성됩니다.$ oc get dpa -o yaml출력 예
apiVersion: v1 items: - apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication metadata: namespace: openshift-adp #...# spec: backupLocations: - velero: config: #...# status: conditions: - lastTransitionTime: "20....9:54:02Z" message: Reconcile complete reason: Complete status: "True" type: Reconciled kind: List metadata: resourceVersion: ""다음 명령을 실행하여 백업 스토리지 위치(BSL)를 사용할 수 있는지 확인합니다.
$ oc get backupstoragelocations.velero.io -n openshift-adp출력 예
NAME PHASE LAST VALIDATED AGE DEFAULT dpa-sample-1 Available 3s 15s true다음 예와 같이 백업 CR을 구성합니다.
백업 CR 예시
apiVersion: velero.io/v1 kind: Backup metadata: name: test-backup namespace: openshift-adp spec: includedNamespaces: - <application_namespace>1 - 1
- 애플리케이션을 백업할 네임스페이스를 지정합니다.
다음 명령을 실행하여 백업 CR을 만듭니다.
$ oc apply -f <backup_cr_filename>
검증
다음 명령을 실행하여 백업 오브젝트가
Completed단계에 있는지 확인합니다. 자세한 내용은 예제 출력을 참조하십시오.$ oc describe backup test-backup -n openshift-adp출력 예
Name: test-backup Namespace: openshift-adp # ....# Status: Backup Item Operations Attempted: 1 Backup Item Operations Completed: 1 Completion Timestamp: 2024-09-25T10:17:01Z Expiration: 2024-10-25T10:16:31Z Format Version: 1.1.0 Hook Status: Phase: Completed Progress: Items Backed Up: 34 Total Items: 34 Start Timestamp: 2024-09-25T10:16:31Z Version: 1 Events: <none>
4.5.2. OADP(OpenShift API for Data Protection) 복원 사용 사례 링크 복사링크가 클립보드에 복사되었습니다!
다음은 OADP를 사용하여 다른 네임스페이스로 백업을 복원하는 사용 사례입니다.
4.5.2.1. OADP를 사용하여 애플리케이션을 다른 네임스페이스로 복원 링크 복사링크가 클립보드에 복사되었습니다!
OADP를 새 대상 네임스페이스 test-restore-application 에 사용하여 애플리케이션 백업을 복원합니다. 백업을 복원하려면 다음 예와 같이 복원 사용자 정의 리소스(CR)를 생성합니다. restore CR에서 소스 네임스페이스는 백업에 포함된 애플리케이션 네임스페이스를 나타냅니다. 그런 다음 프로젝트를 새 복원 네임스페이스로 변경하고 리소스를 확인하여 복원을 확인합니다.
사전 요구 사항
- OADP Operator를 설치했습니다.
- 복원할 애플리케이션의 백업이 있습니다.
프로세스
다음 예와 같이 복원 CR을 생성합니다.
CR 복원 예시
apiVersion: velero.io/v1 kind: Restore metadata: name: test-restore1 namespace: openshift-adp spec: backupName: <backup_name>2 restorePVs: true namespaceMapping: <application_namespace>: test-restore-application3 다음 명령을 실행하여 복원 CR을 적용합니다.
$ oc apply -f <restore_cr_filename>
검증
다음 명령을 실행하여 복원이
완료된단계에 있는지 확인합니다.$ oc describe restores.velero.io <restore_name> -n openshift-adp다음 명령을 실행하여 복원된 네임스페이스
test-restore-application로 변경합니다.$ oc project test-restore-application다음 명령을 실행하여 영구 볼륨 클레임(pvc), 서비스(svc), 배포, 시크릿, 구성 맵과 같은 복원된 리소스를 확인합니다.
$ oc get pvc,svc,deployment,secret,configmap출력 예
NAME STATUS VOLUME persistentvolumeclaim/mysql Bound pvc-9b3583db-...-14b86 NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/mysql ClusterIP 172....157 <none> 3306/TCP 2m56s service/todolist ClusterIP 172.....15 <none> 8000/TCP 2m56s NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/mysql 0/1 1 0 2m55s NAME TYPE DATA AGE secret/builder-dockercfg-6bfmd kubernetes.io/dockercfg 1 2m57s secret/default-dockercfg-hz9kz kubernetes.io/dockercfg 1 2m57s secret/deployer-dockercfg-86cvd kubernetes.io/dockercfg 1 2m57s secret/mysql-persistent-sa-dockercfg-rgp9b kubernetes.io/dockercfg 1 2m57s NAME DATA AGE configmap/kube-root-ca.crt 1 2m57s configmap/openshift-service-ca.crt 1 2m57s
4.5.3. 백업 중 자체 서명된 CA 인증서 포함 링크 복사링크가 클립보드에 복사되었습니다!
DPA(Data Protection Application)에 자체 서명된 CA(인증 기관) 인증서를 추가한 다음 애플리케이션을 백업할 수 있습니다. {odf-first}에서 제공하는 NooBaa 버킷에 백업을 저장합니다.
4.5.3.1. 애플리케이션 및 자체 서명된 CA 인증서 백업 링크 복사링크가 클립보드에 복사되었습니다!
{odf-short}에서 제공하는 s3.openshift-storage.svc 서비스는 자체 서명된 서비스 CA로 서명된 TLS(Transport Layer Security Protocol) 인증서를 사용합니다.
알 수 없는 기관 오류로 서명된 인증서 를 방지하려면 DataProtectionApplication CR(사용자 정의 리소스)의 백업 스토리지 위치(BSL) 섹션에 자체 서명된 CA 인증서를 포함해야 합니다. 이 경우 다음 작업을 완료해야 합니다.
- OBC(오브젝트 버킷 클레임)를 생성하여 NooBaa 버킷을 요청합니다.
- 버킷 세부 정보를 추출합니다.
-
DataProtectionApplicationCR에 자체 서명된 CA 인증서를 포함합니다. - 애플리케이션을 백업합니다.
사전 요구 사항
- OADP Operator가 설치되어 있습니다.
- {odf-short} Operator를 설치했습니다.
- 별도의 네임스페이스에서 실행 중인 데이터베이스가 있는 애플리케이션이 있습니다.
절차
다음 예와 같이 OBC 매니페스트를 생성하여 NooBaa 버킷을 요청합니다.
ObjectBucketClaimCR의 예apiVersion: objectbucket.io/v1alpha1 kind: ObjectBucketClaim metadata: name: test-obc1 namespace: openshift-adp spec: storageClassName: openshift-storage.noobaa.io generateBucketName: test-backup-bucket2 다음 명령을 실행하여 OBC를 생성합니다.
$ oc create -f <obc_file_name>OBC를 생성할 때 {odf-short}은 오브젝트 버킷 클레임과 동일한 이름의
시크릿및ConfigMap을 생성합니다.보안오브젝트에는 버킷 인증 정보가 포함되어 있으며ConfigMap오브젝트에는 버킷에 액세스하는 데 필요한 정보가 포함되어 있습니다. 생성된 구성 맵에서 버킷 이름과 버킷 호스트를 가져오려면 다음 명령을 실행합니다.$ oc extract --to=- cm/test-obc1 - 1
- OBC의 이름은
test-obc입니다.
출력 예
# BUCKET_NAME backup-c20...41fd # BUCKET_PORT 443 # BUCKET_REGION # BUCKET_SUBREGION # BUCKET_HOST s3.openshift-storage.svc보안오브젝트에서 버킷 인증 정보를 가져오려면 다음 명령을 실행합니다.$ oc extract --to=- secret/test-obc출력 예
# AWS_ACCESS_KEY_ID ebYR....xLNMc # AWS_SECRET_ACCESS_KEY YXf...+NaCkdyC3QPym다음 예제 구성을 사용하여 오브젝트 버킷 자격 증명으로
cloud-credentials파일을 생성합니다.[default] aws_access_key_id=<AWS_ACCESS_KEY_ID> aws_secret_access_key=<AWS_SECRET_ACCESS_KEY>다음 명령을 실행하여
cloud-credentials파일 콘텐츠를 사용하여cloud-credentials시크릿을 생성합니다.$ oc create secret generic \ cloud-credentials \ -n openshift-adp \ --from-file cloud=cloud-credentials다음 명령을 실행하여
openshift-service-ca.crt구성 맵에서 서비스 CA 인증서를 추출합니다. 인증서를Base64형식으로 인코딩하고 다음 단계에서 사용할 값을 기록해야 합니다.$ oc get cm/openshift-service-ca.crt \ -o jsonpath='{.data.service-ca\.crt}' | base64 -w0; echo출력 예
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0... ....gpwOHMwaG9CRmk5a3....FLS0tLS0K다음 예와 같이 버킷 이름 및 CA 인증서를 사용하여
DataProtectionApplicationCR 매니페스트 파일을 구성합니다.Example
DataProtectionApplicationCRapiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication metadata: name: oadp-backup namespace: openshift-adp spec: configuration: nodeAgent: enable: true uploaderType: kopia velero: defaultPlugins: - aws - openshift - csi defaultSnapshotMoveData: true backupLocations: - velero: config: profile: "default" region: noobaa s3Url: https://s3.openshift-storage.svc s3ForcePathStyle: "true" insecureSkipTLSVerify: "false"1 provider: aws default: true credential: key: cloud name: cloud-credentials objectStorage: bucket: <bucket_name>2 prefix: oadp caCert: <ca_cert>3 다음 명령을 실행하여
DataProtectionApplicationCR을 생성합니다.$ oc apply -f <dpa_filename>다음 명령을 실행하여
DataProtectionApplicationCR이 성공적으로 생성되었는지 확인합니다.$ oc get dpa -o yaml출력 예
apiVersion: v1 items: - apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication metadata: namespace: openshift-adp #...# spec: backupLocations: - velero: config: #...# status: conditions: - lastTransitionTime: "20....9:54:02Z" message: Reconcile complete reason: Complete status: "True" type: Reconciled kind: List metadata: resourceVersion: ""다음 명령을 실행하여 백업 스토리지 위치(BSL)를 사용할 수 있는지 확인합니다.
$ oc get backupstoragelocations.velero.io -n openshift-adp출력 예
NAME PHASE LAST VALIDATED AGE DEFAULT dpa-sample-1 Available 3s 15s true다음 예제를 사용하여
BackupCR을 구성합니다.BackupCR의 예apiVersion: velero.io/v1 kind: Backup metadata: name: test-backup namespace: openshift-adp spec: includedNamespaces: - <application_namespace>1 - 1
- 애플리케이션을 백업할 네임스페이스를 지정합니다.
다음 명령을 실행하여
BackupCR을 생성합니다.$ oc apply -f <backup_cr_filename>
검증
다음 명령을 실행하여
Backup오브젝트가Completed단계에 있는지 확인합니다.$ oc describe backup test-backup -n openshift-adp출력 예
Name: test-backup Namespace: openshift-adp # ....# Status: Backup Item Operations Attempted: 1 Backup Item Operations Completed: 1 Completion Timestamp: 2024-09-25T10:17:01Z Expiration: 2024-10-25T10:16:31Z Format Version: 1.1.0 Hook Status: Phase: Completed Progress: Items Backed Up: 34 Total Items: 34 Start Timestamp: 2024-09-25T10:16:31Z Version: 1 Events: <none>