4.5. OADP のユースケース


4.5.1. OpenShift API for Data Protection と Red Hat OpenShift Data Foundation (ODF) を使用したバックアップ

以下は、OADP と ODF を使用してアプリケーションをバックアップするユースケースです。

4.5.1.1. OADP と ODF を使用したアプリケーションのバックアップ

このユースケースでは、OADP を使用してアプリケーションをバックアップし、Red Hat OpenShift Data Foundation (ODF) によって提供されるオブジェクトストレージにバックアップを保存します。

  • Backup Storage Location を設定するために、Object Bucket Claim (OBC) を作成します。ODF を使用して、Amazon S3 互換のオブジェクトストレージバケットを設定します。ODF は、MultiCloud Object Gateway (NooBaa MCG) と Ceph Object Gateway (RADOS Gateway (RGW) とも呼ばれる) オブジェクトストレージサービスを提供します。このユースケースでは、Backup Storage Location として NooBaa MCG を使用します。
  • aws プロバイダープラグインを使用して、OADP で NooBaa MCG サービスを使用します。
  • Backup Storage Location (BSL) を使用して Data Protection Application (DPA) を設定します。
  • バックアップカスタムリソース (CR) を作成し、バックアップするアプリケーションの namespace を指定します。
  • バックアップを作成して検証します。

前提条件

  • OADP Operator をインストールした。
  • ODF Operator をインストールした。
  • 別の namespace で実行されているデータベースを持つアプリケーションがある。

手順

  1. 次の例に示すように、NooBaa MCG バケットを要求する OBC マニフェストファイルを作成します。

    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
    Copy to Clipboard

    1
    Object Bucket Claim の名前。
    2
    バケットの名前。
  2. 次のコマンドを実行して OBC を作成します。

    $ oc create -f <obc_file_name> 
    1
    Copy to Clipboard
    1
    Object Bucket Claim マニフェストのファイル名を指定します。
  3. OBC を作成すると、ODF が Object Bucket Claim と同じ名前の secretconfig map を作成します。secret にはバケットの認証情報が含まれており、config map にはバケットにアクセスするための情報が含まれています。生成された config map からバケット名とバケットホストを取得するには、次のコマンドを実行します。

    $ oc extract --to=- cm/test-obc 
    1
    Copy to Clipboard
    1
    test-obc は OBC の名前です。

    出力例

    # BUCKET_NAME
    backup-c20...41fd
    # BUCKET_PORT
    443
    # BUCKET_REGION
    
    # BUCKET_SUBREGION
    
    # BUCKET_HOST
    s3.openshift-storage.svc
    Copy to Clipboard

  4. 生成された secret からバケットの認証情報を取得するには、次のコマンドを実行します。

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

    出力例

    # AWS_ACCESS_KEY_ID
    ebYR....xLNMc
    # AWS_SECRET_ACCESS_KEY
    YXf...+NaCkdyC3QPym
    Copy to Clipboard

  5. 次のコマンドを実行して、openshift-storage namespace の s3 ルートから S3 エンドポイントのパブリック URL を取得します。

    $ oc get route s3 -n openshift-storage
    Copy to Clipboard
  6. 次のコマンドに示すように、オブジェクトバケットの認証情報を含む cloud-credentials ファイルを作成します。

    [default]
    aws_access_key_id=<AWS_ACCESS_KEY_ID>
    aws_secret_access_key=<AWS_SECRET_ACCESS_KEY>
    Copy to Clipboard
  7. 次のコマンドに示すように、cloud-credentials ファイルの内容を使用して cloud-credentials シークレットを作成します。

    $ oc create secret generic \
      cloud-credentials \
      -n openshift-adp \
      --from-file cloud=cloud-credentials
    Copy to Clipboard
  8. 次の例に示すように、Data Protection Application (DPA) を設定します。

    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
    Copy to Clipboard

    1
    true に設定し、OADP Data Mover を使用して Container Storage Interface (CSI) スナップショットをリモートオブジェクトストレージに移動できるようにします。
    2
    これは ODF ストレージの S3 URL です。
    3
    バケット名を指定します。
  9. 次のコマンドを実行して DPA を作成します。

    $ oc apply -f <dpa_filename>
    Copy to Clipboard
  10. 次のコマンドを実行して、DPA が正常に作成されたことを確認します。出力例から、status オブジェクトの type フィールドが Reconciled に設定されていることがわかります。これは、DPA が正常に作成されたことを意味します。

    $ oc get dpa -o yaml
    Copy to Clipboard

    出力例

    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: ""
    Copy to Clipboard

  11. 次のコマンドを実行して、Backup Storage Location (BSL) が使用可能であることを確認します。

    $ oc get backupstoragelocations.velero.io -n openshift-adp
    Copy to Clipboard

    出力例

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

  12. 次の例に示すように、バックアップ CR を設定します。

    バックアップ CR の例

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

    1
    バックアップするアプリケーションの namespace を指定します。
  13. 次のコマンドを実行してバックアップ CR を作成します。

    $ oc apply -f <backup_cr_filename>
    Copy to Clipboard

