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를 설치했습니다.
  • 별도의 네임스페이스에서 실행 중인 데이터베이스가 있는 애플리케이션이 있습니다.

절차

  1. 다음 예와 같이 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

    1
    오브젝트 버킷 클레임의 이름입니다.
    2
    버킷의 이름입니다.
  2. 다음 명령을 실행하여 OBC를 생성합니다.

    $ oc create -f <obc_file_name> 1
    1
    오브젝트 버킷 클레임 매니페스트의 파일 이름을 지정합니다.
  3. 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

  4. 생성된 보안 에서 버킷 인증 정보를 가져오려면 다음 명령을 실행합니다.

    $ oc extract --to=- secret/test-obc

    출력 예

    # AWS_ACCESS_KEY_ID
    ebYR....xLNMc
    # AWS_SECRET_ACCESS_KEY
    YXf...+NaCkdyC3QPym

  5. 다음 명령을 실행하여 openshift-storage 네임스페이스의 s3 경로에서 S3 끝점의 공용 URL을 가져옵니다.

    $ oc get route s3 -n openshift-storage
  6. 다음 명령에 표시된 대로 오브젝트 버킷 인증 정보를 사용하여 cloud-credentials 파일을 만듭니다.

    [default]
    aws_access_key_id=<AWS_ACCESS_KEY_ID>
    aws_secret_access_key=<AWS_SECRET_ACCESS_KEY>
  7. 다음 명령에 표시된 대로 cloud-credentials 파일 콘텐츠를 사용하여 cloud-credentials 시크릿을 생성합니다.

    $ oc create secret generic \
      cloud-credentials \
      -n openshift-adp \
      --from-file cloud=cloud-credentials
  8. 다음 예와 같이 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

    1
    OADP Data Mover를 사용하여 CSI(Container Storage Interface) 스냅샷을 원격 오브젝트 스토리지로 이동하려면 true로 설정합니다.
    2
    {odf-short} 스토리지의 S3 URL입니다.
    3
    버킷 이름을 지정합니다.
  9. 다음 명령을 실행하여 DPA를 생성합니다.

    $ oc apply -f <dpa_filename>
  10. 다음 명령을 실행하여 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: ""

  11. 다음 명령을 실행하여 백업 스토리지 위치(BSL)를 사용할 수 있는지 확인합니다.

    $ oc get backupstoragelocations.velero.io -n openshift-adp

    출력 예

    NAME           PHASE       LAST VALIDATED   AGE   DEFAULT
    dpa-sample-1   Available   3s               15s   true

  12. 다음 예와 같이 백업 CR을 구성합니다.

    백업 CR의 예

    apiVersion: velero.io/v1
    kind: Backup
    metadata:
      name: test-backup
      namespace: openshift-adp
    spec:
      includedNamespaces:
      - <application_namespace> 1

    1
    애플리케이션을 백업할 네임스페이스를 지정합니다.
  13. 다음 명령을 실행하여 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가 설치되어 있습니다.
  • 복원할 애플리케이션의 백업이 있습니다.

절차

  1. 다음 예와 같이 복원 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

    1
    복원 CR의 이름입니다.
    2
    백업 이름을 지정합니다.
    3
    namespaceMapping 은 소스 애플리케이션 네임스페이스를 대상 애플리케이션 네임스페이스에 매핑합니다. 백업한 애플리케이션 네임스페이스를 지정합니다. test-restore-application 은 백업을 복원하려는 대상 네임스페이스입니다.
  2. 다음 명령을 실행하여 복원 CR을 적용합니다.

    $ oc apply -f <restore_cr_filename>

검증

  1. 다음 명령을 실행하여 복원이 완료된 단계에 있는지 확인합니다.

    $ oc describe restores.velero.io <restore_name> -n openshift-adp
  2. 다음 명령을 실행하여 복원된 네임스페이스 test-restore-application 로 변경합니다.

    $ oc project test-restore-application
  3. 다음 명령을 실행하여 영구 볼륨 클레임(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를 설치했습니다.
  • 별도의 네임스페이스에서 실행 중인 데이터베이스가 있는 애플리케이션이 있습니다.

절차

  1. 다음 예와 같이 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

    1
    오브젝트 버킷 클레임의 이름을 지정합니다.
    2
    버킷의 이름을 지정합니다.
  2. 다음 명령을 실행하여 OBC를 생성합니다.

    $ oc create -f <obc_file_name>
  3. 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

  4. 보안 오브젝트에서 버킷 인증 정보를 가져오려면 다음 명령을 실행합니다.

    $ oc extract --to=- secret/test-obc

    출력 예

    # AWS_ACCESS_KEY_ID
    ebYR....xLNMc
    # AWS_SECRET_ACCESS_KEY
    YXf...+NaCkdyC3QPym

  5. 다음 예제 구성을 사용하여 오브젝트 버킷 자격 증명으로 cloud-credentials 파일을 생성합니다.

    [default]
    aws_access_key_id=<AWS_ACCESS_KEY_ID>
    aws_secret_access_key=<AWS_SECRET_ACCESS_KEY>
  6. 다음 명령을 실행하여 cloud-credentials 파일 콘텐츠를 사용하여 cloud-credentials 시크릿을 생성합니다.

    $ oc create secret generic \
      cloud-credentials \
      -n openshift-adp \
      --from-file cloud=cloud-credentials
  7. 다음 명령을 실행하여 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

  8. 다음 예와 같이 버킷 이름 및 CA 인증서를 사용하여 DataProtectionApplication CR 매니페스트 파일을 구성합니다.

    Example DataProtectionApplication CR

    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
      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

    1
    insecureSkipTLSVerify 플래그는 true 또는 false 로 설정할 수 있습니다. "true"로 설정하면 SSL/TLS 보안이 비활성화됩니다. false 로 설정하면 SSL/TLS 보안이 활성화됩니다.
    2
    이전 단계에서 추출한 버킷의 이름을 지정합니다.
    3
    이전 단계에서 Base64 로 인코딩된 인증서를 복사하여 붙여넣습니다.
  9. 다음 명령을 실행하여 DataProtectionApplication CR을 생성합니다.

    $ oc apply -f <dpa_filename>
  10. 다음 명령을 실행하여 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: ""

  11. 다음 명령을 실행하여 백업 스토리지 위치(BSL)를 사용할 수 있는지 확인합니다.

    $ oc get backupstoragelocations.velero.io -n openshift-adp

    출력 예

    NAME           PHASE       LAST VALIDATED   AGE   DEFAULT
    dpa-sample-1   Available   3s               15s   true

  12. 다음 예제를 사용하여 Backup CR을 구성합니다.

    Backup CR의 예

    apiVersion: velero.io/v1
    kind: Backup
    metadata:
      name: test-backup
      namespace: openshift-adp
    spec:
      includedNamespaces:
      - <application_namespace> 1

    1
    애플리케이션을 백업할 네임스페이스를 지정합니다.
  13. 다음 명령을 실행하여 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>

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.