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) によって提供されるオブジェクトストレージにバックアップを保存します。
- バックアップ保存場所を設定するために、Object Bucket Claim (OBC) を作成します。ODF を使用して、Amazon S3 互換のオブジェクトストレージバケットを設定します。ODF は、MultiCloud Object Gateway (NooBaa MCG) と Ceph Object Gateway (RADOS Gateway (RGW) とも呼ばれる) オブジェクトストレージサービスを提供します。このユースケースでは、バックアップ保存場所として NooBaa MCG を使用します。
-
aws
プロバイダープラグインを使用して、OADP で NooBaa MCG サービスを使用します。 - バックアップ保存場所 (BSL) を使用して Data Protection Application (DPA) を設定します。
- バックアップカスタムリソース (CR) を作成し、バックアップするアプリケーションの namespace を指定します。
- バックアップを作成して検証します。
前提条件
- OADP Operator をインストールした。
- ODF Operator をインストールした。
- 別の namespace で実行されているデータベースを持つアプリケーションがある。
手順
次の例に示すように、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
次のコマンドを実行して OBC を作成します。
$ oc create -f <obc_file_name> 1
- 1
- Object Bucket Claim マニフェストのファイル名を指定します。
OBC を作成すると、ODF が Object Bucket Claim と同じ名前の
secret
とconfig map
を作成します。secret
にはバケットの認証情報が含まれており、config map
にはバケットにアクセスするための情報が含まれています。生成された config map からバケット名とバケットホストを取得するには、次のコマンドを実行します。$ 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
生成された
secret
からバケットの認証情報を取得するには、次のコマンドを実行します。$ oc extract --to=- secret/test-obc
出力例
# AWS_ACCESS_KEY_ID ebYR....xLNMc # AWS_SECRET_ACCESS_KEY YXf...+NaCkdyC3QPym
次のコマンドを実行して、
openshift-storage
namespace の 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
次の例に示すように、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
次のコマンドを実行して 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 bsl -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
- バックアップするアプリケーションの namespace を指定します。
次のコマンドを実行してバックアップ 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. 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 をインストールした。
- 復元するアプリケーションのバックアップがある。
手順
次の例に示すように、復元 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>
検証
次のコマンドを実行して、復元が
Completed
フェーズにあることを確認します。$ oc describe restore <restore_name> -n openshift-adp
次のコマンドを実行して、復元先の namespace
test-restore-application
に切り替えます。$ oc project test-restore-application
次のコマンドを実行して、永続ボリューム要求 (pvc)、サービス (svc)、デプロイメント、シークレット、config map などの復元されたリソースを確認します。
$ 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 証明書の追加
Data Protection Application (DPA)に自己署名認証局(CA)証明書を追加してから、アプリケーションをバックアップできます。Red Hat OpenShift Data Foundation (ODF)が提供する NooBaa バケットにバックアップを保存します。
4.5.3.1. アプリケーションとその自己署名 CA 証明書のバックアップ
ODF によって提供される s3.openshift-storage.svc
サービスは、自己署名サービス CA で署名された Transport Layer Security Protocol (TLS)証明書を使用します。
certificate signed by unknown authority
エラーを防ぐには、DataProtectionApplication
カスタムリソース(CR)のバックアップストレージロケーション(BSL)セクションに自己署名 CA 証明書を含める必要があります。このような状況では、以下のタスクを完了する必要があります。
- Object Bucket Claim (オブジェクトバケット要求)を作成して NooBaa バケットを要求します。
- バケットの詳細を抽出します。
-
DataProtectionApplication
CR に自己署名 CA 証明書を含めます。 - アプリケーションをバックアップします。
前提条件
- OADP Operator をインストールした。
- ODF Operator をインストールした。
- 別の namespace で実行されているデータベースを持つアプリケーションがある。
手順
以下の例のように 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 は Object Bucket Claim (オブジェクトバケット要求)と同じ名前で
シークレット
とConfigMap
を作成します。secret
オブジェクトにはバケットの認証情報が含まれ、ConfigMap
オブジェクトにはバケットにアクセスするための情報が含まれます。生成された config map からバケット名とバケットホストを取得するには、次のコマンドを実行します。$ 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 マニフェストファイルを設定します。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
以下のコマンドを実行して、
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 bsl -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
- バックアップするアプリケーションの namespace を指定します。
次のコマンドを実行して、
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>