検証

  • 次のコマンドを実行して、バックアップオブジェクトが Completed フェーズにあることを確認します。詳細は、出力例を参照してください。

    $ oc describe backup test-backup -n openshift-adp
    Copy to Clipboard

    出力例

    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>
    Copy to Clipboard

4.5.2. OpenShift API for Data Protection (OADP) による復元のユースケース

以下は、OADP を使用してバックアップを別の namespace に復元するユースケースです。

4.5.2.1. OADP を使用してアプリケーションを別の namespace に復元する

OADP を使用して、アプリケーションのバックアップを、新しいターゲット namespace の test-restore-application に復元します。バックアップを復元するには、次の例に示すように、復元カスタムリソース (CR) を作成します。この復元 CR では、バックアップに含めたアプリケーションの namespace を、ソース namespace が参照します。その後、新しい復元先の namespace にプロジェクトを切り替えてリソースを確認することで、復元を検証します。

前提条件

  • 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
    Copy to Clipboard

    1
    復元 CR の名前。
    2
    バックアップの名前を指定します。
    3
    namespaceMapping は、ソースアプリケーションの namespace をターゲットアプリケーションの namespace にマップします。バックアップしたアプリケーションの namespace を指定します。test-restore-application は、バックアップを復元するターゲット namespace です。
  2. 次のコマンドを実行して復元 CR を適用します。

    $ oc apply -f <restore_cr_filename>
    Copy to Clipboard

検証

  1. 次のコマンドを実行して、復元が Completed フェーズにあることを確認します。

    $ oc describe restores.velero.io <restore_name> -n openshift-adp
    Copy to Clipboard
  2. 次のコマンドを実行して、復元先の namespace test-restore-application に切り替えます。

    $ oc project test-restore-application
    Copy to Clipboard
  3. 次のコマンドを実行して、永続ボリューム要求 (pvc)、サービス (svc)、デプロイメント、シークレット、config map などの復元されたリソースを確認します。

    $ oc get pvc,svc,deployment,secret,configmap
    Copy to Clipboard

    出力例

    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
    Copy to Clipboard

4.5.3. バックアップ時の自己署名 CA 証明書の追加

自己署名認証局 (CA) 証明書を Data Protection Application (DPA) に含めてから、アプリケーションをバックアップできます。バックアップは、Red Hat OpenShift Data Foundation (ODF) が提供する NooBaa バケットに保存します。

4.5.3.1. アプリケーションとその自己署名 CA 証明書のバックアップ

ODF によって提供される s3.openshift-storage.svc サービスは、自己署名サービス CA で署名された Transport Layer Security (TLS) プロトコル証明書を使用します。

certificate signed by unknown authority エラーを防ぐには、DataProtectionApplication カスタムリソース (CR) の Backup Storage Location (BSL) セクションに自己署名 CA 証明書を含める必要があります。この場合、次のタスクを完了する必要があります。

  • Object Bucket Claim (OBC) を作成して、NooBaa バケットを要求します。
  • バケットの詳細を抽出します。
  • DataProtectionApplication CR に自己署名 CA 証明書を含めます。
  • アプリケーションをバックアップします。

