5.5. OADP のユースケース
5.5.1. OpenShift API for Data Protection と Red Hat OpenShift Data Foundation (ODF) を使用したバックアップ
以下は、OADP と ODF を使用してアプリケーションをバックアップするユースケースです。
5.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 で実行されているデータベースを持つアプリケーションがある。
手順
次の例に示すように、NooBaa MCG バケットを要求する OBC マニフェストファイルを作成します。
OBC の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: objectbucket.io/v1alpha1 kind: ObjectBucketClaim metadata: name: test-obc namespace: openshift-adp spec: storageClassName: openshift-storage.noobaa.io generateBucketName: test-backup-bucket
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 を作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc create -f <obc_file_name>
$ oc create -f <obc_file_name>
1 - 1
- Object Bucket Claim マニフェストのファイル名を指定します。
OBC を作成すると、ODF が Object Bucket Claim と同じ名前の
secret
とconfig map
を作成します。secret
にはバケットの認証情報が含まれており、config map
にはバケットにアクセスするための情報が含まれています。生成された config map からバケット名とバケットホストを取得するには、次のコマンドを実行します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc extract --to=- cm/test-obc
$ oc extract --to=- cm/test-obc
1 - 1
test-obc
は OBC の名前です。
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow BUCKET_NAME BUCKET_PORT BUCKET_REGION BUCKET_SUBREGION BUCKET_HOST
# BUCKET_NAME backup-c20...41fd # BUCKET_PORT 443 # BUCKET_REGION # BUCKET_SUBREGION # BUCKET_HOST s3.openshift-storage.svc
生成された
secret
からバケットの認証情報を取得するには、次のコマンドを実行します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc extract --to=- secret/test-obc
$ oc extract --to=- secret/test-obc
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY
# AWS_ACCESS_KEY_ID ebYR....xLNMc # AWS_SECRET_ACCESS_KEY YXf...+NaCkdyC3QPym
次のコマンドを実行して、
openshift-storage
namespace の s3 ルートから S3 エンドポイントのパブリック URL を取得します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get route s3 -n openshift-storage
$ oc get route s3 -n openshift-storage
次のコマンドに示すように、オブジェクトバケットの認証情報を含む
cloud-credentials
ファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow [default] aws_access_key_id=<AWS_ACCESS_KEY_ID> aws_secret_access_key=<AWS_SECRET_ACCESS_KEY>
[default] aws_access_key_id=<AWS_ACCESS_KEY_ID> aws_secret_access_key=<AWS_SECRET_ACCESS_KEY>
次のコマンドに示すように、
cloud-credentials
ファイルの内容を使用してcloud-credentials
シークレットを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc create secret generic \ cloud-credentials \ -n openshift-adp \ --from-file cloud=cloud-credentials
$ oc create secret generic \ cloud-credentials \ -n openshift-adp \ --from-file cloud=cloud-credentials
次の例に示すように、Data Protection Application (DPA) を設定します。
DPA の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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: "true" provider: aws default: true credential: key: cloud name: cloud-credentials objectStorage: bucket: <bucket_name> prefix: oadp
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 を作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc apply -f <dpa_filename>
$ oc apply -f <dpa_filename>
次のコマンドを実行して、DPA が正常に作成されたことを確認します。出力例から、
status
オブジェクトのtype
フィールドがReconciled
に設定されていることがわかります。これは、DPA が正常に作成されたことを意味します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get dpa -o yaml
$ oc get dpa -o yaml
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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: ""
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: ""
次のコマンドを実行して、Backup Storage Location (BSL) が使用可能であることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get backupstoragelocations.velero.io -n openshift-adp
$ oc get backupstoragelocations.velero.io -n openshift-adp
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NAME PHASE LAST VALIDATED AGE DEFAULT dpa-sample-1 Available 3s 15s true
NAME PHASE LAST VALIDATED AGE DEFAULT dpa-sample-1 Available 3s 15s true
次の例に示すように、バックアップ CR を設定します。
バックアップ CR の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: velero.io/v1 kind: Backup metadata: name: test-backup namespace: openshift-adp spec: includedNamespaces: - <application_namespace>
apiVersion: velero.io/v1 kind: Backup metadata: name: test-backup namespace: openshift-adp spec: includedNamespaces: - <application_namespace>
1 - 1
- バックアップするアプリケーションの namespace を指定します。
次のコマンドを実行してバックアップ CR を作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc apply -f <backup_cr_filename>
$ oc apply -f <backup_cr_filename>
検証
次のコマンドを実行して、バックアップオブジェクトが
Completed
フェーズにあることを確認します。詳細は、出力例を参照してください。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc describe backup test-backup -n openshift-adp
$ oc describe backup test-backup -n openshift-adp
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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>
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>
5.5.2. OpenShift API for Data Protection (OADP) による復元のユースケース
以下は、OADP を使用してバックアップを別の namespace に復元するユースケースです。
5.5.2.1. OADP を使用してアプリケーションを別の namespace に復元する
OADP を使用して、アプリケーションのバックアップを、新しいターゲット namespace の test-restore-application
に復元します。バックアップを復元するには、次の例に示すように、復元カスタムリソース (CR) を作成します。この復元 CR では、バックアップに含めたアプリケーションの namespace を、ソース namespace が参照します。その後、新しい復元先の namespace にプロジェクトを切り替えてリソースを確認することで、復元を検証します。
前提条件
- OADP Operator をインストールした。
- 復元するアプリケーションのバックアップがある。
手順
次の例に示すように、復元 CR を作成します。
復元 CR の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: velero.io/v1 kind: Restore metadata: name: test-restore namespace: openshift-adp spec: backupName: <backup_name> restorePVs: true namespaceMapping: <application_namespace>: test-restore-application
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 を適用します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc apply -f <restore_cr_filename>
$ oc apply -f <restore_cr_filename>
検証
次のコマンドを実行して、復元が
Completed
フェーズにあることを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc describe restores.velero.io <restore_name> -n openshift-adp
$ oc describe restores.velero.io <restore_name> -n openshift-adp
次のコマンドを実行して、復元先の namespace
test-restore-application
に切り替えます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc project test-restore-application
$ oc project test-restore-application
次のコマンドを実行して、永続ボリューム要求 (pvc)、サービス (svc)、デプロイメント、シークレット、config map などの復元されたリソースを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get pvc,svc,deployment,secret,configmap
$ oc get pvc,svc,deployment,secret,configmap
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
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
5.5.3. バックアップ時の自己署名 CA 証明書の追加
自己署名認証局 (CA) 証明書を Data Protection Application (DPA) に含めてから、アプリケーションをバックアップできます。バックアップは、Red Hat OpenShift Data Foundation (ODF) が提供する NooBaa バケットに保存します。
5.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 で実行されているデータベースを持つアプリケーションがある。
手順
次の例に示すように、NooBaa バケットを要求する OBC マニフェストを作成します。
ObjectBucketClaim
CR の例Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: objectbucket.io/v1alpha1 kind: ObjectBucketClaim metadata: name: test-obc namespace: openshift-adp spec: storageClassName: openshift-storage.noobaa.io generateBucketName: test-backup-bucket
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 を作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc create -f <obc_file_name>
$ oc create -f <obc_file_name>
OBC を作成すると、ODF が Object Bucket Claim と同じ名前の
secret
とConfigMap
を作成します。secret
オブジェクトにはバケットの認証情報が含まれ、ConfigMap
オブジェクトにはバケットにアクセスするための情報が含まれています。生成された config map からバケット名とバケットホストを取得するには、次のコマンドを実行します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc extract --to=- cm/test-obc
$ oc extract --to=- cm/test-obc
1 - 1
- OBC の名前は
test-obc
です。
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow BUCKET_NAME BUCKET_PORT BUCKET_REGION BUCKET_SUBREGION BUCKET_HOST
# BUCKET_NAME backup-c20...41fd # BUCKET_PORT 443 # BUCKET_REGION # BUCKET_SUBREGION # BUCKET_HOST s3.openshift-storage.svc
secret
オブジェクトからバケット認証情報を取得するには、次のコマンドを実行します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc extract --to=- secret/test-obc
$ oc extract --to=- secret/test-obc
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY
# AWS_ACCESS_KEY_ID ebYR....xLNMc # AWS_SECRET_ACCESS_KEY YXf...+NaCkdyC3QPym
次の設定例を使用して、オブジェクトバケットの認証情報を含む
cloud-credentials
ファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow [default] aws_access_key_id=<AWS_ACCESS_KEY_ID> aws_secret_access_key=<AWS_SECRET_ACCESS_KEY>
[default] aws_access_key_id=<AWS_ACCESS_KEY_ID> aws_secret_access_key=<AWS_SECRET_ACCESS_KEY>
次のコマンドを実行して、
cloud-credentials
ファイルの内容を使用してcloud-credentials
シークレットを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc create secret generic \ cloud-credentials \ -n openshift-adp \ --from-file cloud=cloud-credentials
$ oc create secret generic \ cloud-credentials \ -n openshift-adp \ --from-file cloud=cloud-credentials
次のコマンドを実行して、
openshift-service-ca.crt
config map からサービス CA 証明書を抽出します。証明書をBase64
形式で必ずエンコードし、次のステップで使用する値をメモしてください。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get cm/openshift-service-ca.crt \ -o jsonpath='{.data.service-ca\.crt}' | base64 -w0; echo
$ oc get cm/openshift-service-ca.crt \ -o jsonpath='{.data.service-ca\.crt}' | base64 -w0; echo
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0... ....gpwOHMwaG9CRmk5a3....FLS0tLS0K
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0... ....gpwOHMwaG9CRmk5a3....FLS0tLS0K
次の例に示すように、バケット名と CA 証明書を使用して
DataProtectionApplication
CR マニフェストファイルを設定します。DataProtectionApplication
CR の例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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" provider: aws default: true credential: key: cloud name: cloud-credentials objectStorage: bucket: <bucket_name> prefix: oadp caCert: <ca_cert>
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 次のコマンドを実行して、
DataProtectionApplication
CR を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc apply -f <dpa_filename>
$ oc apply -f <dpa_filename>
次のコマンドを実行して、
DataProtectionApplication
CR が正常に作成されたことを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get dpa -o yaml
$ oc get dpa -o yaml
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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: ""
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: ""
次のコマンドを実行して、Backup Storage Location (BSL) が使用可能であることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get backupstoragelocations.velero.io -n openshift-adp
$ oc get backupstoragelocations.velero.io -n openshift-adp
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NAME PHASE LAST VALIDATED AGE DEFAULT dpa-sample-1 Available 3s 15s true
NAME PHASE LAST VALIDATED AGE DEFAULT dpa-sample-1 Available 3s 15s true
次の例を使用して、
Backup
CR を設定します。Backup
CR の例Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: velero.io/v1 kind: Backup metadata: name: test-backup namespace: openshift-adp spec: includedNamespaces: - <application_namespace>
apiVersion: velero.io/v1 kind: Backup metadata: name: test-backup namespace: openshift-adp spec: includedNamespaces: - <application_namespace>
1 - 1
- バックアップするアプリケーションの namespace を指定します。
次のコマンドを実行して
Backup
CR を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc apply -f <backup_cr_filename>
$ oc apply -f <backup_cr_filename>
検証
次のコマンドを実行して、
Backup
オブジェクトがCompleted
フェーズにあることを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc describe backup test-backup -n openshift-adp
$ oc describe backup test-backup -n openshift-adp
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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>
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>
5.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 を使用します。これによりバックアップが正常に実行されます。
5.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 で実行されているデータベースを持つアプリケーションがある。
手順
次の例に示すように、
legacy-aws
Velero プラグインを使用するようにDataProtectionApplication
CR を設定します。DataProtectionApplication
CR の例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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 - 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> prefix: oadp
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
次のコマンドを実行して、
DataProtectionApplication
CR を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc apply -f <dpa_filename>
$ oc apply -f <dpa_filename>
次のコマンドを実行して、
DataProtectionApplication
CR が正常に作成されたことを確認します。出力例から、status
オブジェクトのtype
フィールドがReconciled
に設定され、status
フィールドが"True"
に設定されていることがわかります。このステータスは、DataProtectionApplication
CR が正常に作成されたことを示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get dpa -o yaml
$ oc get dpa -o yaml
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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: ""
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: ""
次のコマンドを実行して、Backup Storage Location (BSL) が使用可能であることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get backupstoragelocations.velero.io -n openshift-adp
$ oc get backupstoragelocations.velero.io -n openshift-adp
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NAME PHASE LAST VALIDATED AGE DEFAULT dpa-sample-1 Available 3s 15s true
NAME PHASE LAST VALIDATED AGE DEFAULT dpa-sample-1 Available 3s 15s true
次の例に示すように、
Backup
CR を設定します。バックアップ CR の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: velero.io/v1 kind: Backup metadata: name: test-backup namespace: openshift-adp spec: includedNamespaces: - <application_namespace>
apiVersion: velero.io/v1 kind: Backup metadata: name: test-backup namespace: openshift-adp spec: includedNamespaces: - <application_namespace>
1 - 1
- バックアップするアプリケーションの namespace を指定します。
次のコマンドを実行して
Backup
CR を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc apply -f <backup_cr_filename>
$ oc apply -f <backup_cr_filename>
検証
次のコマンドを実行して、バックアップオブジェクトが
Completed
フェーズにあることを確認します。詳細は、出力例を参照してください。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc describe backups.velero.io test-backup -n openshift-adp
$ oc describe backups.velero.io test-backup -n openshift-adp
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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>
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>
5.5.5. ROSA STS を使用する OADP 上のワークロードのバックアップ
5.5.5.1. OADP と ROSA STS を使用したバックアップの実行
次の hello-world
アプリケーションの例では、永続ボリューム (PV) がアタッチされていません。Red Hat OpenShift Service on AWS (ROSA) STS を使用して、OpenShift API for Data Protection (OADP) でバックアップを実行します。
どちらの Data Protection Application (DPA) 設定も機能します。
次のコマンドを実行して、バックアップするワークロードを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc create namespace hello-world
$ oc create namespace hello-world
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc new-app -n hello-world --image=docker.io/openshift/hello-openshift
$ oc new-app -n hello-world --image=docker.io/openshift/hello-openshift
次のコマンドを実行してルートを公開します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc expose service/hello-openshift -n hello-world
$ oc expose service/hello-openshift -n hello-world
次のコマンドを実行して、アプリケーションが動作していることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow curl `oc get route/hello-openshift -n hello-world -o jsonpath='{.spec.host}'`
$ curl `oc get route/hello-openshift -n hello-world -o jsonpath='{.spec.host}'`
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Hello OpenShift!
Hello OpenShift!
次のコマンドを実行して、ワークロードをバックアップします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat << EOF | oc create -f - apiVersion: velero.io/v1 kind: Backup metadata: name: hello-world namespace: openshift-adp spec: includedNamespaces: - hello-world storageLocation: ${CLUSTER_NAME}-dpa-1 ttl: 720h0m0s EOF
$ cat << EOF | oc create -f - apiVersion: velero.io/v1 kind: Backup metadata: name: hello-world namespace: openshift-adp spec: includedNamespaces: - hello-world storageLocation: ${CLUSTER_NAME}-dpa-1 ttl: 720h0m0s EOF
バックアップが完了するまで待ってから、次のコマンドを実行します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow watch "oc -n openshift-adp get backup hello-world -o json | jq .status"
$ watch "oc -n openshift-adp get backup hello-world -o json | jq .status"
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow { "completionTimestamp": "2022-09-07T22:20:44Z", "expiration": "2022-10-07T22:20:22Z", "formatVersion": "1.1.0", "phase": "Completed", "progress": { "itemsBackedUp": 58, "totalItems": 58 }, "startTimestamp": "2022-09-07T22:20:22Z", "version": 1 }
{ "completionTimestamp": "2022-09-07T22:20:44Z", "expiration": "2022-10-07T22:20:22Z", "formatVersion": "1.1.0", "phase": "Completed", "progress": { "itemsBackedUp": 58, "totalItems": 58 }, "startTimestamp": "2022-09-07T22:20:22Z", "version": 1 }
次のコマンドを実行して、デモワークロードを削除します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc delete ns hello-world
$ oc delete ns hello-world
次のコマンドを実行して、バックアップからワークロードを復元します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat << EOF | oc create -f - apiVersion: velero.io/v1 kind: Restore metadata: name: hello-world namespace: openshift-adp spec: backupName: hello-world EOF
$ cat << EOF | oc create -f - apiVersion: velero.io/v1 kind: Restore metadata: name: hello-world namespace: openshift-adp spec: backupName: hello-world EOF
次のコマンドを実行して、復元が完了するまで待ちます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow watch "oc -n openshift-adp get restore hello-world -o json | jq .status"
$ watch "oc -n openshift-adp get restore hello-world -o json | jq .status"
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow { "completionTimestamp": "2022-09-07T22:25:47Z", "phase": "Completed", "progress": { "itemsRestored": 38, "totalItems": 38 }, "startTimestamp": "2022-09-07T22:25:28Z", "warnings": 9 }
{ "completionTimestamp": "2022-09-07T22:25:47Z", "phase": "Completed", "progress": { "itemsRestored": 38, "totalItems": 38 }, "startTimestamp": "2022-09-07T22:25:28Z", "warnings": 9 }
次のコマンドを実行して、ワークロードが復元されていることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc -n hello-world get pods
$ oc -n hello-world get pods
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NAME READY STATUS RESTARTS AGE hello-openshift-9f885f7c6-kdjpj 1/1 Running 0 90s
NAME READY STATUS RESTARTS AGE hello-openshift-9f885f7c6-kdjpj 1/1 Running 0 90s
次のコマンドを実行して JSONPath を確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow curl `oc get route/hello-openshift -n hello-world -o jsonpath='{.spec.host}'`
$ curl `oc get route/hello-openshift -n hello-world -o jsonpath='{.spec.host}'`
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Hello OpenShift!
Hello OpenShift!
トラブルシューティングのヒントについては、OADP チームの トラブルシューティングドキュメント を参照してください。
5.5.5.2. OADP と ROSA STS を使用してバックアップ後のクラスターをクリーンアップする
この例のバックアップおよび S3 バケットと OpenShift API for Data Protection (OADP) Operator をアンインストールする必要がある場合は、次の手順を実行します。
手順
次のコマンドを実行して、ワークロードを削除します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc delete ns hello-world
$ oc delete ns hello-world
次のコマンドを実行して、Data Protection Application (DPA) を削除します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc -n openshift-adp delete dpa ${CLUSTER_NAME}-dpa
$ oc -n openshift-adp delete dpa ${CLUSTER_NAME}-dpa
次のコマンドを実行して、クラウドストレージを削除します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc -n openshift-adp delete cloudstorage ${CLUSTER_NAME}-oadp
$ oc -n openshift-adp delete cloudstorage ${CLUSTER_NAME}-oadp
警告このコマンドがハングした場合は、次のコマンドを実行してファイナライザーを削除する必要がある場合があります。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc -n openshift-adp patch cloudstorage ${CLUSTER_NAME}-oadp -p '{"metadata":{"finalizers":null}}' --type=merge
$ oc -n openshift-adp patch cloudstorage ${CLUSTER_NAME}-oadp -p '{"metadata":{"finalizers":null}}' --type=merge
Operator が不要になった場合は、次のコマンドを実行して削除します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc -n openshift-adp delete subscription oadp-operator
$ oc -n openshift-adp delete subscription oadp-operator
Operator から namespace を削除します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc delete ns openshift-adp
$ oc delete ns openshift-adp
バックアップおよび復元リソースが不要になった場合は、次のコマンドを実行してクラスターからリソースを削除します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc delete backups.velero.io hello-world
$ oc delete backups.velero.io hello-world
AWS S3 のバックアップ、復元、およびリモートオブジェクトを削除するには、次のコマンドを実行します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow velero backup delete hello-world
$ velero backup delete hello-world
カスタムリソース定義 (CRD) が不要になった場合は、次のコマンドを実行してクラスターから削除します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow for CRD in `oc get crds | grep velero | awk '{print $1}'`; do oc delete crd $CRD; done
$ for CRD in `oc get crds | grep velero | awk '{print $1}'`; do oc delete crd $CRD; done
次のコマンドを実行して、AWS S3 バケットを削除します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow aws s3 rm s3://${CLUSTER_NAME}-oadp --recursive
$ aws s3 rm s3://${CLUSTER_NAME}-oadp --recursive
Copy to Clipboard Copied! Toggle word wrap Toggle overflow aws s3api delete-bucket --bucket ${CLUSTER_NAME}-oadp
$ aws s3api delete-bucket --bucket ${CLUSTER_NAME}-oadp
次のコマンドを実行して、ロールからポリシーを切り離します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow aws iam detach-role-policy --role-name "${ROLE_NAME}" --policy-arn "${POLICY_ARN}"
$ aws iam detach-role-policy --role-name "${ROLE_NAME}" --policy-arn "${POLICY_ARN}"
以下のコマンドを実行してロールを削除します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow aws iam delete-role --role-name "${ROLE_NAME}"
$ aws iam delete-role --role-name "${ROLE_NAME}"