4.8. IBM Cloud を使用した OADP の設定
4.8.1. IBM Cloud を使用した OpenShift API for Data Protection の設定 リンクのコピーリンクがクリップボードにコピーされました!
クラスター上のアプリケーションをバックアップおよび復元するには、IBM Cloud クラスターに OpenShift API for Data Protection (OADP) Operator をインストールします。バックアップを保存するには、IBM Cloud Object Storage (COS) を設定します。
4.8.1.1. COS インスタンスの設定 リンクのコピーリンクがクリップボードにコピーされました!
OADP バックアップデータを保存するために、IBM Cloud Object Storage (COS) インスタンスを作成します。COS インスタンスを作成したら、HMAC サービス認証情報を設定します。
前提条件
- IBM Cloud Platform アカウントをもっている。
- IBM Cloud CLI をインストールしている。
- IBM Cloud にログインしている。
手順
次のコマンドを実行して、IBM Cloud Object Storage (COS) プラグインをインストールします。
ibmcloud plugin install cos -f
$ ibmcloud plugin install cos -fCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行してバケット名を設定します。
BUCKET=<bucket_name>
$ BUCKET=<bucket_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行してバケットリージョンを設定します。
REGION=<bucket_region>
$ REGION=<bucket_region>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- バケットのリージョンを指定します (例:
eu-gb)。
次のコマンドを実行してリソースグループを作成します。
ibmcloud resource group-create <resource_group_name>
$ ibmcloud resource group-create <resource_group_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、ターゲットリソースグループを設定します。
ibmcloud target -g <resource_group_name>
$ ibmcloud target -g <resource_group_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、ターゲットリソースグループが正しく設定されていることを確認します。
ibmcloud target
$ ibmcloud targetCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
API endpoint: https://cloud.ibm.com Region: User: test-user Account: Test Account (fb6......e95) <-> 2...122 Resource group: Default
API endpoint: https://cloud.ibm.com Region: User: test-user Account: Test Account (fb6......e95) <-> 2...122 Resource group: DefaultCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例では、リソースグループは
Defaultに設定されています。次のコマンドを実行してリソースグループ名を設定します。
RESOURCE_GROUP=<resource_group>
$ RESOURCE_GROUP=<resource_group>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- リソースグループ名を指定します (例:
"default")。
次のコマンドを実行して、IBM Cloud
service-instanceリソースを作成します。ibmcloud resource service-instance-create \ <service_instance_name> \ <service_name> \ <service_plan> \ <region_name>
$ ibmcloud resource service-instance-create \ <service_instance_name> \1 <service_name> \2 <service_plan> \3 <region_name>4 Copy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドの例
ibmcloud resource service-instance-create test-service-instance cloud-object-storage \ standard \ global \ -d premium-global-deployment
$ ibmcloud resource service-instance-create test-service-instance cloud-object-storage \1 standard \ global \ -d premium-global-deployment2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、サービスインスタンス ID を抽出します。
SERVICE_INSTANCE_ID=$(ibmcloud resource service-instance test-service-instance --output json | jq -r '.[0].id')
$ SERVICE_INSTANCE_ID=$(ibmcloud resource service-instance test-service-instance --output json | jq -r '.[0].id')Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して COS バケットを作成します。
ibmcloud cos bucket-create \//
$ ibmcloud cos bucket-create \// --bucket $BUCKET \// --ibm-service-instance-id $SERVICE_INSTANCE_ID \// --region $REGIONCopy to Clipboard Copied! Toggle word wrap Toggle overflow $BUCKET、$SERVICE_INSTANCE_ID、$REGIONなどの変数は、以前に設定した値に置き換えられます。次のコマンドを実行して
HMAC認証情報を作成します。ibmcloud resource service-key-create test-key Writer --instance-name test-service-instance --parameters {\"HMAC\":true}$ ibmcloud resource service-key-create test-key Writer --instance-name test-service-instance --parameters {\"HMAC\":true}Copy to Clipboard Copied! Toggle word wrap Toggle overflow HMAC認証情報からアクセスキー ID とシークレットアクセスキーを抽出し、credentials-veleroファイルに保存します。credentials-veleroファイルを使用して、Backup Storage Location のsecretを作成できます。以下のコマンドを実行します。cat > credentials-velero << __EOF__ [default] aws_access_key_id=$(ibmcloud resource service-key test-key -o json | jq -r '.[0].credentials.cos_hmac_keys.access_key_id') aws_secret_access_key=$(ibmcloud resource service-key test-key -o json | jq -r '.[0].credentials.cos_hmac_keys.secret_access_key') __EOF__
$ cat > credentials-velero << __EOF__ [default] aws_access_key_id=$(ibmcloud resource service-key test-key -o json | jq -r '.[0].credentials.cos_hmac_keys.access_key_id') aws_secret_access_key=$(ibmcloud resource service-key test-key -o json | jq -r '.[0].credentials.cos_hmac_keys.secret_access_key') __EOF__Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.8.1.2. デフォルト Secret の作成 リンクのコピーリンクがクリップボードにコピーされました!
バックアップとスナップショットの場所が同じ認証情報を使用する場合、またはスナップショットの場所が必要ない場合は、デフォルトの Secret を作成します。
DataProtectionApplication カスタムリソース (CR) にはデフォルトの Secret が必要です。作成しないと、インストールは失敗します。バックアップの場所の Secret の名前が指定されていない場合は、デフォルトの名前が使用されます。
インストール時にバックアップの場所の認証情報を使用しない場合は、空の credentials-velero ファイルを使用してデフォルト名前で Secret を作成できます。
前提条件
- オブジェクトストレージとクラウドストレージがある場合は、同じ認証情報を使用する必要があります。
- Velero のオブジェクトストレージを設定する必要があります。
手順
-
Backup Storage Location の
credentials-veleroファイルをクラウドプロバイダーに適した形式で作成します。 デフォルト名で
Secretカスタムリソース (CR) を作成します。oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-velero
$ oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-veleroCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Secret は、Data Protection Application をインストールするときに、DataProtectionApplication CR の spec.backupLocations.credential ブロックで参照されます。
4.8.1.3. 異なる認証情報のシークレットの作成 リンクのコピーリンクがクリップボードにコピーされました!
バックアップとスナップショットの場所で異なる認証情報を使用する場合は、次の 2 つの Secret オブジェクトを作成する必要があります。
-
カスタム名を持つバックアップロケーションの
Secret。カスタム名は、DataProtectionApplicationカスタムリソース (CR) のspec.backupLocationsブロックで指定されます。 -
スナップショットの場所
Secret(デフォルト名はcloud-credentials)。このSecretは、DataProtectionApplicationで指定されていません。
手順
-
スナップショットの場所の
credentials-veleroファイルをクラウドプロバイダーに適した形式で作成します。 デフォルト名でスナップショットの場所の
Secretを作成します。oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-velero
$ oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-veleroCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
オブジェクトストレージに適した形式で、バックアップロケーションの
credentials-veleroファイルを作成します。 カスタム名を使用してバックアップロケーションの
Secretを作成します。oc create secret generic <custom_secret> -n openshift-adp --from-file cloud=credentials-velero
$ oc create secret generic <custom_secret> -n openshift-adp --from-file cloud=credentials-veleroCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次の例のように、カスタム名の
SecretをDataProtectionApplicationに追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- カスタム名を持つバックアップロケーションの
Secret。
4.8.1.4. Data Protection Application のインストール リンクのコピーリンクがクリップボードにコピーされました!
DataProtectionApplication API のインスタンスを作成して、Data Protection Application (DPA) をインストールします。
前提条件
- OADP Operator をインストールする。
- オブジェクトストレージをバックアップロケーションとして設定する必要がある。
- スナップショットを使用して PV をバックアップする場合、クラウドプロバイダーはネイティブスナップショット API または Container Storage Interface (CSI) スナップショットのいずれかをサポートする必要がある。
バックアップとスナップショットの場所で同じ認証情報を使用する場合は、デフォルトの名前である
cloud-credentialsを使用してSecretを作成する必要がある。注記インストール中にバックアップまたはスナップショットの場所を指定したくない場合は、空の
credentials-veleroファイルを使用してデフォルトのSecretを作成できます。デフォルトのSecretがない場合、インストールは失敗します。
手順
-
Operators
Installed Operators をクリックして、OADP Operator を選択します。 - Provided APIs で、DataProtectionApplication ボックスの Create instance をクリックします。
YAML View をクリックして、
DataProtectionApplicationマニフェストのパラメーターを更新します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Backup Storage Location として IBM Cloud を使用する場合、プロバイダーは
awsになります。 - 2
- IBM Cloud Object Storage (COS) バケット名を指定します。
- 3
- COS リージョン名を指定します (例:
eu-gb)。 - 4
- COS バケットの S3 URL を指定します。たとえば、
http://s3.eu-gb.cloud-object-storage.appdomain.cloudです。ここで、eu-gbはリージョン名です。バケットのリージョンに応じてリージョン名を置き換えます。 - 5
HMAC認証情報からのアクセスキーとシークレットアクセスキーを使用して作成したシークレットの名前を定義します。
- Create をクリックします。
検証
次のコマンドを実行して OpenShift API for Data Protection (OADP) リソースを表示し、インストールを検証します。
oc get all -n openshift-adp
$ oc get all -n openshift-adpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
DataProtectionApplication(DPA) が調整されていることを確認します。oc get dpa dpa-sample -n openshift-adp -o jsonpath='{.status}'$ oc get dpa dpa-sample -n openshift-adp -o jsonpath='{.status}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
{"conditions":[{"lastTransitionTime":"2023-10-27T01:23:57Z","message":"Reconcile complete","reason":"Complete","status":"True","type":"Reconciled"}]}{"conditions":[{"lastTransitionTime":"2023-10-27T01:23:57Z","message":"Reconcile complete","reason":"Complete","status":"True","type":"Reconciled"}]}Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
typeがReconciledに設定されていることを確認します。 次のコマンドを実行して、Backup Storage Location を確認し、
PHASEがAvailableであることを確認します。oc get backupstoragelocations.velero.io -n openshift-adp
$ oc get backupstoragelocations.velero.io -n openshift-adpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME PHASE LAST VALIDATED AGE DEFAULT dpa-sample-1 Available 1s 3d16h true
NAME PHASE LAST VALIDATED AGE DEFAULT dpa-sample-1 Available 1s 3d16h trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.8.1.5. Velero の CPU とメモリーのリソース割り当てを設定 リンクのコピーリンクがクリップボードにコピーされました!
DataProtectionApplication カスタムリソース (CR) マニフェストを編集して、Velero Pod の CPU およびメモリーリソースの割り当てを設定します。
前提条件
- OpenShift API for Data Protection (OADP) Operator がインストールされている必要があります。
手順
次の例のように、
DataProtectionApplicationCR マニフェストのspec.configuration.velero.podConfig.ResourceAllocationsブロックの値を編集します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Kopia は OADP 1.3 以降のリリースで選択できます。Kopia はファイルシステムのバックアップに使用できます。組み込みの Data Mover を使用する Data Mover の場合は、Kopia が唯一の選択肢になります。
Kopia は Restic よりも多くのリソースを消費するため、それに応じて CPU とメモリーの要件を調整しなければならない場合があります。
4.8.1.6. ノードエージェントとノードラベルの設定 リンクのコピーリンクがクリップボードにコピーされました!
OADP の DPA は、nodeSelector フィールドを使用して、ノードエージェントを実行できるノードを選択します。nodeSelector フィールドは、推奨される最も単純な形式のノード選択制約です。
指定したラベルが、各ノードのラベルと一致する必要があります。
選択した任意のノードでノードエージェントを実行する正しい方法は、ノードにカスタムラベルを付けることです。
oc label node/<node_name> node-role.kubernetes.io/nodeAgent=""
$ oc label node/<node_name> node-role.kubernetes.io/nodeAgent=""
ノードのラベル付けに使用したのと同じカスタムラベルを DPA.spec.configuration.nodeAgent.podConfig.nodeSelector で使用します。以下に例を示します。
次の例は nodeSelector のアンチパターンです。この例は、ノードに 'node-role.kubernetes.io/infra: ""' と 'node-role.kubernetes.io/worker: ""' の両方のラベルがないと機能しません。
4.8.1.7. クライアントバースト設定と QPS 設定を使用した DPA の設定 リンクのコピーリンクがクリップボードにコピーされました!
バースト設定は、制限が適用されるまで velero サーバーに送信できる要求の数を決定するものです。バースト制限に達した後は、1 秒あたりのクエリー数 (QPS) 設定によって、1 秒あたりに送信できる追加の要求の数が決定されます。
バースト値と QPS 値を使用して Data Protection Application (DPA) を設定することにより、velero サーバーのバースト値と QPS 値を設定できます。バースト値と QPS 値は、DPA の dpa.configuration.velero.client-burst フィールドと dpa.configuration.velero.client-qps フィールドを使用して設定できます。
前提条件
- OADP Operator がインストールされている。
4.8.1.8. DPA の imagePullPolicy 設定のオーバーライド リンクのコピーリンクがクリップボードにコピーされました!
OADP 1.4.0 以前では、Operator はすべてのイメージで Velero およびノードエージェント Pod の imagePullPolicy フィールドを Always に設定します。
OADP 1.4.1 以降では、Operator はまず、各イメージに sha256 または sha512 ダイジェストがあるかを確認し、それに応じて imagePullPolicy フィールドを設定します。
-
イメージにダイジェストがある場合、Operator は
imagePullPolicyをIfNotPresentに設定します。 -
イメージにダイジェストがない場合、Operator は
imagePullPolicyをAlwaysに設定します。
Data Protection Application (DPA) の spec.imagePullPolicy フィールドを使用して、imagePullPolicy フィールドをオーバーライドすることもできます。
前提条件
- OADP Operator がインストールされている。
手順
以下の例のように、DPA の
spec.imagePullPolicyフィールドを設定します。Data Protection Application の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
imagePullPolicyの値を指定します。この例では、imagePullPolicyフィールドがNeverに設定されています。
4.8.1.9. 複数の BSL を使用した DPA の設定 リンクのコピーリンクがクリップボードにコピーされました!
複数の BackupStorageLocation (BSL) CR を使用して DataProtectionApplication (DPA) カスタムリソース (CR) を設定し、クラウドプロバイダーによって提供される認証情報を指定できます。
たとえば、次の 2 つの BSL を設定したとします。
- DPA に 1 つの BSL を設定し、それをデフォルトの BSL として設定した。
-
BackupStorageLocationCR を使用して、別の BSL を別途作成した。
DPA を通じて作成された BSL をすでにデフォルトとして設定しているため、別途作成した BSL を再度デフォルトとして設定することはできません。つまり、任意の時点において、デフォルトの BSL として設定できる BSL は 1 つだけです。
前提条件
- OADP Operator をインストールする。
- クラウドプロバイダーによって提供される認証情報を使用してシークレットを作成する。
手順
複数の
BackupStorageLocationCR を使用してDataProtectionApplicationCR を設定します。以下の例を参照してください。DPA の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 最初の BSL の名前を指定します。
- 2
- このパラメーターは、この BSL がデフォルトの BSL であることを示します。
Backup CRに BSL が設定されていない場合は、デフォルトの BSL が使用されます。デフォルトとして設定できる BSL は 1 つだけです。 - 3
- バケット名を指定します。
- 4
- Velero バックアップの接頭辞を指定します (例:
velero)。 - 5
- バケットの AWS リージョンを指定します。
- 6
- 作成したデフォルトの
Secretオブジェクトの名前を指定します。 - 7
- 2 番目の BSL の名前を指定します。
- 8
- S3 エンドポイントの URL を指定します。
- 9
Secretの正しい名前を指定します。たとえば、custom_secret_name_odfです。Secret名を指定しない場合は、デフォルトの名前が使用されます。
バックアップ CR で使用する BSL を指定します。以下の例を参照してください。
バックアップ CR の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.8.1.10. DataProtectionApplication でノードエージェントを無効にする リンクのコピーリンクがクリップボードにコピーされました!
バックアップに Restic、Kopia、または DataMover を使用していない場合は、DataProtectionApplication カスタムリソース (CR) の nodeAgent フィールドを無効にすることができます。nodeAgent を無効にする前に、OADP Operator がアイドル状態であり、バックアップを実行していないことを確認してください。
手順
nodeAgentを無効にするには、enableフラグをfalseに設定します。以下の例を参照してください。DataProtectionApplicationCR の例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- ノードエージェントを無効にします。
nodeAgentを有効にするには、enableフラグをtrueに設定します。以下の例を参照してください。DataProtectionApplicationCR の例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- ノードエージェントを有効にします。
ジョブをセットアップして、DataProtectionApplication CR の nodeAgent フィールドを有効または無効にすることができます。詳細は、「ジョブの使用による Pod でのタスクの実行」を参照してください。