前提条件

  • OADP Operator をインストールした。
  • ODF Operator をインストールした。
  • 別の namespace で実行されているデータベースを持つアプリケーションがある。

手順

  1. 次の例に示すように、NooBaa バケットを要求する OBC マニフェストを作成します。

    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
    Copy to Clipboard

    1
    Object Bucket Claim の名前を指定します。
    2
    バケットの名前を指定します。
  2. 次のコマンドを実行して OBC を作成します。

    $ oc create -f <obc_file_name>
    Copy to Clipboard
  3. OBC を作成すると、ODF が Object Bucket Claim と同じ名前の secretConfigMap を作成します。secret オブジェクトにはバケットの認証情報が含まれ、ConfigMap オブジェクトにはバケットにアクセスするための情報が含まれています。生成された config map からバケット名とバケットホストを取得するには、次のコマンドを実行します。

    $ oc extract --to=- cm/test-obc 
    1
    Copy to Clipboard
    1
    OBC の名前は test-obc です。

    出力例

    # BUCKET_NAME
    backup-c20...41fd
    # BUCKET_PORT
    443
    # BUCKET_REGION
    
    # BUCKET_SUBREGION
    
    # BUCKET_HOST
    s3.openshift-storage.svc
    Copy to Clipboard

  4. secret オブジェクトからバケット認証情報を取得するには、次のコマンドを実行します。

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

    出力例

    # AWS_ACCESS_KEY_ID
    ebYR....xLNMc
    # AWS_SECRET_ACCESS_KEY
    YXf...+NaCkdyC3QPym
    Copy to Clipboard

  5. 次の設定例を使用して、オブジェクトバケットの認証情報を含む cloud-credentials ファイルを作成します。

    [default]
    aws_access_key_id=<AWS_ACCESS_KEY_ID>
    aws_secret_access_key=<AWS_SECRET_ACCESS_KEY>
    Copy to Clipboard
  6. 次のコマンドを実行して、cloud-credentials ファイルの内容を使用して cloud-credentials シークレットを作成します。

    $ oc create secret generic \
      cloud-credentials \
      -n openshift-adp \
      --from-file cloud=cloud-credentials
    Copy to Clipboard
  7. 次のコマンドを実行して、openshift-service-ca.crt config map からサービス CA 証明書を抽出します。証明書を Base64 形式で必ずエンコードし、次のステップで使用する値をメモしてください。

    $ oc get cm/openshift-service-ca.crt \
      -o jsonpath='{.data.service-ca\.crt}' | base64 -w0; echo
    Copy to Clipboard

    出力例

    LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0...
    ....gpwOHMwaG9CRmk5a3....FLS0tLS0K
    Copy to Clipboard

  8. 次の例に示すように、バケット名と CA 証明書を使用して DataProtectionApplication CR マニフェストファイルを設定します。

    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
    Copy to Clipboard

    1
    insecureSkipTLSVerify フラグは true または false に設定できます。"true" に設定すると、SSL/TLS セキュリティーが無効になります。false に設定すると、SSL/TLS セキュリティーが有効になります。
    2
    前のステップで抽出したバケットの名前を指定します。
    3
    前のステップの Base64 でエンコードした証明書をコピーして貼り付けます。
  9. 次のコマンドを実行して、DataProtectionApplication CR を作成します。

    $ oc apply -f <dpa_filename>
    Copy to Clipboard
  10. 次のコマンドを実行して、DataProtectionApplication CR が正常に作成されたことを確認します。

    $ oc get dpa -o yaml
    Copy to Clipboard

    出力例

    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: ""
    Copy to Clipboard

  11. 次のコマンドを実行して、Backup Storage Location (BSL) が使用可能であることを確認します。

    $ oc get backupstoragelocations.velero.io -n openshift-adp
    Copy to Clipboard

    出力例

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

  12. 次の例を使用して、Backup CR を設定します。

    Backup CR の例

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

    1
    バックアップするアプリケーションの namespace を指定します。
  13. 次のコマンドを実行して Backup CR を作成します。

    $ oc apply -f <backup_cr_filename>
    Copy to Clipboard

