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-obc 1 namespace: openshift-adp spec: storageClassName: openshift-storage.noobaa.io generateBucketName: test-backup-bucket 2
다음 명령을 실행하여 OBC를 생성합니다.
$ oc create -f <obc_file_name> 1
- 1
- 오브젝트 버킷 클레임 매니페스트의 파일 이름을 지정합니다.
OBC를 생성할 때 {odf-short}은 오브젝트 버킷 클레임과 동일한 이름의
시크릿
및구성 맵
을 생성합니다.시크릿에
는 버킷 인증 정보가 있으며구성 맵에
는 버킷에 액세스하는 데 필요한 정보가 있습니다. 생성된 구성 맵에서 버킷 이름과 버킷 호스트를 가져오려면 다음 명령을 실행합니다.$ oc extract --to=- cm/test-obc 1
- 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
$ 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: true 1 backupLocations: - velero: config: profile: "default" region: noobaa s3Url: https://s3.openshift-storage.svc 2 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
- 애플리케이션을 백업할 네임스페이스를 지정합니다.
다음 명령을 실행하여 backup 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-restore 1 namespace: openshift-adp spec: backupName: <backup_name> 2 restorePVs: true namespaceMapping: <application_namespace>: test-restore-application 3
다음 명령을 실행하여 복원 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 버킷을 요청합니다.
- 버킷 세부 정보를 추출합니다.
-
DataProtectionApplication
CR에 자체 서명된 CA 인증서를 포함합니다. - 애플리케이션을 백업합니다.
사전 요구 사항
- OADP Operator가 설치되어 있습니다.
- {odf-short} Operator를 설치했습니다.
- 별도의 네임스페이스에서 실행 중인 데이터베이스가 있는 애플리케이션이 있습니다.
절차
다음 예와 같이 OBC 매니페스트를 생성하여 NooBaa 버킷을 요청합니다.
ObjectBucketClaim
CR의 예apiVersion: objectbucket.io/v1alpha1 kind: ObjectBucketClaim metadata: name: test-obc 1 namespace: openshift-adp spec: storageClassName: openshift-storage.noobaa.io generateBucketName: test-backup-bucket 2
다음 명령을 실행하여 OBC를 생성합니다.
$ oc create -f <obc_file_name>
OBC를 생성할 때 {odf-short}은 오브젝트 버킷 클레임과 동일한 이름의
시크릿
및ConfigMap
을 생성합니다.보안
오브젝트에는 버킷 인증 정보가 포함되어 있으며ConfigMap
오브젝트에는 버킷에 액세스하는 데 필요한 정보가 포함되어 있습니다. 생성된 구성 맵에서 버킷 이름과 버킷 호스트를 가져오려면 다음 명령을 실행합니다.$ oc extract --to=- cm/test-obc 1
- 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 인증서를 사용하여
DataProtectionApplication
CR 매니페스트 파일을 구성합니다.Example
DataProtectionApplication
CRapiVersion: 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
다음 명령을 실행하여
DataProtectionApplication
CR을 생성합니다.$ oc apply -f <dpa_filename>
다음 명령을 실행하여
DataProtectionApplication
CR이 성공적으로 생성되었는지 확인합니다.$ 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
다음 예제를 사용하여
Backup
CR을 구성합니다.Backup
CR의 예apiVersion: velero.io/v1 kind: Backup metadata: name: test-backup namespace: openshift-adp spec: includedNamespaces: - <application_namespace> 1
- 1
- 애플리케이션을 백업할 네임스페이스를 지정합니다.
다음 명령을 실행하여
Backup
CR을 생성합니다.$ 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>