検証

  • 次のコマンドを実行して、Backup オブジェクトが Completed フェーズにあることを確認します。

    $ oc describe backup test-backup -n openshift-adp
    Copy to Clipboard

    出力例

    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>
    Copy to Clipboard

4.5.4. legacy-aws Velero プラグインの使用

AWS S3 互換の Backup Storage Location を使用している場合、アプリケーションのバックアップ中に SignatureDoesNotMatch エラーが発生する可能性があります。このエラーは、一部の Backup Storage Location で、新しい AWS SDK for Go V2 と互換性のない古いバージョンの S3 API がまだ使用されているために発生します。この問題を解決するには、DataProtectionApplication カスタムリソース (CR) で legacy-aws Velero プラグインを使用できます。legacy-aws Velero プラグインは、従来の S3 API と互換性のある古い AWS SDK for Go V1 を使用します。これによりバックアップが正常に実行されます。

4.5.4.1. DataProtectionApplication CR で legacy-aws Velero プラグインを使用する

次のユースケースでは、legacy-aws Velero プラグインを使用して DataProtectionApplication CR を設定し、アプリケーションをバックアップします。

注記

選択した Backup Storage Location に応じて、DataProtectionApplication CR で legacy-aws または aws プラグインのいずれかを使用できます。DataProtectionApplication CR で両方のプラグインを使用すると、aws and legacy-aws can not be both specified in DPA spec.configuration.velero.defaultPlugins というエラーが発生します。

前提条件

  • OADP Operator がインストールされている。
  • バックアップの場所として AWS S3 互換のオブジェクトストレージが設定されている。
  • 別の namespace で実行されているデータベースを持つアプリケーションがある。

手順

  1. 次の例に示すように、legacy-aws Velero プラグインを使用するように DataProtectionApplication CR を設定します。

    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:
            - legacy-aws 
    1
    
            - openshift
            - csi
          defaultSnapshotMoveData: true
      backupLocations:
        - velero:
            config:
              profile: "default"
              region: noobaa
              s3Url: https://s3.openshift-storage.svc
              s3ForcePathStyle: "true"
              insecureSkipTLSVerify: "true"
            provider: aws
            default: true
            credential:
              key: cloud
              name:  cloud-credentials
            objectStorage:
              bucket: <bucket_name> 
    2
    
              prefix: oadp
    Copy to Clipboard

    1
    legacy-aws プラグインを使用します。
    2
    バケット名を指定します。
  2. 次のコマンドを実行して、DataProtectionApplication CR を作成します。

    $ oc apply -f <dpa_filename>
    Copy to Clipboard
  3. 次のコマンドを実行して、DataProtectionApplication CR が正常に作成されたことを確認します。出力例から、status オブジェクトの type フィールドが Reconciled に設定され、status フィールドが "True" に設定されていることがわかります。このステータスは、DataProtectionApplication CR が正常に作成されたことを示します。

    $ oc get dpa -o yaml
    Copy to Clipboard

    出力例

    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: ""
    Copy to Clipboard

  4. 次のコマンドを実行して、Backup Storage Location (BSL) が使用可能であることを確認します。

    $ oc get backupstoragelocations.velero.io -n openshift-adp
    Copy to Clipboard

    出力例

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

  5. 次の例に示すように、Backup CR を設定します。

    バックアップ CR の例

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

    1
    バックアップするアプリケーションの namespace を指定します。
  6. 次のコマンドを実行して Backup CR を作成します。

    $ oc apply -f <backup_cr_filename>
    Copy to Clipboard

検証

  • 次のコマンドを実行して、バックアップオブジェクトが Completed フェーズにあることを確認します。詳細は、出力例を参照してください。

    $ oc describe backups.velero.io test-backup -n openshift-adp
    Copy to Clipboard

    出力例

    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>
    Copy to Clipboard

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat