バックアップおよび復元


OpenShift Container Platform 4.16

OpenShift Container Platform クラスターのバックアップおよび復元

Red Hat OpenShift Documentation Team

概要

このドキュメントでは、クラスターのデータのバックアップと、さまざまな障害関連のシナリオでの復旧方法を説明します。

第1章 バックアップおよび復元

1.1. コントロールプレーンのバックアップおよび復元の操作

クラスター管理者は、OpenShift Container Platform クラスターを一定期間停止し、後で再起動する必要がある場合があります。クラスターを再起動する理由として、クラスターでメンテナンスを実行する必要がある、またはリソースコストを削減する必要がある、などが挙げられます。OpenShift Container Platform では、クラスターの正常なシャットダウン を実行して、後でクラスターを簡単に再起動できます。

クラスターをシャットダウンする前に etcd データをバックアップする 必要があります。etcd は OpenShift Container Platform のキーと値のストアであり、すべてのリソースオブジェクトの状態を保存します。etcd バックアップは障害復旧において重要な役割を果たします。OpenShift Container Platform では、正常でない etcd メンバーを置き換える こともできます。

クラスターを再度実行する場合は、クラスターを正常に再起動します

注記

クラスターの証明書は、インストール日から 1 年後に有効期限が切れます。証明書が有効である間は、クラスターをシャットダウンし、正常に再起動することができます。クラスターは、期限切れのコントロールプレーン証明書を自動的に取得しますが、証明書署名要求 (CSR) を承認する 必要があります。

以下のように、OpenShift Container Platform が想定どおりに機能しないさまざまな状況に直面します。

  • ノードの障害やネットワーク接続の問題などの予期しない状態により、再起動後にクラスターが機能しない。
  • 誤ってクラスターで重要なものを削除した。
  • 大多数のコントロールプレーンホストが失われたため、etcd のクォーラム (定足数) を喪失した。

保存した etcd スナップショットを使用して、クラスターを以前の状態に復元して、障害状況から常に回復できます。

1.2. アプリケーションのバックアップおよび復元の操作

クラスター管理者は、OpenShift API for Data Protection (OADP) を使用して、OpenShift Container Platform で実行しているアプリケーションをバックアップおよび復元できます。

OADP は、管理者がインストールした OADP のバージョンに適したバージョンの Velero (Velero CLI ツールのダウンロード の表を参照) を使用して、namespace の粒度で Kubernetes リソースと内部イメージをバックアップおよび復元します。OADP は、スナップショットまたは Restic を使用して、永続ボリューム (PV) をバックアップおよび復元します。詳細は、OADP の機能 を参照してください。

1.2.1. OADP 要件

OADP には以下の要件があります。

  • cluster-admin ロールを持つユーザーとしてログインする必要があります。
  • 次のストレージタイプのいずれかなど、バックアップを保存するためのオブジェクトストレージが必要です。

    • OpenShift Data Foundation
    • Amazon Web Services
    • Microsoft Azure
    • Google Cloud
    • S3 と互換性のあるオブジェクトストレージ
    • IBM Cloud® Object Storage S3
注記

OCP 4.11 以降で CSI バックアップを使用する場合は、OADP 1.1.x をインストールします。

OADP 1.0.x は、OCP 4.11 以降での CSI バックアップをサポートしていません。OADP 1.0.x には Velero 1.7.x が含まれており、OCP 4.11 以降には存在しない API グループ snapshot.storage.k8s.io/v1beta1 が必要です。

重要

S3 ストレージ用の CloudStorage API は、テクノロジープレビュー機能のみです。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。

Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、以下のリンクを参照してください。

  • スナップショットを使用して PV をバックアップするには、ネイティブスナップショット API を備えているか、次のプロバイダーなどの Container Storage Interface (CSI) スナップショットをサポートするクラウドストレージが必要です。

    • Amazon Web Services
    • Microsoft Azure
    • Google Cloud
    • Ceph RBD や Ceph FS などの CSI スナップショット対応のクラウドストレージ
注記

スナップショットを使用して PV をバックアップしたくない場合は、デフォルトで OADP Operator によってインストールされる Restic を使用できます。

1.2.2. アプリケーションのバックアップおよび復元

Backup カスタムリソース (CR) を作成して、アプリケーションをバックアップします。バックアップ CR の作成 を参照してください。次のバックアップオプションを設定できます。

第2章 クラスターの正常なシャットダウン

このドキュメントでは、クラスターを正常にシャットダウンするプロセスを説明します。メンテナンスの目的で、またはリソースコストの節約のためにクラスターを一時的にシャットダウンする必要がある場合があります。

2.1. 前提条件

  • クラスターをシャットダウンする前に etcd バックアップ を作成する。

    重要

    クラスターの再起動時に問題が発生した場合にクラスターを復元できるように、この手順を実行する前に etcd バックアップを作成しておくことは重要です。

    たとえば、次の条件により、再起動したクラスターが誤動作する可能性があります。

    • シャットダウン時の etcd データの破損
    • ハードウェアが原因のノード障害
    • ネットワーク接続の問題

    クラスターの回復に失敗した場合は、クラスターを以前の状態に復元 する手順を実行してください。

2.2. クラスターのシャットダウン

クラスターを正常な状態でシャットダウンし、後で再起動できるようにします。

注記

インストール日から 1 年までクラスターをシャットダウンして、正常に再起動することを期待できます。インストール日から 1 年後に、クラスター証明書が期限切れになります。ただし、クラスターの再起動時に、kubelet 証明書を回復するために保留中の証明書署名要求 (CSR) を手動で承認する必要がある場合があります。

前提条件

  • cluster-admin ロールを持つユーザーとしてクラスターにアクセスできる。
  • etcd のバックアップを取得している。

手順

  1. クラスターを長期間シャットダウンする場合は、証明書の有効期限が切れる日付を確認し、次のコマンドを実行します。

    $ oc -n openshift-kube-apiserver-operator get secret kube-apiserver-to-kubelet-signer -o jsonpath='{.metadata.annotations.auth\.openshift\.io/certificate-not-after}'
    Copy to Clipboard Toggle word wrap

    出力例

    2022-08-05T14:37:50Zuser@user:~ $ 
    1
    Copy to Clipboard Toggle word wrap

    1
    クラスターが正常に再起動できるようにするために、指定の日付または指定の日付の前に再起動するように計画します。クラスターの再起動時に、kubelet 証明書を回復するために保留中の証明書署名要求 (CSR) を手動で承認する必要がある場合があります。
  2. クラスター内のすべてのノードをスケジュール不可としてマークします。クラウドプロバイダーの Web コンソールから、または次のループを実行することでマークできます。

    $ for node in $(oc get nodes -o jsonpath='{.items[*].metadata.name}'); do echo ${node} ; oc adm cordon ${node} ; done
    Copy to Clipboard Toggle word wrap

    出力例

    ci-ln-mgdnf4b-72292-n547t-master-0
    node/ci-ln-mgdnf4b-72292-n547t-master-0 cordoned
    ci-ln-mgdnf4b-72292-n547t-master-1
    node/ci-ln-mgdnf4b-72292-n547t-master-1 cordoned
    ci-ln-mgdnf4b-72292-n547t-master-2
    node/ci-ln-mgdnf4b-72292-n547t-master-2 cordoned
    ci-ln-mgdnf4b-72292-n547t-worker-a-s7ntl
    node/ci-ln-mgdnf4b-72292-n547t-worker-a-s7ntl cordoned
    ci-ln-mgdnf4b-72292-n547t-worker-b-cmc9k
    node/ci-ln-mgdnf4b-72292-n547t-worker-b-cmc9k cordoned
    ci-ln-mgdnf4b-72292-n547t-worker-c-vcmtn
    node/ci-ln-mgdnf4b-72292-n547t-worker-c-vcmtn cordoned
    Copy to Clipboard Toggle word wrap

  3. 次の方法を使用して Pod を退避させます。

    $ for node in $(oc get nodes -l node-role.kubernetes.io/worker -o jsonpath='{.items[*].metadata.name}'); do echo ${node} ; oc adm drain ${node} --delete-emptydir-data --ignore-daemonsets=true --timeout=15s --force ; done
    Copy to Clipboard Toggle word wrap
  4. クラスターのすべてのノードをシャットダウンします。これを実行するには、クラウドプロバイダーの Web コンソールから行うか、次のループを実行します。どちらかの方法を使用してノードをシャットダウンすると、Pod が正常に終了するため、データが破損する可能性が低くなります。

    注記

    API の仮想 IP が割り当てられたコントロールプレーンノードが、ループ内で最後に処理されるノードであることを確認してください。そうでない場合、シャットダウンコマンドが失敗します。

    $ for node in $(oc get nodes -o jsonpath='{.items[*].metadata.name}'); do oc debug node/${node} -- chroot /host shutdown -h 1; done 
    1
    Copy to Clipboard Toggle word wrap
    1
    -h 1 は、コントロールプレーンノードがシャットダウンされるまで、このプロセスを継続する時間 (分単位) を示します。10 ノード以上の大規模なクラスターでは、すべてのコンピュートノードが先にシャットダウンする時間を確保するために、-h 10 以上に設定します。

    出力例

    Starting pod/ip-10-0-130-169us-east-2computeinternal-debug ...
    To use host binaries, run `chroot /host`
    Shutdown scheduled for Mon 2021-09-13 09:36:17 UTC, use 'shutdown -c' to cancel.
    Removing debug pod ...
    Starting pod/ip-10-0-150-116us-east-2computeinternal-debug ...
    To use host binaries, run `chroot /host`
    Shutdown scheduled for Mon 2021-09-13 09:36:29 UTC, use 'shutdown -c' to cancel.
    Copy to Clipboard Toggle word wrap

    注記

    シャットダウン前に OpenShift Container Platform に同梱される標準 Pod のコントロールプレーンノードをドレイン (解放) する必要はありません。クラスター管理者は、クラスターの再起動後に独自のワークロードのクリーンな再起動を実行する必要があります。カスタムワークロードが原因でシャットダウン前にコントロールプレーンノードをドレイン (解放) した場合は、再起動後にクラスターが再び機能する前にコントロールプレーンノードをスケジュール可能としてマークする必要があります。

  5. 外部ストレージや LDAP サーバーなど、不要になったクラスター依存関係をすべて停止します。この作業を行う前に、ベンダーのドキュメントを確認してください。

    重要

    クラスターをクラウドプロバイダープラットフォームにデプロイした場合は、関連するクラウドリソースをシャットダウン、一時停止、または削除しないでください。一時停止された仮想マシンのクラウドリソースを削除すると、OpenShift Container Platform が正常に復元されない場合があります。

第3章 クラスターの正常な再起動

このドキュメントでは、正常なシャットダウン後にクラスターを再起動するプロセスを説明します。

クラスターは再起動後に機能することが予想されますが、クラスターは以下の例を含む予期しない状態によって回復しない可能性があります。

  • シャットダウン時の etcd データの破損
  • ハードウェアが原因のノード障害
  • ネットワーク接続の問題

クラスターの回復に失敗した場合は、クラスターを以前の状態に復元 する手順を実行してください。

3.1. 前提条件

3.2. クラスターの再起動

クラスターの正常なシャットダウン後にクラスターを再起動できます。

前提条件

  • cluster-admin ロールを持つユーザーとしてクラスターにアクセスできる。
  • この手順では、クラスターを正常にシャットダウンしていることを前提としています。

手順

  1. コントロールプレーンノードをオンにします。

    • クラスターインストール時の admin.kubeconfig を使用しており、API 仮想 IP アドレス (VIP) が稼働している場合は、次の手順を実行します。

      1. KUBECONFIG 環境変数を admin.kubeconfig パスに設定します。
      2. クラスター内の各コントロールプレーンノードに対して次のコマンドを実行します。

        $ oc adm uncordon <node>
        Copy to Clipboard Toggle word wrap
    • admin.kubeconfig の認証情報にアクセスできない場合は、次の手順を実行します。

      1. SSH を使用してコントロールプレーンノードに接続します。
      2. localhost-recovery.kubeconfig ファイルを /root ディレクトリーにコピーします。
      3. そのファイルを使用して、クラスター内の各コントロールプレーンノードに対して次のコマンドを実行します。

        $ oc adm uncordon <node>
        Copy to Clipboard Toggle word wrap
  2. 外部ストレージや LDAP サーバーなどのクラスターの依存関係すべてをオンにします。
  3. すべてのクラスターマシンを起動します。

    クラウドプロバイダーの Web コンソールなどでマシンを起動するには、ご使用のクラウド環境に適した方法を使用します。

    約 10 分程度待機してから、コントロールプレーンノードのステータス確認に進みます。

  4. すべてのコントロールプレーンノードが準備状態にあることを確認します。

    $ oc get nodes -l node-role.kubernetes.io/master
    Copy to Clipboard Toggle word wrap

    以下の出力に示されているように、コントロールプレーンノードはステータスが Ready の場合、準備状態にあります。

    NAME                           STATUS   ROLES                  AGE   VERSION
    ip-10-0-168-251.ec2.internal   Ready    control-plane,master   75m   v1.29.4
    ip-10-0-170-223.ec2.internal   Ready    control-plane,master   75m   v1.29.4
    ip-10-0-211-16.ec2.internal    Ready    control-plane,master   75m   v1.29.4
    Copy to Clipboard Toggle word wrap
  5. コントロールプレーンノードが準備状態に ない 場合、承認する必要がある保留中の証明書署名要求 (CSR) があるかどうかを確認します。

    1. 現在の CSR の一覧を取得します。

      $ oc get csr
      Copy to Clipboard Toggle word wrap
    2. CSR の詳細をレビューし、これが有効であることを確認します。

      $ oc describe csr <csr_name> 
      1
      Copy to Clipboard Toggle word wrap
      1
      <csr_name> は、現行の CSR のリストからの CSR の名前です。
    3. それぞれの有効な CSR を承認します。

      $ oc adm certificate approve <csr_name>
      Copy to Clipboard Toggle word wrap
  6. コントロールプレーンノードが準備状態になった後に、すべてのワーカーノードが準備状態にあることを確認します。

    $ oc get nodes -l node-role.kubernetes.io/worker
    Copy to Clipboard Toggle word wrap

    以下の出力に示されているように、ワーカーノードのステータスが Ready の場合、ワーカーノードは準備状態にあります。

    NAME                           STATUS   ROLES    AGE   VERSION
    ip-10-0-179-95.ec2.internal    Ready    worker   64m   v1.29.4
    ip-10-0-182-134.ec2.internal   Ready    worker   64m   v1.29.4
    ip-10-0-250-100.ec2.internal   Ready    worker   64m   v1.29.4
    Copy to Clipboard Toggle word wrap
  7. ワーカーノードが準備状態に ない 場合、承認する必要がある保留中の証明書署名要求 (CSR) があるかどうかを確認します。

    1. 現在の CSR の一覧を取得します。

      $ oc get csr
      Copy to Clipboard Toggle word wrap
    2. CSR の詳細をレビューし、これが有効であることを確認します。

      $ oc describe csr <csr_name> 
      1
      Copy to Clipboard Toggle word wrap
      1
      <csr_name> は、現行の CSR のリストからの CSR の名前です。
    3. それぞれの有効な CSR を承認します。

      $ oc adm certificate approve <csr_name>
      Copy to Clipboard Toggle word wrap
  8. コントロールプレーンとコンピュートノードの準備ができたら、次のコマンドを実行して、クラスター内のすべてのノードをスケジュール可能としてマークします。

    $ for node in $(oc get nodes -o jsonpath='{.items[*].metadata.name}'); do echo ${node} ; oc adm uncordon ${node} ; done
    Copy to Clipboard Toggle word wrap
  9. クラスターが適切に起動していることを確認します。

    1. パフォーマンスが低下したクラスター Operator がないことを確認します。

      $ oc get clusteroperators
      Copy to Clipboard Toggle word wrap

      DEGRADED 条件が True に設定されているクラスター Operator がないことを確認します。

      NAME                                       VERSION   AVAILABLE   PROGRESSING   DEGRADED   SINCE
      authentication                             4.16.0    True        False         False      59m
      cloud-credential                           4.16.0    True        False         False      85m
      cluster-autoscaler                         4.16.0    True        False         False      73m
      config-operator                            4.16.0    True        False         False      73m
      console                                    4.16.0    True        False         False      62m
      csi-snapshot-controller                    4.16.0    True        False         False      66m
      dns                                        4.16.0    True        False         False      76m
      etcd                                       4.16.0    True        False         False      76m
      ...
      Copy to Clipboard Toggle word wrap
    2. すべてのノードが Ready 状態にあることを確認します。

      $ oc get nodes
      Copy to Clipboard Toggle word wrap

      すべてのノードのステータスが Ready であることを確認します。

      NAME                           STATUS   ROLES                  AGE   VERSION
      ip-10-0-168-251.ec2.internal   Ready    control-plane,master   82m   v1.29.4
      ip-10-0-170-223.ec2.internal   Ready    control-plane,master   82m   v1.29.4
      ip-10-0-179-95.ec2.internal    Ready    worker                 70m   v1.29.4
      ip-10-0-182-134.ec2.internal   Ready    worker                 70m   v1.29.4
      ip-10-0-211-16.ec2.internal    Ready    control-plane,master   82m   v1.29.4
      ip-10-0-250-100.ec2.internal   Ready    worker                 69m   v1.29.4
      Copy to Clipboard Toggle word wrap

      クラスターが適切に起動しなかった場合、etcd バックアップを使用してクラスターを復元する必要がある場合があります。

第4章 OADP アプリケーションのバックアップと復元

4.1. OpenShift API for Data Protection の概要

OpenShift API for Data Protection (OADP) 製品は、OpenShift Container Platform 上のお客様のアプリケーションを保護します。この製品は、OpenShift Container Platform のアプリケーション、アプリケーション関連のクラスターリソース、永続ボリューム、内部イメージをカバーする包括的な障害復旧保護を提供します。OADP は、コンテナー化されたアプリケーションと仮想マシン (VM) の両方をバックアップすることもできます。

ただし、OADP は etcd または OpenShift Operator の障害復旧ソリューションとしては機能しません。

OADP サポートは、お客様のワークロードの namespace とクラスタースコープのリソースに提供されます。

完全なクラスターの バックアップ復元 はサポートされていません。

4.1.1. OpenShift API for Data Protection API

OpenShift API for Data Protection (OADP) は、バックアップをカスタマイズし、不要または不適切なリソースの組み込みを防止するための複数のアプローチを可能にする API を提供します。

OADP は次の API を提供します。

4.1.1.1. データ保護のための OpenShift API のサポート
Expand
表4.1 サポートされている OADP のバージョン

バージョン

OCP のバージョン

一般公開

フルサポートの終了日

メンテナンスの終了日

延長更新サポート (EUS)

Extended Update Support 期間 2 (EUS 期間 2)

1.4

  • 4.14
  • 4.15
  • 4.16
  • 4.17

2024 年 7 月 10 日

1.5 のリリース

1.6 のリリース

2026 年 6 月 27 日

EUS は OCP 4.16 です

2027 年 6 月 27 日

EUS Term 2 は OCP 4.16 です

1.3

  • 4.12
  • 4.13
  • 4.14
  • 4.15

2023 年 11 月 29 日

2024 年 7 月 10 日

1.5 のリリース

2025 年 10 月 31 日

EUS は OCP 4.14 です

2026 年 10 月 31 日

EUS Term 2 は OCP 4.14 です

4.1.1.1.1. OADP Operator のサポートされていないバージョン
Expand
表4.2 サポートされなくなった OADP Operator の以前のバージョン

バージョン

一般公開

フルサポート終了

メンテナンス終了

1.2

2023 年 6 月 14 日

2023 年 11 月 29 日

2024 年 7 月 10 日

1.1

2022 年 9 月 1 日

2023 年 6 月 14 日

2023 年 11 月 29 日

1.0

2022 年 2 月 9 日

2022 年 9 月 1 日

2023 年 6 月 14 日

EUS の詳細は、Extended Update Support を参照してください。

EUS Term 2 の詳細は、Extended Update Support Term 2 を参照してください。

4.2. OADP リリースノート

4.2.1. OADP 1.4 リリースノート

OpenShift API for Data Protection (OADP) のリリースノートでは、新機能と機能拡張、非推奨の機能、製品の推奨事項、既知の問題、および解決された問題を説明します。

注記

OADP に関する追加情報は、OpenShift API for Data Protection (OADP) FAQ を参照してください。

4.2.1.1. OADP 1.4.7 リリースノート

OpenShift API for Data Protection (OADP) 1.4.7 は、コンテナーのヘルスグレードを更新するためにリリースされた Container Grade Only (CGO) リリースです。OADP 1.4.6 と比較して、製品自体のコードは変更されていません。

4.2.1.2. OADP 1.5.3 リリースノート

OpenShift API for Data Protection (OADP) 1.5.3 は、コンテナーのヘルスグレードを更新するためにリリースされた Container Grade Only (CGO) リリースです。OADP 1.5.2 と比較して、製品自体のコードは変更されていません。

4.2.1.3. OADP 1.4.5 リリースノート

OpenShift API for Data Protection (OADP) 1.4.5 リリースノートには、新機能と解決された問題が記載されています。

4.2.1.3.1. 新機能

must-gather ツールを使用したログの収集が Markdown 概要で改善されました。

must-gather ツールを使用して、ログ、および OpenShift API for Data Protection (OADP) カスタムリソースに関する情報を収集できます。must-gather データはすべてのカスタマーケースに添付する必要があります。このツールは、must-gather ログクラスターディレクトリーにある収集された情報を含む Markdown 出力ファイルを生成します。(OADP-5904)

4.2.1.3.2. 解決された問題
OADP 1.4.5 では、次の CVE が修正されています。
4.2.1.4. OADP 1.4.4 リリースノート

OpenShift API for Data Protection (OADP) 1.4.4 は、コンテナーのヘルスグレードを更新するためにリリースされた Container Grade Only (CGO) リリースです。OADP 1.4.3 と比較して、製品自体のコードは変更されていません。

4.2.1.4.1. 既知の問題

ステートフルアプリケーションの復元に関する問題

azurefile-csi ストレージクラスを使用するステートフルアプリケーションを復元すると、復元操作が Finalizing フェーズのままになります。(OADP-5508)

4.2.1.5. OADP 1.4.3 リリースノート

OpenShift API for Data Protection (OADP) 1.4.3 リリースノートには、次の新機能が記載されています。

4.2.1.5.1. 新機能

kubevirt velero プラグインバージョン 0.7.1 の注目すべき変更点

このリリースにより、kubevirt velero プラグインがバージョン 0.7.1 に更新されました。注目すべき改良点として、次のバグ修正と新機能が含まれます。

  • 所有者の仮想マシンが除外されている場合に、仮想マシンインスタンス (VMI) がバックアップから無視されなくなりました。
  • バックアップおよび復元操作中に、すべての追加オブジェクトがオブジェクトグラフに含まれるようになりました。
  • オプションで生成されたラベルが、復元操作中に新しいファームウェアの汎用一意識別子 (UUID) に追加されるようになりました。
  • 復元操作中に仮想マシン実行ストラテジーを切り替えることが可能になりました。
  • ラベルごとに MAC アドレスをクリアできるようになりました。
  • バックアップ操作中の復元固有のチェックがスキップされるようになりました。
  • VirtualMachineClusterInstancetype および VirtualMachineClusterPreference カスタムリソース定義 (CRD) がサポートされるようになりました。
4.2.1.6. OADP 1.4.2 リリースノート

OpenShift API for Data Protection (OADP) 1.4.2 リリースノートには、新機能、解決された問題とバグ、既知の問題が記載されています。

4.2.1.6.1. 新機能

VolumePolicy 機能を使用して同じ namespace 内の異なるボリュームをバックアップできるようになりました

このリリースでは、Velero は VolumePolicy 機能を使用して同じ namespace 内の異なるボリュームをバックアップするためのリソースポリシーを提供します。さまざまなボリュームをバックアップするためにサポートされている VolumePolicy 機能には、skipsnapshot、および fs-backup アクションが含まれます。OADP-1071

ファイルシステムのバックアップとデータムーバーで短期認証情報を使用できるようになりました

ファイルシステムバックアップとデータムーバーでは、AWS Security Token Service (STS) や Google Cloud WIF などの短期認証情報が使用できるようになりました。このサポートにより、PartiallyFailed ステータスなしでバックアップが正常に完了します。OADP-5095

4.2.1.6.2. 解決された問題

VSL に誤ったプロバイダー値が含まれている場合に DPA がエラーを報告するようになった。

以前は、Volume Snapshot Location (VSL) 仕様のプロバイダーが正しくない場合でも、Data Protection Application (DPA) によるリコンサイルが成功していました。この更新により、DPA はエラーを報告し、有効なプロバイダー値を要求します。OADP-5044

バックアップと復元に異なる OADP namespace を使用しているかどうかに関係なく、Data Mover の復元に成功する。

以前は、ある namespace にインストールされた OADP を使用してバックアップ操作を実行し、別の namespace にインストールされた OADP を使用して復元すると、Data Mover の復元が失敗しました。この更新により、Data Mover の復元が成功するようになりました。OADP-5460

SSE-C バックアップは、計算された秘密鍵の MD5 で動作する

以前は、次のエラーでバックアップが失敗しました。

Requests specifying Server Side Encryption with Customer provided keys must provide the client calculated MD5 of the secret key.
Copy to Clipboard Toggle word wrap

この更新により、足りなかった Server-Side Encryption with Customer-Provided Keys (SSE-C) の base64 および MD5 ハッシュが修正されました。その結果、SSE-C バックアップは計算された秘密鍵の MD5 を使用して機能します。さらに、customerKey サイズの誤った errorhandling も修正されました。OADP-5388

このリリースで解決されたすべての問題のリストは、Jira の OADP 1.4.2 の解決済みの問題 を参照してください。

4.2.1.6.3. 既知の問題

nodeSelector 仕様は、Data Mover 復元アクションではサポートされていない。

nodeAgent パラメーターに nodeSelector フィールドを設定して Data Protection Application (DPA) を作成すると、復元操作が完了する代わりに、Data Mover の復元が部分的に失敗します。OADP-5260

TLS スキップ検証が指定されている場合、S3 ストレージはプロキシー環境を使用しない。

イメージレジストリーのバックアップでは、insecureSkipTLSVerify パラメーターが true に設定されている場合、S3 ストレージはプロキシー環境を使用しません。OADP-3143

Kopia はバックアップの有効期限が切れてもアーティファクトが削除されない。

バックアップを削除した後でも、バックアップの有効期限が切れると、Kopia は S3 ロケーションの ${bucket_name}/kopia/$openshift-adp からボリューム成果物が削除されません。詳細は、「Kopia リポジトリーのメンテナンスについて」を参照してください。OADP-5131

4.2.1.7. OADP 1.4.1 リリースノート

OpenShift API for Data Protection (OADP) 1.4.1 リリースノートには、新機能、解決された問題とバグ、既知の問題が記載されています。

4.2.1.7.1. 新機能

クライアントの QPS とバーストを更新するための新しい DPA フィールド

新しい Data Protection Application (DPA) フィールドを使用して、Velero Server Kubernetes API の 1 秒あたりのクエリー数とバースト値を変更できるようになりました。新しい DPA フィールドは、spec.configuration.velero.client-qpsspec.configuration.velero.client-burst です。どちらもデフォルトは 100 です。OADP-4076

Kopia でデフォルト以外のアルゴリズムを有効にする

この更新により、Kopia のハッシュ、暗号化、およびスプリッターアルゴリズムを設定して、デフォルト以外のオプションを選択し、さまざまなバックアップワークロードのパフォーマンスを最適化できるようになりました。

これらのアルゴリズムを設定するには、DataProtectionApplication (DPA) 設定の podConfig セクションで velero Pod の env 変数を設定します。この変数が設定されていない場合、またはサポートされていないアルゴリズムが選択されている場合、Kopia はデフォルトで標準アルゴリズムを使用します。OADP-4640

4.2.1.7.2. 解決された問題

Pod なしでバックアップを正常に復元できるようになる

以前は、Pod なしでバックアップを復元し、StorageClass VolumeBindingModeWaitForFirstConsumer に設定すると、PartiallyFailed ステータスになり、fail to patch dynamic PV, err: context deadline exceeded というエラーが発生していました。この更新により、動的 PV のパッチ適用がスキップされ、バックアップの復元が成功するようになり、PartiallyFailed ステータスが発生しなくなりました。OADP-4231

PodVolumeBackup CR が正しいメッセージを表示するようになる

以前は、PodVolumeBackup カスタムリソース (CR) によって、get a podvolumebackup with status "InProgress" during the server starting, mark it as "Failed" という誤ったメッセージが生成されていました。この更新により、次のメッセージが生成されるようになりました。

found a podvolumebackup with status "InProgress" during the server starting,
mark it as "Failed".
Copy to Clipboard Toggle word wrap

OADP-4224

DPA で imagePullPolicy をオーバーライドできるようになる

以前は、OADP がすべてのイメージに対して imagePullPolicy パラメーターを Always に設定していました。この更新により、OADP が各イメージに sha256 または sha512 ダイジェストが含まれているかどうかを確認し、imagePullPolicyIfNotPresent に設定するようになりました。含まれていない場合、imagePullPolicyAlways に設定されます。このポリシーは、新しい spec.containerImagePullPolicy DPA フィールドを使用してオーバーライドできるようになりました。OADP-4172

OADP Velero が、最初の更新が失敗した場合に復元ステータスの更新を再試行できるようになる

以前は、OADP Velero が復元された CR ステータスの更新に失敗していました。これにより、ステータスが無期限に InProgress のままになっていました。バックアップおよび復元 CR のステータスに依存して完了を判断するコンポーネントも失敗していました。この更新により、復元の際に、復元 CR のステータスが Completed または Failed ステータスに正しく移行するようになりました。OADP-3227

別のクラスターからの BuildConfig ビルド復元がエラーなしで正常に処理されるようになる

以前は、別のクラスターから BuildConfig ビルドリソースの復元を実行すると、アプリケーションが内部イメージレジストリーへの TLS 検証時にエラーを生成していました。結果として、failed to verify certificate: x509: certificate signed by unknown authority エラーが発生していました。この更新により、別のクラスターへの BuildConfig ビルドリソース復元が正常に処理されるようになり、failed to verify certificate エラーが生成されなくなりました。OADP-4692

空の PVC が正常に復元されるようになる

以前は、空の永続ボリューム要求 (PVC) を復元中にデータのダウンロードが失敗していました。次のエラーで失敗していました。

data path restore failed: Failed to run kopia restore: Unable to load
    snapshot : snapshot not found
Copy to Clipboard Toggle word wrap

この更新により、空の PVC を復元するときにデータのダウンロードが正しく終了するようになり、エラーメッセージが生成されなくなりました。OADP-3106

CSI および DataMover プラグインで Velero のメモリーリークが発生しなくなる

以前は、CSI および DataMover プラグインの使用によって Velero のメモリーリークが発生していました。バックアップが終了したときに、Velero プラグインインスタンスが削除されず、Velero Pod で Out of Memory (OOM) 状態が生成されるまで、メモリーリークによってメモリーが消費されていました。この更新により、CSI および DataMover プラグインの使用時に Velero のメモリーリークが発生しなくなりました。OADP-4448

関連する PV が解放されるまで、ポストフック操作が開始されなくなる

以前は、Data Mover 操作の非同期性により、関連する Pod の永続ボリューム (PV) が Data Mover の永続ボリューム要求 (PVC) によって解放される前に、ポストフックが試行されることがありました。この問題により、バックアップが PartiallyFailed ステータスで失敗していました。この更新により、関連する PV が Data Mover PVC によって解放されるまでポストフック操作が開始されなくなり、PartiallyFailed バックアップステータスが発生しなくなりました。OADP-3140

DPA のデプロイが、37 文字を超える namespace でも期待どおりに機能するようになる

新しい DPA を作成するために、37 文字を超える namespace に OADP Operator をインストールすると、"cloud-credentials" シークレットのラベル付けが失敗し、DPA によって次のエラーが報告されていました。

The generated label name is too long.
Copy to Clipboard Toggle word wrap

この更新により、名前が 37 文字を超える namespace でも DPA の作成が失敗しなくなりました。OADP-3960

タイムアウトエラーをオーバーライドすることで復元が正常に完了するようになる

以前は、大規模な環境で、復元操作の結果が Partiallyfailed ステータスになり、fail to patch dynamic PV, err: context deadline exceeded というエラーが発生していました。この更新により、Velero サーバー引数の resourceTimeout を使用してこのタイムアウトエラーをオーバーライドすることで、復元が成功するようになりました。OADP-4344

このリリースで解決されたすべての問題のリストは、Jira の OADP 1.4.1 の解決済みの問題 を参照してください。

4.2.1.7.3. 既知の問題

OADP を復元した後に Cassandra アプリケーション Pod が CrashLoopBackoff ステータスになる

OADP が復元されると、Cassandra アプリケーション Pod が CrashLoopBackoff ステータスになる可能性があります。この問題を回避するには、OADP を復元した後、CrashLoopBackoff エラー状態を返す StatefulSet Pod を削除します。その後、StatefulSet コントローラーがこれらの Pod を再作成し、正常に動作するようになります。OADP-4407

ImageStream を参照するデプロイメントが適切に復元されず、Pod とボリュームの内容が破損する

File System Backup (FSB) の復元操作中に、ImageStream を参照する Deployment リソースが適切に復元されません。FSB を実行する復元された Pod と postHook が途中で終了します。

復元操作中に、OpenShift Container Platform コントローラーが、Deployment リソースの spec.template.spec.containers[0].image フィールドを新しい ImageStreamTag ハッシュで更新します。更新により、新しい Pod のロールアウトがトリガーされ、velero が FSB とともにポストフックを実行する Pod が終了します。イメージストリームトリガーの詳細は、イメージストリームの変更時の更新のトリガー を参照してください。

この動作を回避するには、次の 2 段階の復元プロセスを実行します。

  1. Deployment リソースを除外して復元を実行します。次に例を示します。

    $ velero restore create <RESTORE_NAME> \
      --from-backup <BACKUP_NAME> \
      --exclude-resources=deployment.apps
    Copy to Clipboard Toggle word wrap
  2. 最初の復元が成功したら、次の例のように、次のリソースを含めて 2 回目の復元を実行します。

    $ velero restore create <RESTORE_NAME> \
      --from-backup <BACKUP_NAME> \
      --include-resources=deployment.apps
    Copy to Clipboard Toggle word wrap

    OADP-3954

4.2.1.8. OADP 1.4.0 リリースノート

OpenShift API for Data Protection (OADP) 1.4.0 リリースノートには、解決された問題と既知の問題が記載されています。

4.2.1.8.1. 解決された問題

OpenShift Container Platform 4.16 では復元が正しく機能します

以前は、削除されたアプリケーションの namespace を復元する際に、OpenShift Container Platform 4.16 で resource name may not be empty エラーが発生し、復元操作が部分的に失敗していました。この更新により、OpenShift Container Platform 4.16 で復元が期待どおりに機能するようになりました。OADP-4075

OpenShift Container Platform 4.16 クラスターでは、Data Mover バックアップが正常に動作します。

以前は、Velero は Spec.SourceVolumeMode フィールドが存在しない以前のバージョンの SDK を使用していました。その結果、バージョン 4.2 の外部スナップショットの OpenShift Container Platform 4.16 クラスターで Data Mover バックアップが失敗しました。この更新により、外部スナップショットインスタンスはバージョン 7.0 以降にアップグレードされました。その結果、OpenShift Container Platform 4.16 クラスターではバックアップが失敗しなくなります。OADP-3922

このリリースで解決されたすべての問題のリストは、Jira の OADP 1.4.0 の解決済みの問題 のリストを参照してください。

4.2.1.8.2. 既知の問題

MCG に checksumAlgorithm が設定されていない場合、バックアップが失敗する

バックアップロケーションとして Noobaa を使用してアプリケーションのバックアップを実行するときに、checksumAlgorithm 設定パラメーターが設定されていない場合は、バックアップは失敗します。この問題を解決するために、Backup Storage Location (BSL) の設定で checksumAlgorithm の値を指定しなかった場合、空の値が追加されます。空の値は、Data Protection Application (DPA) カスタムリソース (CR) を使用して作成された BSL に対してのみ追加され、他の方法を使用して BSL が作成された場合、この値は追加されません。OADP-4274

このリリースにおける既知の問題の完全なリストは、Jira の OADP 1.4.0 known issues のリストを参照してください。

4.2.1.8.3. アップグレードの注意事項
注記

必ず次のマイナーバージョンにアップグレードしてください。バージョンは絶対に スキップしないでください。新しいバージョンに更新するには、一度に 1 つのチャネルのみアップグレードします。たとえば、OpenShift API for Data Protection (OADP) 1.1 から 1.3 にアップグレードする場合、まず 1.2 にアップグレードし、次に 1.3 にアップグレードします。

4.2.1.8.3.1. OADP 1.3 から 1.4 への変更点

Velero サーバーが、バージョン 1.12 から 1.14 に更新されました。Data Protection Application (DPA) には変更がない点に注意してください。

これにより、以下の変更が発生します。

  • velero-plugin-for-csi コードが Velero コードで利用可能になりました。つまり、プラグインに init コンテナーが不要になりました。
  • Velero は、クライアントのバーストと QPS のデフォルトをそれぞれ 30 と 20 から 100 と 100 に変更しました。
  • velero-plugin-for-aws プラグインは、BackupStorageLocation オブジェクト (BSL) の spec.config.checksumAlgorithm フィールドのデフォルト値を "" (チェックサム計算なし) から CRC32 アルゴリズムに更新しました。チェックサムアルゴリズムタイプは AWS でのみ動作することがわかっています。いくつかの S3 プロバイダーでは、チェックサムアルゴリズムを "" に設定して md5sum を無効にする必要があります。ストレージプロバイダーで md5sum アルゴリズムのサポートと設定を確認してください。

    OADP 1.4 では、この設定の DPA 内で作成される BSL のデフォルト値は "" です。このデフォルト値は、md5sum がチェックされないことを意味し、OADP 1.3 と一致しています。DPA 内で作成された BSL の場合は、DPA の spec.backupLocations[].velero.config.checksumAlgorithm フィールドを使用して更新します。BSL が DPA の外部で作成された場合は、BSL で spec.config.checksumAlgorithm を使用してこの設定を更新できます。

4.2.1.8.3.2. DPA 設定をバックアップする

現在の DataProtectionApplication (DPA) 設定をバックアップする必要があります。

手順

  • 次のコマンドを実行して、現在の DPA 設定を保存します。

    コマンドの例

    $ oc get dpa -n openshift-adp -o yaml > dpa.orig.backup
    Copy to Clipboard Toggle word wrap

4.2.1.8.3.3. OADP Operator をアップグレードする

OpenShift API for Data Protection (OADP) Operator をアップグレードする場合は、次の手順を使用します。

手順

  1. OADP Operator のサブスクリプションチャネルを、stable-1.3 から stable-1.4 に変更します。
  2. Operator とコンテナーが更新され、再起動するまで待ちます。
4.2.1.8.4. DPA を新しいバージョンに変換する

OADP 1.3 から 1.4 にアップグレードする場合、Data Protection Application (DPA) を変更する必要はありません。

4.2.1.8.5. アップグレードの検証

アップグレードを検証するには、次の手順を使用します。

手順

  1. 次のコマンドを実行して OpenShift API for Data Protection (OADP) リソースを表示し、インストールを検証します。

    $ oc get all -n openshift-adp
    Copy to Clipboard Toggle word wrap

    出力例

    NAME                                                     READY   STATUS    RESTARTS   AGE
    pod/oadp-operator-controller-manager-67d9494d47-6l8z8    2/2     Running   0          2m8s
    pod/restic-9cq4q                                         1/1     Running   0          94s
    pod/restic-m4lts                                         1/1     Running   0          94s
    pod/restic-pv4kr                                         1/1     Running   0          95s
    pod/velero-588db7f655-n842v                              1/1     Running   0          95s
    
    NAME                                                       TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
    service/oadp-operator-controller-manager-metrics-service   ClusterIP   172.30.70.140    <none>        8443/TCP   2m8s
    
    NAME                    DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
    daemonset.apps/restic   3         3         3       3            3           <none>          96s
    
    NAME                                                READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/oadp-operator-controller-manager    1/1     1            1           2m9s
    deployment.apps/velero                              1/1     1            1           96s
    
    NAME                                                           DESIRED   CURRENT   READY   AGE
    replicaset.apps/oadp-operator-controller-manager-67d9494d47    1         1         1       2m9s
    replicaset.apps/velero-588db7f655                              1         1         1       96s
    Copy to Clipboard Toggle word wrap

  2. 次のコマンドを実行して、DataProtectionApplication (DPA) が調整されていることを確認します。

    $ oc get dpa dpa-sample -n openshift-adp -o jsonpath='{.status}'
    Copy to Clipboard Toggle word wrap

    出力例

    {"conditions":[{"lastTransitionTime":"2023-10-27T01:23:57Z","message":"Reconcile complete","reason":"Complete","status":"True","type":"Reconciled"}]}
    Copy to Clipboard Toggle word wrap

  3. typeReconciled に設定されていることを確認します。
  4. 次のコマンドを実行して、Backup Storage Location を確認し、PHASEAvailable であることを確認します。

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

    出力例

    NAME           PHASE       LAST VALIDATED   AGE     DEFAULT
    dpa-sample-1   Available   1s               3d16h   true
    Copy to Clipboard Toggle word wrap

4.3. OADP パフォーマンス

4.4. OADP の機能とプラグイン

OpenShift API for Data Protection (OADP) 機能は、アプリケーションをバックアップおよび復元するためのオプションを提供します。

デフォルトのプラグインにより、Velero は特定のクラウドプロバイダーと統合し、OpenShift Container Platform リソースをバックアップおよび復元できます。

4.4.1. OADP の機能

OpenShift API for Data Protection (OADP) は、以下の機能をサポートします。

バックアップ

OADP を使用して OpenShift Platform 上のすべてのアプリケーションをバックアップしたり、タイプ、namespace、またはラベルでリソースをフィルターしたりできます。

OADP は、Kubernetes オブジェクトと内部イメージをアーカイブファイルとしてオブジェクトストレージに保存することにより、それらをバックアップします。OADP は、ネイティブクラウドスナップショット API または Container Storage Interface (CSI) を使用してスナップショットを作成することにより、永続ボリューム (PV) をバックアップします。スナップショットをサポートしないクラウドプロバイダーの場合、OADP は Restic を使用してリソースと PV データをバックアップします。

注記

バックアップと復元を成功させるには、アプリケーションのバックアップから Operator を除外する必要があります。

復元

バックアップからリソースと PV を復元できます。バックアップ内のすべてのオブジェクトを復元することも、オブジェクトを namespace、PV、またはラベルでフィルタリングすることもできます。

注記

バックアップと復元を成功させるには、アプリケーションのバックアップから Operator を除外する必要があります。

スケジュール
指定した間隔でバックアップをスケジュールできます。
フック
フックを使用して、Pod 上のコンテナーでコマンドを実行できます。たとえば、fsfreeze を使用してファイルシステムをフリーズできます。バックアップまたは復元の前または後に実行するようにフックを設定できます。復元フックは、init コンテナーまたはアプリケーションコンテナーで実行できます。

4.4.2. OADP プラグイン

OpenShift API for Data Protection (OADP) は、バックアップおよびスナップショット操作をサポートするためにストレージプロバイダーと統合されたデフォルトの Velero プラグインを提供します。Velero プラグインに基づき、カスタムプラグイン を作成できます。

OADP は、OpenShift Container Platform リソースバックアップ、OpenShift Virtualization リソースバックアップ、および Container Storage Interface (CSI) スナップショット用のプラグインも提供します。

Expand
表4.3 OADP プラグイン
OADP プラグイン機能ストレージの場所

aws

Kubernetes オブジェクトをバックアップし、復元します。

AWS S3

スナップショットを使用してボリュームをバックアップおよび復元します。

AWS EBS

azure

Kubernetes オブジェクトをバックアップし、復元します。

Microsoft Azure Blob ストレージ

スナップショットを使用してボリュームをバックアップおよび復元します。

Microsoft Azure マネージドディスク

gcp

Kubernetes オブジェクトをバックアップし、復元します。

Google Cloud Storage

スナップショットを使用してボリュームをバックアップおよび復元します。

Google Compute Engine ディスク

openshift

OpenShift Container Platform リソースをバックアップおよび復元します。[1]

オブジェクトストア

kubevirt

OpenShift Virtualization リソースをバックアップおよび復元します。[2]

オブジェクトストア

csi

CSI スナップショットを使用して、ボリュームをバックアップおよび復元します。[3]

CSI スナップショットをサポートするクラウドストレージ

vsm

VolumeSnapshotMover は、クラスターの削除などの状況で、ステートフルアプリケーションを回復するための復元プロセス中に使用されるスナップショットをクラスターからオブジェクトストアに再配置します。[4]

オブジェクトストア

  1. 必須。
  2. 仮想マシンディスクは CSI スナップショットまたは Restic でバックアップされます。
  3. csi プラグインは、Kubernetes CSI スナップショット API を使用します。

    • OADP 1.1 以降は snapshot.storage.k8s.io/v1 を使用します。
    • OADP 1.0 は snapshot.storage.k8s.io/v1beta1 を使用します。
  4. OADP 1.2 のみ。

4.4.3. OADP Velero プラグインについて

Velero のインストール時に、次の 2 種類のプラグインを設定できます。

  • デフォルトのクラウドプロバイダープラグイン
  • カスタムプラグイン

どちらのタイプのプラグインもオプションですが、ほとんどのユーザーは少なくとも 1 つのクラウドプロバイダープラグインを設定します。

4.4.3.1. デフォルトの Velero クラウドプロバイダープラグイン

デプロイメント中に oadp_v1alpha1_dpa.yaml ファイルを設定するときに、次のデフォルトの Velero クラウドプロバイダープラグインのいずれかをインストールできます。

  • aws (Amazon Web Services)
  • gcp (Google Cloud)
  • azure (Microsoft Azure)
  • openshift (OpenShift Velero プラグイン)
  • csi (Container Storage Interface)
  • kubevirt (KubeVirt)

デプロイメント中に oadp_v1alpha1_dpa.yaml ファイルで目的のデフォルトプラグインを指定します。

ファイルの例:

次の .yaml ファイルは、openshiftawsazure、および gcp プラグインをインストールします。

 apiVersion: oadp.openshift.io/v1alpha1
 kind: DataProtectionApplication
 metadata:
   name: dpa-sample
 spec:
   configuration:
     velero:
       defaultPlugins:
       - openshift
       - aws
       - azure
       - gcp
Copy to Clipboard Toggle word wrap
4.4.3.2. カスタム Velero プラグイン

デプロイメント中に oadp_v1alpha1_dpa.yaml ファイルを設定するときに、プラグインの imagename を指定することにより、カスタム Velero プラグインをインストールできます。

デプロイメント中に oadp_v1alpha1_dpa.yaml ファイルで目的のカスタムプラグインを指定します。

ファイルの例:

次の .yaml ファイルは、デフォルトの openshiftazure、および gcp プラグインと、イメージ quay.io/example-repo/custom-velero-plugin を持つ custom-plugin-example という名前のカスタムプラグインをインストールします。

apiVersion: oadp.openshift.io/v1alpha1
kind: DataProtectionApplication
metadata:
 name: dpa-sample
spec:
 configuration:
   velero:
     defaultPlugins:
     - openshift
     - azure
     - gcp
     customPlugins:
     - name: custom-plugin-example
       image: quay.io/example-repo/custom-velero-plugin
Copy to Clipboard Toggle word wrap
4.4.3.3. Velero プラグインがメッセージ "received EOF, stopping recv loop" を返す
注記

Velero プラグインは、別のプロセスとして開始されます。Velero 操作が完了すると、成功したかどうかにかかわらず終了します。デバッグログの received EOF, stopping recv loop メッセージは、プラグイン操作が完了したことを示します。エラーが発生したわけではありません。

4.4.4. OADP でサポートされるアーキテクチャー

OpenShift API for Data Protection (OADP) は、次のアーキテクチャーをサポートします。

  • AMD64
  • ARM64
  • PPC64le
  • s390x
注記

OADP 1.2.0 以降のバージョンは、ARM64 アーキテクチャーをサポートします。

4.4.5. IBM Power および IBM Z の OADP サポート

OpenShift API for Data Protection (OADP) はプラットフォームに依存しません。以下は、IBM Power® および IBM Z® のみに関連する情報です。

  • OADP 1.3.8 は、IBM Power® と IBM Z® の両方の OpenShift Container Platform 4.12、4.13、4.14、4.15 に対して正常にテストされました。次のセクションでは、これらのシステムのバックアップ場所に関して、OADP 1.3.8 のテストおよびサポート情報を示します。
  • OADP 1.4.7 は、IBM Power® と IBM Z® の両方の OpenShift Container Platform 4.14、4.15、4.16、4.17 に対して正常にテストされました。次のセクションでは、これらのシステムのバックアップ場所に関して、OADP 1.4.7 のテストおよびサポート情報を示します。
4.4.5.1. IBM Power を使用したターゲットバックアップロケーションの OADP サポート
  • OpenShift Container Platform 4.12、4.13、4.14、4.15、および OADP 1.3.8 で実行される IBM Power® は、AWS S3 バックアップロケーションターゲットに対して正常にテストされました。テストには AWS S3 ターゲットのみが使用されましたが、Red Hat は、AWS 以外のすべての S3 バックアップロケーションターゲットに対して、OpenShift Container Platform 4.13、4.14、4.15、および OADP 1.3.8 を使用した IBM Power® の実行をサポートしています。
  • OpenShift Container Platform 4.14、4.15、4.16、4.17、および OADP 1.4.7 で実行される IBM Power® は、AWS S3 バックアップロケーションターゲットに対して正常にテストされました。テストには AWS S3 ターゲットのみが使用されましたが、Red Hat は、AWS 以外のすべての S3 バックアップロケーションターゲットに対して、OpenShift Container Platform 4.14、4.15、4.16、4.17、および OADP 1.4.7 を使用した IBM Power® の実行をサポートしています。
4.4.5.2. IBM Z を使用したターゲットバックアップロケーションの OADP テストとサポート
  • OpenShift Container Platform 4.12、4.13、4.14、4.15、および 1.3.8 で実行されている IBM Z® は、AWS S3 バックアップロケーションターゲットに対して正常にテストされました。テストには AWS S3 ターゲットのみが使用されましたが、Red Hat は、AWS 以外のすべての S3 バックアップロケーションターゲットに対して、OpenShift Container Platform 4.13、4.14、4.15、1.3.8 を使用した IBM Z® の実行をサポートしています。
  • OpenShift Container Platform 4.14、4.15、4.16、4.17、および 1.4.7 で実行されている IBM Z® は、AWS S3 バックアップロケーションターゲットに対して正常にテストされました。テストには AWS S3 ターゲットのみが使用されましたが、Red Hat は、AWS 以外のすべての S3 バックアップロケーションターゲットに対して、OpenShift Container Platform 4.14、4.15、4.16、4.17、および 1.4.7 を使用した IBM Z® の実行をサポートしています。
4.4.5.2.1. IBM Power (R) および IBM Z(R) プラットフォームを使用した OADP の既知の問題
  • 現在、IBM Power® および IBM Z® プラットフォームにデプロイされたシングルノードの OpenShift クラスターには、バックアップ方法の制限があります。現在、これらのプラットフォーム上のシングルノード OpenShift クラスターと互換性があるのは、NFS ストレージのみです。さらに、バックアップおよび復元操作では、Kopia や Restic などの File System Backup (FSB) 方式のみがサポートされます。現在、この問題に対する回避策はありません。

4.4.6. OADP プラグインの既知の問題

次のセクションでは、OpenShift API for Data Protection (OADP) プラグインの既知の問題を説明します。

バックアップと Backup Storage Location (BSL) が Data Protection Application (DPA) の範囲外で管理されている場合、OADP コントローラー (つまり DPA の調整) によって関連する oadp-<bsl_name>-<bsl_provider>-registry-secret が作成されません。

バックアップを実行すると、OpenShift Velero プラグインがイメージストリームバックアップでパニックになり、次のパニックエラーが表示されます。

024-02-27T10:46:50.028951744Z time="2024-02-27T10:46:50Z" level=error msg="Error backing up item"
backup=openshift-adp/<backup name> error="error executing custom action (groupResource=imagestreams.image.openshift.io,
namespace=<BSL Name>, name=postgres): rpc error: code = Aborted desc = plugin panicked:
runtime error: index out of range with length 1, stack trace: goroutine 94…
Copy to Clipboard Toggle word wrap
4.4.6.1.1. パニックエラーを回避するための回避策

Velero プラグインのパニックエラーを回避するには、次の手順を実行します。

  1. カスタム BSL に適切なラベルを付けます。

    $ oc label backupstoragelocations.velero.io <bsl_name> app.kubernetes.io/component=bsl
    Copy to Clipboard Toggle word wrap
  2. BSL にラベルを付けた後、DPA の調整を待ちます。

    注記

    DPA 自体に軽微な変更を加えることで、強制的に調整を行うことができます。

  3. DPA の調整では、適切な oadp-<bsl_name>-<bsl_provider>-registry-secret が作成されていること、正しいレジストリーデータがそこに設定されていることを確認します。

    $ oc -n openshift-adp get secret/oadp-<bsl_name>-<bsl_provider>-registry-secret -o json | jq -r '.data'
    Copy to Clipboard Toggle word wrap
4.4.6.2. OpenShift ADP Controller のセグメンテーション違反

cloudstoragerestic の両方を有効にして DPA を設定すると、openshift-adp-controller-manager Pod がクラッシュし、Pod がクラッシュループのセグメンテーション違反で失敗するまで無期限に再起動します。

velero または cloudstorage は相互に排他的なフィールドであるため、どちらか一方だけ定義できます。

  • velerocloudstorage の両方が定義されている場合、openshift-adp-controller-manager は失敗します。
  • velerocloudstorage のいずれも定義されていない場合、openshift-adp-controller-manager は失敗します。

この問題の詳細は、OADP-1054 を参照してください。

4.4.6.2.1. OpenShift ADP Controller のセグメンテーション違反の回避策

DPA の設定時に、velero または cloudstorage のいずれかを定義する必要があります。DPA で両方の API を定義すると、openshift-adp-controller-manager Pod がクラッシュループのセグメンテーション違反で失敗します。

4.4.7. OADP と FIPS

Federal Information Processing Standards (FIPS) は、Federal Information Security Management Act (FISMA) に従って米国連邦政府が開発した一連のコンピューターセキュリティー標準です。

OpenShift API for Data Protection (OADP) はテスト済みで、FIPS 対応の OpenShift Container Platform クラスターで動作します。

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 マニフェストファイルを作成します。

    apiVersion: objectbucket.io/v1alpha1
    kind: ObjectBucketClaim
    metadata:
      name: test-obc
      namespace: openshift-adp
    spec:
      storageClassName: openshift-storage.noobaa.io
      generateBucketName: test-backup-bucket
    Copy to Clipboard Toggle word wrap

    ここでは、以下のようになります。

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

    $ oc create -f <obc_file_name>
    Copy to Clipboard Toggle word wrap

    ここでは、以下のようになります。

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

    $ oc extract --to=- cm/test-obc
    Copy to Clipboard Toggle word wrap

    test-obc は OBC の名前です。

    出力例

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

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

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

    出力例

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

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

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

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

    $ oc create secret generic \
      cloud-credentials \
      -n openshift-adp \
      --from-file cloud=cloud-credentials
    Copy to Clipboard Toggle word wrap
  8. 次の例に示すように、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
      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
    Copy to Clipboard Toggle word wrap

    ここでは、以下のようになります。

    defaultSnapshotMoveData
    OADP Data Mover を使用して、リモートオブジェクトストレージへの Container Storage Interface (CSI)スナップショットの移動を有効にするには、true に設定します。
    s3Url
    ODF ストレージの S3 URL を指定します。
    <bucket_name>
    バケット名を指定します。
  9. 次のコマンドを実行して DPA を作成します。

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

    $ oc get dpa -o yaml
    Copy to Clipboard Toggle word wrap

    出力例

    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 Toggle word wrap

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

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

    出力例

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

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

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

    ここでは、以下のようになります。

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

    $ oc apply -f <backup_cr_filename>
    Copy to Clipboard Toggle word wrap

検証

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

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

    出力例

    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 Toggle word wrap

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 を作成します。

    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
    Copy to Clipboard Toggle word wrap

    ここでは、以下のようになります。

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

    $ oc apply -f <restore_cr_filename>
    Copy to Clipboard Toggle word wrap

検証

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

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

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

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

    出力例

    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 Toggle word wrap

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 マニフェストを作成します。

    apiVersion: objectbucket.io/v1alpha1
    kind: ObjectBucketClaim
    metadata:
      name: test-obc
      namespace: openshift-adp
    spec:
      storageClassName: openshift-storage.noobaa.io
      generateBucketName: test-backup-bucket
    Copy to Clipboard Toggle word wrap

    ここでは、以下のようになります。

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

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

    $ oc extract --to=- cm/test-obc
    Copy to Clipboard Toggle word wrap

    test-obc は OBC の名前です。

    出力例

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

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

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

    出力例

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

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

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

    $ oc create secret generic \
      cloud-credentials \
      -n openshift-adp \
      --from-file cloud=cloud-credentials
    Copy to Clipboard Toggle word wrap
  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 Toggle word wrap

    出力例

    LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0...
    ....gpwOHMwaG9CRmk5a3....FLS0tLS0K
    Copy to Clipboard Toggle word wrap

  8. 次の例に示すように、バケット名と CA 証明書を使用して 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"
            provider: aws
            default: true
            credential:
              key: cloud
              name:  cloud-credentials
            objectStorage:
              bucket: <bucket_name>
              prefix: oadp
              caCert: <ca_cert>
    Copy to Clipboard Toggle word wrap

    ここでは、以下のようになります。

    insecureSkipTLSVerify
    SSL/TLS セキュリティーを有効にするかどうかを指定します。true に設定すると、SSL/TLS セキュリティーが無効になります。false に設定すると、SSL/TLS セキュリティーが有効になります。
    <bucket_name>
    前の手順で抽出されたバケットの名前を指定します。
    <ca_cert>
    直前の手順の Base64 でエンコードされた証明書を指定します。
  9. 次のコマンドを実行して、DataProtectionApplication CR を作成します。

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

    $ oc get dpa -o yaml
    Copy to Clipboard Toggle word wrap

    出力例

    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 Toggle word wrap

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

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

    出力例

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

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

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

    ここでは、以下のようになります。

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

    $ oc apply -f <backup_cr_filename>
    Copy to Clipboard Toggle word wrap

検証

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

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

    出力例

    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 Toggle word wrap

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 を設定します。

    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
    Copy to Clipboard Toggle word wrap

    ここでは、以下のようになります。

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

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

    $ oc get dpa -o yaml
    Copy to Clipboard Toggle word wrap

    出力例

    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 Toggle word wrap

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

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

    次の例のような出力が表示されます。

    NAME           PHASE       LAST VALIDATED   AGE   DEFAULT
    dpa-sample-1   Available   3s               15s   true
    Copy to Clipboard Toggle word wrap
  5. 次の例に示すように、Backup CR を設定します。

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

    ここでは、以下のようになります。

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

    $ oc apply -f <backup_cr_filename>
    Copy to Clipboard Toggle word wrap

検証

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

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

    出力例

    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 Toggle word wrap

4.6. OADP のインストール

4.6.1. OADP のインストールについて

クラスター管理者は、OADP Operator をインストールして、OpenShift API for Data Protection (OADP) をインストールします。OADP Operator は Velero 1.14 をインストールします。

注記

OADP 1.0.4 以降、すべての OADP 1.0.z バージョンは Migration Toolkit for Containers Operator の依存関係としてのみ使用でき、スタンドアロン Operator として使用することはできません。

Kubernetes リソースと内部イメージをバックアップするには、次のいずれかのストレージタイプなど、バックアップロケーションとしてオブジェクトストレージが必要です。

個々の OADP デプロイメントごとに、同じ namespace 内に複数の Backup Storage Location を設定できます。

注記

特に指定のない限り、"NooBaa" は軽量オブジェクトストレージを提供するオープンソースプロジェクトを指し、"Multicloud Object Gateway (MCG)" は NooBaa の Red Hat ディストリビューションを指します。

MCG の詳細は、アプリケーションを使用して Multicloud Object Gateway にアクセスする を参照してください。

重要

オブジェクトストレージのバケット作成を自動化する CloudStorage API は、テクノロジープレビュー機能のみです。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。

Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、以下のリンクを参照してください。

注記

CloudStorage API は、CloudStorage オブジェクトを使用しており、OADP で CloudStorage API を使用して BackupStorageLocation として使用する S3 バケットを自動的に作成するためのテクノロジープレビュー機能です。

CloudStorage API は、既存の S3 バケットを指定して BackupStorageLocation オブジェクトを手動作成することをサポートしています。現在、S3 バケットを自動的に作成する CloudStorage API は、AWS S3 ストレージに対してのみ有効です。

スナップショットまたは File System Backup (FSB) を使用して、永続ボリューム (PV) をバックアップできます。

スナップショットを使用して PV をバックアップするには、ネイティブスナップショット API または Container Storage Interface (CSI) スナップショットのいずれかをサポートするクラウドプロバイダー (次のいずれかのクラウドプロバイダーなど) が必要です。

注記

OCP 4.11 以降で CSI バックアップを使用する場合は、OADP 1.1.x をインストールします。

OADP 1.0.x は、OCP 4.11 以降での CSI バックアップをサポートしていません。OADP 1.0.x には Velero 1.7.x が含まれており、OCP 4.11 以降には存在しない API グループ snapshot.storage.k8s.io/v1beta1 が必要です。

クラウドプロバイダーがスナップショットをサポートしていない場合、またはストレージが NFS である場合は、オブジェクトストレージ上の File System Backup によるアプリケーションのバックアップ: Kopia または Restic を使用してアプリケーションをバックアップできます。

デフォルトの Secret を作成し、次に、Data Protection Application をインストールします。

4.6.1.1. AWS S3 互換のバックアップストレージプロバイダー

OADP は、多くの S3 互換オブジェクトストレージプロバイダーと連携します。OADP のリリースごとに、複数のオブジェクトストレージプロバイダーが認定およびテストされています。さまざまな S3 プロバイダーが OADP で動作することが知られていますが、テストおよび認定は特にされていません。これらのプロバイダーはベストエフォート方式でサポートされます。いくつかの S3 オブジェクトストレージプロバイダーには、このドキュメントに記載されている既知の問題と制限があります。

注記

Red Hat は、任意の S3 互換ストレージ上の OADP のサポートを提供しますが、S3 エンドポイントが問題の根本原因であると判断された場合はサポートが停止されます。

4.6.1.1.1. 認定バックアップストレージプロバイダー

次の AWS S3 互換オブジェクトストレージプロバイダーは、AWS プラグインを介して OADP によって完全にサポートされており、Backup Storage Location として使用できます。

  • MinIO
  • Multicloud Object Gateway (MCG)
  • Amazon Web Services (AWS) S3
  • IBM Cloud® Object Storage S3
  • Ceph RADOS ゲートウェイ (Ceph オブジェクトゲートウェイ)
  • Red Hat Container Storage
  • Red Hat OpenShift Data Foundation
  • NetApp ONTAP S3 Object Storage
注記

Google Cloud と Microsoft Azure には独自の Velero オブジェクトストアプラグインがあります。

4.6.1.1.2. サポートされていないバックアップストレージプロバイダー

次の AWS S3 互換オブジェクトストレージプロバイダーは、AWS プラグインを介して Velero と連携し、Backup Storage Location として使用できることがわかっています。ただし、Red Hat ではサポートされておらず、テストも行われていません。

  • Oracle Cloud
  • DigitalOcean
  • NooBaa (Multicloud Object Gateway (MCG) を使用してインストールされていない場合)
  • Tencent Cloud
  • Quobyte
  • Cloudian HyperStore
注記

特に指定のない限り、"NooBaa" は軽量オブジェクトストレージを提供するオープンソースプロジェクトを指し、"Multicloud Object Gateway (MCG)" は NooBaa の Red Hat ディストリビューションを指します。

MCG の詳細は、アプリケーションを使用して Multicloud Object Gateway にアクセスする を参照してください。

4.6.1.1.3. 既知の制限があるバックアップストレージプロバイダー

次の AWS S3 互換オブジェクトストレージプロバイダーは、AWS プラグインを介して Velero と連携することがわかっていますが、機能セットが制限されています。

  • Swift - バックアップストレージの Backup Storage Location として使用できますが、ファイルシステムベースのボリュームバックアップおよび復元については Restic と互換性がありません。
4.6.1.2. OpenShift Data Foundation で障害復旧を行うための Multicloud Object Gateway (MCG) 設定

OpenShift Data Foundation 上の MCG バケット backupStorageLocation にクラスターストレージを使用する場合は、MCG を外部オブジェクトストアとして設定します。

警告

MCG を外部オブジェクトストアとして設定しない場合、バックアップが利用できなくなる可能性があります。

注記

特に指定のない限り、"NooBaa" は軽量オブジェクトストレージを提供するオープンソースプロジェクトを指し、"Multicloud Object Gateway (MCG)" は NooBaa の Red Hat ディストリビューションを指します。

MCG の詳細は、アプリケーションを使用して Multicloud Object Gateway にアクセスする を参照してください。

手順

4.6.1.3. OADP 更新チャネルについて

OADP Operator をインストールするときに、更新チャネル を選択します。このチャネルにより、OADP Operator と Velero のどちらのアップグレードを受け取るかが決まります。いつでもチャンネルを切り替えることができます。

次の更新チャネルを利用できます。

  • stable チャネルは非推奨になりました。stable チャネルには、OADP.v1.1.z および OADP.v1.0.z の古いバージョン用の OADP ClusterServiceVersion のパッチ (z-stream 更新) が含まれています。
  • stable-1.0 チャネルは非推奨であり、サポートされていません。
  • stable-1.1 チャネルは非推奨であり、サポートされていません。
  • stable-1.2 チャネルは非推奨であり、サポートされていません。
  • stable-1.3 チャネルには、最新の OADP 1.3 ClusterServiceVersionOADP.v1.3.z が含まれています。
  • stable-1.4 チャネルには、最新の OADP 1.4 ClusterServiceVersionOADP.v1.4.z が含まれています。

詳細は、OpenShift Operator のライフサイクル を参照してください。

適切な更新チャネルはどれですか?

  • stable チャネルは非推奨になりました。すでに stable チャネルを使用している場合は、引き続き OADP.v1.1.z から更新が提供されます。
  • stable-1.y をインストールする OADP 1.y 更新チャネルを選択し、そのパッチを引き続き受け取ります。このチャネルを選択すると、バージョン 1.y.z のすべての z-stream パッチを受け取ります。

いつ更新チャネルを切り替える必要がありますか?

  • OADP 1.y がインストールされていて、その y-stream のパッチのみを受け取りたい場合は、stable 更新チャネルから stable-1.y 更新チャネルに切り替える必要があります。その後、バージョン 1.y.z のすべての z-stream パッチを受け取ります。
  • OADP 1.0 がインストールされていて、OADP 1.1 にアップグレードしたい場合、OADP 1.1 のみのパッチを受け取るには、stable-1.0 更新チャネルから stable-1.1 更新チャネルに切り替える必要があります。その後、バージョン 1.1.z のすべての z-stream パッチを受け取ります。
  • OADP 1.y がインストールされていて、y が 0 より大きく、OADP 1.0 に切り替える場合は、OADP Operator をアンインストールしてから、stable-1.0 更新チャネルを使用して再インストールする必要があります。その後、バージョン 1.0.z のすべての z-stream パッチを受け取ります。
注記

更新チャネルを切り替えて、OADP 1.y から OADP 1.0 に切り替えることはできません。Operator をアンインストールしてから再インストールする必要があります。

4.6.1.4. 複数の namespace への OADP のインストール

OpenShift API for Data Protection を同じクラスター上の複数の namespace にインストールすると、複数のプロジェクト所有者が独自の OADP インスタンスを管理できるようになります。このユースケースは、File System Backup (FSB) と Container Storage Interface (CSI) を使用して検証されています。

このドキュメントに含まれるプラットフォームごとの手順で指定されている OADP の各インスタンスを、以下の追加要件とともにインストールします。

  • 同じクラスター上の OADP のデプロイメントは、すべて同じバージョン (例: 1.4.0) である必要があります。同じクラスターに異なるバージョンの OADP をインストールすることは サポートされていません
  • OADP の個々のデプロイメントには、一意の認証情報セットと一意の BackupStorageLocation 設定が必要です。同じ namespace 内で、複数の BackupStorageLocation 設定を使用することもできます。
  • デフォルトでは、各 OADP デプロイメントには namespace 全体でクラスターレベルのアクセス権があります。OpenShift Container Platform 管理者は、同じ namespace へのバックアップと復元を同時に行わないことなど、潜在的な影響を慎重に検討する必要があります。
4.6.1.5. OADP がバックアップデータの不変性をサポートする

OADP 1.4 以降では、バージョン管理が有効になっている AWS S3 バケットに OADP バックアップを保存できます。バージョン管理のサポートは AWS S3 バケットのみに適用され、S3 互換バケットには適用されません。

特定のクラウドプロバイダーの制限については、次のリストを参照してください。

  • S3 オブジェクトロックはバージョン管理されたバケットにのみ適用されるため、AWS S3 サービスはバックアップをサポートします。新しいバージョンのオブジェクトデータを更新することもできます。ただし、バックアップは削除されても、オブジェクトの古いバージョンは削除されません。
  • OADP バックアップはサポートされておらず、Azure Storage Blob で不変性を有効にすると期待どおりに動作しない可能性があります。
  • Google Cloud ストレージポリシーは、バケットレベルの不変性のみをサポートしています。したがって、Google Cloud 環境で不変性を実装することは現実的ではありません。

ストレージプロバイダーに応じて、不変性オプションの呼び出し方法は異なります。

  • S3 オブジェクトロック
  • オブジェクト保持
  • バケットバージョン管理
  • Write Once Read Many (WORM) バケット

他の S3 互換オブジェクトストレージがサポートされていない主な理由は、OADP が最初にバックアップの状態を finalizing として保存し、その後、非同期操作が進行中かどうかを確認するためです。

4.6.1.6. 収集したデータに基づく Velero CPU およびメモリーの要件

以下の推奨事項は、スケールおよびパフォーマンスのラボで観察したパフォーマンスに基づいています。バックアップおよび復元リソースは、プラグインのタイプ、そのバックアップまたは復元に必要なリソースの量、そのリソースに関連する永続ボリューム (PV) に含まれるデータの影響を受けます。

4.6.1.6.1. 設定に必要な CPU とメモリー
Expand
設定タイプ[1] 平均使用量[2] 大量使用時resourceTimeouts

CSI

Velero:

CPU - リクエスト 200m、制限 1000m

メモリー - リクエスト 256 Mi、制限 1024 Mi

Velero:

CPU - リクエスト 200m、制限 2000m

メモリー - リクエスト 256 Mi、制限 2048 Mi

該当なし

Restic

[3] Restic:

CPU - リクエスト 1000m、制限 2000m

メモリー - リクエスト 16 Gi、制限 32 Gi

[4] Restic:

CPU - リクエスト 2000m、制限 8000m

メモリー - リクエスト 16 Gi、制限 40 Gi

900 m

[5] Data Mover

該当なし

該当なし

10m - 平均使用量

60m - 大量使用時

  1. 平均使用量 - ほとんどの状況下でこの設定を使用します。
  2. 大量使用時 - 大規模な PV (使用量 500 GB)、複数の namespace (100 以上)、または 1 つの namespace に多数の Pod (2000 Pod 以上) があるなどして使用量が大きくなる状況下では、大規模なデータセットを含む場合のバックアップと復元で最適なパフォーマンスを実現するために、この設定を使用します。
  3. Restic リソースの使用量は、データの量とデータタイプに対応します。たとえば、多数の小さなファイルや大量のデータがある場合は、Restic が大量のリソースを使用する可能性があります。Velero のドキュメントでは、指定されたデフォルト値である 500 m を参照していますが、ほとんどのテストではリクエスト 200 m、制限 1000 m が適切でした。Velero のドキュメントに記載されているとおり、正確な CPU とメモリー使用量は、環境の制限に加えて、ファイルとディレクトリーの規模に依存します。
  4. CPU を増やすと、バックアップと復元の時間を大幅に短縮できます。
  5. Data Mover - Data Mover のデフォルトの resourceTimeout は 10 m です。テストでは、大規模な PV (使用量 500 GB) を復元するには、resourceTimeout を 60m に増やす必要があることがわかりました。
注記

このガイド全体に記載されているリソース要件は、平均的な使用量に限定されています。大量に使用する場合は、上の表の説明に従って設定を調整してください。

4.6.1.6.2. 大量使用のための NodeAgent CPU

テストの結果、NodeAgent CPU を増やすと、OpenShift API for Data Protection (OADP) を使用する際のバックアップと復元の時間が大幅に短縮されることがわかりました。

重要

パフォーマンス分析と要件に応じて、OpenShift Container Platform 環境を調整できます。ファイルシステムのバックアップに Kopia を使用する場合は、ワークロードで CPU 制限を使用してください。

Pod で CPU 制限を使用しない場合、Pod は利用可能な場合に余剰の CPU を使用できます。CPU 制限を指定すると、Pod がその制限を超えたときに、Pod にスロットリングが適用される可能性があります。したがって、Pod で CPU 制限を使用することはアンチパターンと考えられています。

Pod が余剰の CPU を利用できるように、必ず CPU 要求を正確に指定してください。リソースの割り当ては、CPU 制限ではなく CPU 要求に基づいて保証されます。

テストの結果、20 コアと 32 Gi メモリーで Kopia を実行した場合、100 GB 超のデータ、複数の namespace、または単一 namespace 内の 2000 超の Pod のバックアップと復元操作がサポートされることが判明しました。テストでは、これらのリソース仕様では CPU の制限やメモリーの飽和は検出されませんでした。

環境によっては、デフォルト設定によりリソースが飽和状態になった場合に発生する Pod の再起動を回避するために、Ceph MDS Pod リソースを調整する必要があります。

Ceph MDS Pod で Pod リソース制限を設定する方法の詳細は、rook-ceph Pod の CPU およびメモリーリソースの変更 を参照してください。

4.6.2. OADP Operator のインストール

Operator Lifecycle Manager (OLM) を使用して、OpenShift Container Platform 4.16 に OpenShift API for Data Protection (OADP) Operator をインストールできます。

OADP Operator は Velero 1.14 をインストールします。

4.6.2.1. OADP Operator のインストール

OADP Operator をインストールするには、次の手順を使用します。

前提条件

  • cluster-admin 特権を持つユーザーとしてログインしている。

    1. OpenShift Container Platform Web コンソールで、OperatorsOperatorHub をクリックします。
    2. Filter by keyword フィールドを使用して、OADP Operator を検索します。
    3. OADP Operator を選択し、Install をクリックします。
    4. Install をクリックして、openshift-adp プロジェクトに Operator をインストールします。
    5. OperatorsInstalled Operators をクリックして、インストールを確認します。
4.6.2.2. OADP、Velero、および OpenShift Container Platform の各バージョンの関係
Expand
OADP のバージョンVelero のバージョンOpenShift Container Platform バージョン

1.3.0

{velero-1.12}

4.12-4.15

1.3.1

{velero-1.12}

4.12-4.15

1.3.2

{velero-1.12}

4.12-4.15

1.3.3

{velero-1.12}

4.12-4.15

1.3.4

{velero-1.12}

4.12-4.15

1.3.5

{velero-1.12}

4.12-4.15

1.4.0

{velero-1.14}

4.14-4.18

1.4.1

{velero-1.14}

4.14-4.18

1.4.2

{velero-1.14}

4.14-4.18

1.4.3

{velero-1.14}

4.14-4.18

4.7. AWS S3 互換ストレージを使用した OADP の設定

4.7.1. AWS S3 互換ストレージを使用した OpenShift API for Data Protection の設定

OADP Operator をインストールすることで、Amazon Web Services (AWS) S3 互換ストレージを使用して OpenShift API for Data Protection (OADP) をインストールします。Operator は Velero 1.14 をインストールします。

注記

OADP 1.0.4 以降、すべての OADP 1.0.z バージョンは Migration Toolkit for Containers Operator の依存関係としてのみ使用でき、スタンドアロン Operator として使用することはできません。

Velero 用に AWS を設定し、デフォルトの Secret を作成してから、Data Protection Application をインストールします。詳細は、OADP Operator のインストール を参照してください。

制限されたネットワーク環境に OADP Operator をインストールするには、最初にデフォルトの OperatorHub ソースを無効にして、Operator カタログをミラーリングする必要があります。詳細は、ネットワークが制限された環境での Operator Lifecycle Manager の使用 を参照してください。

4.7.1.1. Amazon Simple Storage Service、Identity and Access Management、GovCloud について

Amazon Simple Storage Service (Amazon S3) は、インターネット向けの Amazon のストレージソリューションです。許可されたユーザーは、このサービスを使用して、Web 上のどこからでも、いつでも任意の量のデータを保存および取得できます。

AWS Identity and Access Management (IAM) Web サービスは、Amazon S3 やその他の Amazon サービスへのアクセスをセキュアに制御するために使用します。

IAM を使用すると、ユーザーがアクセスできる AWS リソースを制御する権限を管理できます。IAM は、ユーザーが本人であるかどうかを認証 (検証) するとともに、リソースを使用する権限を認可 (付与) するために使用します。

AWS GovCloud (US) は、米国連邦政府の厳格かつ特定のデータセキュリティー要件を満たすために開発された Amazon ストレージソリューションです。AWS GovCloud (US) は、次の点を除いて Amazon S3 と同じように動作します。

  • AWS GovCloud (米国) リージョンの Amazon S3 バケットの内容を、別の AWS リージョンに、または別の AWS リージョンから直接コピーすることはできません。
  • Amazon S3 ポリシーを使用する場合は、IAM ポリシー、Amazon S3 バケット名、API 呼び出しなど、AWS 全体で、AWS GovCloud (US) の Amazon Resource Name (ARN) 識別子を使用してリソースを明確に指定します。

    • AWS GovCloud (US) リージョンでは、他の標準 AWS リージョンの識別子とは異なる識別子 (arn:aws-us-gov) が ARN に付きます。US-West または US-East リージョンを指定する必要がある場合は、次のいずれかの ARN を使用します。

      • US-West の場合は、us-gov-west-1 を使用します。
      • US-East の場合は、us-gov-east-1 を使用します。
    • その他のすべての標準リージョンでは、ARN は arn:aws で始まります。
  • AWS GovCloud (US) リージョンでは、Amazon Simple Storage Service endpoints and quotas の "Amazon S3 endpoints" の AWS GovCloud (US-East) および AWS GovCloud (US-West) の行にリストされているエンドポイントを使用します。輸出規制対象のデータを処理している場合は、SSL/TLS エンドポイントのいずれかを使用します。FIPS 要件がある場合は、https://s3-fips.us-gov-west-1.amazonaws.comhttps://s3-fips.us-gov-east-1.amazonaws.com などの FIPS 140-2 エンドポイントを使用します。
  • AWS が課すその他の制限は、How Amazon Simple Storage Service Differs for AWS GovCloud (US) を参照してください。
4.7.1.2. Amazon Web Services の設定

OpenShift API for Data Protection (OADP) 用に Amazon Web Services (AWS) を設定します。

前提条件

  • AWS CLI がインストールされていること。

手順

  1. BUCKET 変数を設定します。

    $ BUCKET=<your_bucket>
    Copy to Clipboard Toggle word wrap
  2. REGION 変数を設定します。

    $ REGION=<your_region>
    Copy to Clipboard Toggle word wrap
  3. AWS S3 バケットを作成します。

    $ aws s3api create-bucket \
        --bucket $BUCKET \
        --region $REGION \
        --create-bucket-configuration LocationConstraint=$REGION 
    1
    Copy to Clipboard Toggle word wrap
    1
    us-east-1LocationConstraint をサポートしていません。お住まいの地域が us-east-1 の場合は、--create-bucket-configuration LocationConstraint=$REGION を省略してください。
  4. IAM ユーザーを作成します。

    $ aws iam create-user --user-name velero 
    1
    Copy to Clipboard Toggle word wrap
    1
    Velero を使用して複数の S3 バケットを持つ複数のクラスターをバックアップする場合は、クラスターごとに一意のユーザー名を作成します。
  5. velero-policy.json ファイルを作成します。

    $ cat > velero-policy.json <<EOF
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "ec2:DescribeVolumes",
                    "ec2:DescribeSnapshots",
                    "ec2:CreateTags",
                    "ec2:CreateVolume",
                    "ec2:CreateSnapshot",
                    "ec2:DeleteSnapshot"
                ],
                "Resource": "*"
            },
            {
                "Effect": "Allow",
                "Action": [
                    "s3:GetObject",
                    "s3:DeleteObject",
                    "s3:PutObject",
                    "s3:AbortMultipartUpload",
                    "s3:ListMultipartUploadParts"
                ],
                "Resource": [
                    "arn:aws:s3:::${BUCKET}/*"
                ]
            },
            {
                "Effect": "Allow",
                "Action": [
                    "s3:ListBucket",
                    "s3:GetBucketLocation",
                    "s3:ListBucketMultipartUploads"
                ],
                "Resource": [
                    "arn:aws:s3:::${BUCKET}"
                ]
            }
        ]
    }
    EOF
    Copy to Clipboard Toggle word wrap
  6. ポリシーを添付して、velero ユーザーに必要最小限の権限を付与します。

    $ aws iam put-user-policy \
      --user-name velero \
      --policy-name velero \
      --policy-document file://velero-policy.json
    Copy to Clipboard Toggle word wrap
  7. velero ユーザーのアクセスキーを作成します。

    $ aws iam create-access-key --user-name velero
    Copy to Clipboard Toggle word wrap

    出力例

    {
      "AccessKey": {
            "UserName": "velero",
            "Status": "Active",
            "CreateDate": "2017-07-31T22:24:41.576Z",
            "SecretAccessKey": <AWS_SECRET_ACCESS_KEY>,
            "AccessKeyId": <AWS_ACCESS_KEY_ID>
      }
    }
    Copy to Clipboard Toggle word wrap

  8. credentials-velero ファイルを作成します。

    $ cat << EOF > ./credentials-velero
    [default]
    aws_access_key_id=<AWS_ACCESS_KEY_ID>
    aws_secret_access_key=<AWS_SECRET_ACCESS_KEY>
    EOF
    Copy to Clipboard Toggle word wrap

    Data Protection Application をインストールする前に、credentials-velero ファイルを使用して AWS の Secret オブジェクトを作成します。

4.7.1.3. バックアップおよびスナップショットの場所、ならびにそのシークレットについて

DataProtectionApplication カスタムリソース (CR) で、バックアップおよびスナップショットの場所、ならびにそのシークレットを指定します。

4.7.1.3.1. バックアップの場所

バックアップの場所として、次のいずれかの AWS S3 互換オブジェクトストレージソリューションを指定できます。

  • Multicloud Object Gateway (MCG)
  • Red Hat Container Storage
  • Ceph RADOS Gateway (別称 Ceph Object Gateway)
  • Red Hat OpenShift Data Foundation
  • MinIO

Velero は、オブジェクトストレージのアーカイブファイルとして、OpenShift Container Platform リソース、Kubernetes オブジェクト、および内部イメージをバックアップします。

4.7.1.3.2. スナップショットの場所

クラウドプロバイダーのネイティブスナップショット API を使用して永続ボリュームをバックアップする場合、クラウドプロバイダーをスナップショットの場所として指定する必要があります。

Container Storage Interface (CSI) スナップショットを使用する場合、CSI ドライバーを登録するために VolumeSnapshotClass CR を作成するため、スナップショットの場所を指定する必要はありません。

File System Backup (FSB) を使用する場合、FSB がオブジェクトストレージ上にファイルシステムをバックアップするため、スナップショットの場所を指定する必要はありません。

4.7.1.3.3. シークレット

バックアップとスナップショットの場所が同じ認証情報を使用する場合、またはスナップショットの場所が必要ない場合は、デフォルトの Secret を作成します。

バックアップとスナップショットの場所で異なる認証情報を使用する場合は、次の 2 つの secret オブジェクトを作成します。

  • DataProtectionApplication CR で指定する、バックアップの場所用のカスタム Secret
  • DataProtectionApplication CR で参照されない、スナップショットの場所用のデフォルト Secret
重要

Data Protection Application には、デフォルトの Secret が必要です。作成しないと、インストールは失敗します。

インストール中にバックアップまたはスナップショットの場所を指定したくない場合は、空の credentials-velero ファイルを使用してデフォルトの Secret を作成できます。

4.7.1.3.4. デフォルト Secret の作成

バックアップとスナップショットの場所が同じ認証情報を使用する場合、またはスナップショットの場所が必要ない場合は、デフォルトの Secret を作成します。

Secret のデフォルト名は cloud-credentials です。

注記

DataProtectionApplication カスタムリソース (CR) にはデフォルトの Secret が必要です。作成しないと、インストールは失敗します。バックアップの場所の Secret の名前が指定されていない場合は、デフォルトの名前が使用されます。

インストール時にバックアップ場所の認証情報を使用しない場合は、空の credentials-velero ファイルを使用して、デフォルト名の Secret を作成できます。

前提条件

  • オブジェクトストレージとクラウドストレージがある場合は、同じ認証情報を使用する必要があります。
  • Velero のオブジェクトストレージを設定する必要があります。

手順

  1. Backup Storage Location の credentials-velero ファイルをクラウドプロバイダーに適した形式で作成します。

    以下の例を参照してください。

    [default]
    aws_access_key_id=<AWS_ACCESS_KEY_ID>
    aws_secret_access_key=<AWS_SECRET_ACCESS_KEY>
    Copy to Clipboard Toggle word wrap
  2. デフォルト名で Secret カスタムリソース (CR) を作成します。

    $ oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-velero
    Copy to Clipboard Toggle word wrap

Secret は、Data Protection Application をインストールするときに、DataProtectionApplication CR の spec.backupLocations.credential ブロックで参照されます。

4.7.1.3.5. 異なる認証情報のプロファイルの作成

バックアップとスナップショットの場所で異なる認証情報を使用する場合は、credentials-velero ファイルに個別のプロファイルを作成します。

次に、Secret オブジェクトを作成し、DataProtectionApplication カスタムリソース (CR) でプロファイルを指定します。

手順

  1. 次の例のように、バックアップとスナップショットの場所に別々のプロファイルを持つ credentials-velero ファイルを作成します。

    [backupStorage]
    aws_access_key_id=<AWS_ACCESS_KEY_ID>
    aws_secret_access_key=<AWS_SECRET_ACCESS_KEY>
    
    [volumeSnapshot]
    aws_access_key_id=<AWS_ACCESS_KEY_ID>
    aws_secret_access_key=<AWS_SECRET_ACCESS_KEY>
    Copy to Clipboard Toggle word wrap
  2. credentials-velero ファイルを使用して Secret オブジェクトを作成します。

    $ oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-velero 
    1
    Copy to Clipboard Toggle word wrap
  3. 次の例のように、プロファイルを DataProtectionApplication CR に追加します。

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: <dpa_sample>
      namespace: openshift-adp
    spec:
    ...
      backupLocations:
        - name: default
          velero:
            provider: aws
            default: true
            objectStorage:
              bucket: <bucket_name>
              prefix: <prefix>
            config:
              region: us-east-1
              profile: "backupStorage"
            credential:
              key: cloud
              name: cloud-credentials
      snapshotLocations:
        - velero:
            provider: aws
            config:
              region: us-west-2
              profile: "volumeSnapshot"
    Copy to Clipboard Toggle word wrap
4.7.1.3.6. AWS を使用した Backup Storage Location の設定

次の例の手順に示すように、AWS の Backup Storage Location (BSL) を設定できます。

前提条件

  • AWS を使用してオブジェクトストレージバケットを作成した。
  • OADP Operator がインストールされている。

手順

  • ユースケースに応じて、BSL カスタムリソース (CR) に適切な値を設定します。

    Backup Storage Location

    apiVersion: oadp.openshift.io/v1alpha1
    kind: BackupStorageLocation
    metadata:
      name: default
      namespace: openshift-adp
    spec:
      provider: aws 
    1
    
      objectStorage:
        bucket: <bucket_name> 
    2
    
        prefix: <bucket_prefix> 
    3
    
      credential: 
    4
    
        key: cloud 
    5
    
        name: cloud-credentials 
    6
    
      config:
        region: <bucket_region> 
    7
    
        s3ForcePathStyle: "true" 
    8
    
        s3Url: <s3_url> 
    9
    
        publicUrl: <public_s3_url> 
    10
    
        serverSideEncryption: AES256 
    11
    
        kmsKeyId: "50..c-4da1-419f-a16e-ei...49f" 
    12
    
        customerKeyEncryptionFile: "/credentials/customer-key" 
    13
    
        signatureVersion: "1" 
    14
    
        profile: "default" 
    15
    
        insecureSkipTLSVerify: "true" 
    16
    
        enableSharedConfig: "true" 
    17
    
        tagging: "" 
    18
    
        checksumAlgorithm: "CRC32" 
    19
    Copy to Clipboard Toggle word wrap

    1 1
    オブジェクトストアプラグインの名前。この例では、プラグインは aws です。このフィールドは必須です。
    2
    バックアップを保存するバケットの名前。このフィールドは必須です。
    3
    バックアップを保存するバケット内の接頭辞。このフィールドは任意です。
    4
    Backup Storage Location の認証情報。カスタムの認証情報を設定できます。カスタムの認証情報が設定されていない場合は、デフォルトの認証情報のシークレットが使用されます。
    5
    シークレットの認証情報データ内の key
    6
    認証情報を含むシークレットの名前。
    7
    バケットが配置されている AWS リージョン。s3ForcePathStyle が false の場合は任意です。
    8
    仮想ホスト形式のバケットアドレス指定の代わりにパス形式のアドレス指定を使用するかどうかを決定するブール値フラグ。MinIO や NooBaa などのストレージサービスを使用する場合は、true に設定します。これは任意のフィールドです。デフォルト値は false です。
    9
    ここで AWS S3 の URL を明示的に指定できます。このフィールドは主に、MinIO や NooBaa などのストレージサービス用です。これは任意のフィールドです。
    10
    このフィールドは主に、MinIO や NooBaa などのストレージサービスに使用されます。これは任意のフィールドです。
    11
    オブジェクトのアップロードに使用するサーバー側暗号化アルゴリズムの名前 (例: AES256)。これは任意のフィールドです。
    12
    AWS KMS のキー ID を指定します。例に示すように、alias/<KMS-key-alias-name> などのエイリアスまたは完全な ARN の形式で指定して、S3 に保存されているバックアップの暗号化を有効にできます。kmsKeyId は、customerKeyEncryptionFile と一緒に使用できないことに注意してください。これは任意のフィールドです。
    13
    SSE-C カスタマーキーを含むファイルを指定して、S3 に保存されているバックアップのカスタマーキー暗号化を有効にします。ファイルに 32 バイトの文字列が含まれている必要があります。customerKeyEncryptionFile フィールドは、velero コンテナー内にマウントされたシークレットを参照します。velero cloud-credentials シークレットに、キーと値のペア customer-key: <your_b64_encoded_32byte_string> を追加します。customerKeyEncryptionFile フィールドは kmsKeyId フィールドと一緒に使用できないことに注意してください。デフォルト値は空の文字列 ("") です。これは SSE-C が無効であることを意味します。これは任意のフィールドです。
    14
    署名付き URL を作成するために使用する署名アルゴリズムのバージョン。署名付き URL は、バックアップのダウンロードやログの取得に使用します。有効な値は 14 です。デフォルトのバージョンは 4 です。これは任意のフィールドです。
    15
    認証情報ファイル内の AWS プロファイルの名前。デフォルト値は default です。これは任意のフィールドです。
    16
    オブジェクトストアに接続するときに TLS 証明書を検証しない場合 (たとえば、MinIO を使用した自己署名証明書の場合)、insecureSkipTLSVerify フィールドを true に設定します。true に設定すると、中間者攻撃の影響を受けやすくなります。この設定は実稼働ワークロードには推奨されません。デフォルト値は false です。これは任意のフィールドです。
    17
    認証情報ファイルを共有設定ファイルとして読み込む場合は、enableSharedConfig フィールドを true に設定します。デフォルト値は false です。これは任意のフィールドです。
    18
    AWS S3 オブジェクトにアノテーションを付けるタグを指定します。キーと値のペアでタグを指定します。デフォルト値は空の文字列 ("") です。これは任意のフィールドです。
    19
    S3 にオブジェクトをアップロードするときに使用するチェックサムアルゴリズムを指定します。サポートされている値は、CRC32CRC32CSHA1、および SHA256 です。フィールドを空の文字列 ("") に設定すると、チェックサムチェックがスキップされます。デフォルト値は CRC32 です。これは任意のフィールドです。
4.7.1.3.7. データセキュリティーを強化するための OADP SSE-C 暗号鍵の作成

Amazon Web Services (AWS) S3 は、Amazon S3 内のすべてのバケットに対して、基本レベルの暗号化として、Amazon S3 マネージドキー (SSE-S3) によるサーバー側暗号化を適用します。

OpenShift API for Data Protection (OADP) は、クラスターからストレージにデータを転送するときに、SSL/TLS、HTTPS、および velero-repo-credentials シークレットを使用してデータを暗号化します。AWS 認証情報の紛失または盗難に備えてバックアップデータを保護するには、追加の暗号化レイヤーを適用してください。

velero-plugin-for-aws プラグインで、いくつかの追加の暗号化方法を使用できます。プラグインの設定オプションを確認し、追加の暗号化を実装することを検討してください。

お客様提供の鍵を使用したサーバー側暗号化 (SSE-C) を使用することで、独自の暗号鍵を保存できます。この機能は、AWS 認証情報が漏えいした場合に追加のセキュリティーを提供します。

警告

暗号鍵は必ずセキュアな方法で保管してください。暗号鍵がない場合、暗号化されたデータとバックアップを復元できません。

前提条件

  • OADP が /credentials の Velero Pod に SSE-C 鍵を含むシークレットをマウントできるように、AWS のデフォルトのシークレット名 cloud-credentials を使用し、次のラベルの少なくとも 1 つを空のままにします。

注記

次の手順には、認証情報を指定しない spec:backupLocations ブロックの例が含まれています。この例では、OADP シークレットのマウントがトリガーされます。

  • バックアップの場所に cloud-credentials とは異なる名前の認証情報が必要な場合は、次の例のように、認証情報名を含まないスナップショットの場所を追加する必要があります。この例には認証情報名が含まれていないため、スナップショットの場所では、スナップショットを作成するためのシークレットとして cloud-credentials が使用されています。

認証情報が指定されていない DPA 内のスナップショットの場所を示す例

 snapshotLocations:
  - velero:
      config:
        profile: default
        region: <region>
      provider: aws
# ...
Copy to Clipboard Toggle word wrap

手順

  1. SSE-C 暗号鍵を作成します。

    1. 次のコマンドを実行して乱数を生成し、sse.key という名前のファイルとして保存します。

      $ dd if=/dev/urandom bs=1 count=32 > sse.key
      Copy to Clipboard Toggle word wrap
  2. OpenShift Container Platform シークレットを作成します。

    • OADP を初めてインストールして設定する場合は、次のコマンドを実行して、AWS 認証情報と暗号鍵シークレットを同時に作成します。

      $ oc create secret generic cloud-credentials --namespace openshift-adp --from-file cloud=<path>/openshift_aws_credentials,customer-key=<path>/sse.key
      Copy to Clipboard Toggle word wrap
    • 既存のインストールを更新する場合は、次の例のように、DataProtectionApplication CR マニフェストの cloud-credential secret ブロックの値を編集します。

      apiVersion: v1
      data:
        cloud: W2Rfa2V5X2lkPSJBS0lBVkJRWUIyRkQ0TlFHRFFPQiIKYXdzX3NlY3JldF9hY2Nlc3Nfa2V5P<snip>rUE1mNWVSbTN5K2FpeWhUTUQyQk1WZHBOIgo=
        customer-key: v+<snip>TFIiq6aaXPbj8dhos=
      kind: Secret
      # ...
      Copy to Clipboard Toggle word wrap
  3. 次の例のように、DataProtectionApplication CR マニフェストの backupLocations ブロックにある customerKeyEncryptionFile 属性の値を編集します。

    spec:
      backupLocations:
        - velero:
            config:
              customerKeyEncryptionFile: /credentials/customer-key
              profile: default
    # ...
    Copy to Clipboard Toggle word wrap
    警告

    既存のインストール環境でシークレットの認証情報を適切に再マウントするには、Velero Pod を再起動する必要があります。

    インストールが完了すると、OpenShift Container Platform リソースをバックアップおよび復元できるようになります。AWS S3 ストレージに保存されるデータは、新しい鍵で暗号化されます。追加の暗号鍵がないと、AWS S3 コンソールまたは API からデータをダウンロードすることはできません。

検証

追加の鍵を含めずに暗号化したファイルをダウンロードできないことを確認するために、テストファイルを作成し、アップロードしてからダウンロードしてみます。

  1. 次のコマンドを実行してテストファイルを作成します。

    $ echo "encrypt me please" > test.txt
    Copy to Clipboard Toggle word wrap
  2. 次のコマンドを実行してテストファイルをアップロードします。

    $ aws s3api put-object \
      --bucket <bucket> \
      --key test.txt \
      --body test.txt \
      --sse-customer-key fileb://sse.key \
      --sse-customer-algorithm AES256
    Copy to Clipboard Toggle word wrap
  3. ファイルのダウンロードを試みます。Amazon Web コンソールまたはターミナルで、次のコマンドを実行します。

    $ s3cmd get s3://<bucket>/test.txt test.txt
    Copy to Clipboard Toggle word wrap

    ファイルが追加の鍵で暗号化されているため、ダウンロードは失敗します。

  4. 次のコマンドを実行して、追加の暗号鍵を含むファイルをダウンロードします。

    $ aws s3api get-object \
        --bucket <bucket> \
        --key test.txt \
        --sse-customer-key fileb://sse.key \
        --sse-customer-algorithm AES256 \
        downloaded.txt
    Copy to Clipboard Toggle word wrap
  5. 次のコマンドを実行してファイルの内容を読み取ります。

    $ cat downloaded.txt
    Copy to Clipboard Toggle word wrap

    出力例

    encrypt me please
    Copy to Clipboard Toggle word wrap

SSE-C 暗号鍵を検証するときに、Velero によってバックアップされたファイルの追加の暗号鍵を含むファイルをダウンロードすることもできます。

手順

  • 次のコマンドを実行して、Velero によってバックアップされたファイルの追加の暗号鍵を含むファイルをダウンロードします。

    $ aws s3api get-object \
      --bucket <bucket> \
      --key velero/backups/mysql-persistent-customerkeyencryptionfile4/mysql-persistent-customerkeyencryptionfile4.tar.gz \
      --sse-customer-key fileb://sse.key \
      --sse-customer-algorithm AES256 \
      --debug \
      velero_download.tar.gz
    Copy to Clipboard Toggle word wrap
4.7.1.4. Data Protection Application の設定

Velero リソースの割り当てを設定するか、自己署名 CA 証明書を有効にして、Data Protection Application を設定できます。

4.7.1.4.1. Velero の CPU とメモリーのリソース割り当てを設定

DataProtectionApplication カスタムリソース (CR) マニフェストを編集して、Velero Pod の CPU およびメモリーリソースの割り当てを設定します。

前提条件

  • OpenShift API for Data Protection (OADP) Operator がインストールされている必要があります。

手順

  • 次の例のように、DataProtectionApplication CR マニフェストの spec.configuration.velero.podConfig.ResourceAllocations ブロックの値を編集します。

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: <dpa_sample>
    spec:
    # ...
      configuration:
        velero:
          podConfig:
            nodeSelector: <node_selector> 
    1
    
            resourceAllocations: 
    2
    
              limits:
                cpu: "1"
                memory: 1024Mi
              requests:
                cpu: 200m
                memory: 256Mi
    Copy to Clipboard Toggle word wrap
    1
    Velero podSpec に提供されるノードセレクターを指定します。
    2
    リストされている resourceAllocations は、平均使用量です。
    注記

    Kopia は OADP 1.3 以降のリリースで選択できます。Kopia はファイルシステムのバックアップに使用できます。組み込みの Data Mover を使用する Data Mover の場合は、Kopia が唯一の選択肢になります。

    Kopia は Restic よりも多くのリソースを消費するため、それに応じて CPU とメモリーの要件を調整しなければならない場合があります。

nodeSelector フィールドを使用して、ノードエージェントを実行できるノードを選択します。nodeSelector フィールドは、推奨される最も単純な形式のノード選択制約です。指定したラベルが、各ノードのラベルと一致する必要があります。

詳細は、ノードエージェントとノードラベルの設定 を参照してください。

4.7.1.4.2. 自己署名 CA 証明書の有効化

certificate signed by unknown authority エラーを防ぐために、DataProtectionApplication カスタムリソース (CR) マニフェストを編集して、オブジェクトストレージの自己署名 CA 証明書を有効にする必要があります。

前提条件

  • OpenShift API for Data Protection (OADP) Operator がインストールされている必要があります。

手順

  • DataProtectionApplication CR マニフェストの spec.backupLocations.velero.objectStorage.caCert パラメーターと spec.backupLocations.velero.config パラメーターを編集します。

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: <dpa_sample>
    spec:
    # ...
      backupLocations:
        - name: default
          velero:
            provider: aws
            default: true
            objectStorage:
              bucket: <bucket>
              prefix: <prefix>
              caCert: <base64_encoded_cert_string> 
    1
    
            config:
              insecureSkipTLSVerify: "false" 
    2
    
    # ...
    Copy to Clipboard Toggle word wrap
    1
    Base64 でエンコードされた CA 証明書文字列を指定します。
    2
    insecureSkipTLSVerify 設定は、"true" または "false" のいずれかに設定できます。"true" に設定すると、SSL/TLS セキュリティーが無効になります。"false" に設定すると、SSL/TLS セキュリティーが有効になります。
4.7.1.4.3. Velero デプロイメント用のエイリアス化した velero コマンドで CA 証明書を使用する

Velero CLI のエイリアスを作成することで、システムにローカルにインストールせずに Velero CLI を使用できます。

前提条件

  • cluster-admin ロールを持つユーザーとして OpenShift Container Platform クラスターにログインしている。
  • OpenShift CLI (oc) がインストールされている。

    1. エイリアス化した Velero コマンドを使用するには、次のコマンドを実行します。

      $ alias velero='oc -n openshift-adp exec deployment/velero -c velero -it -- ./velero'
      Copy to Clipboard Toggle word wrap
    2. 次のコマンドを実行して、エイリアスが機能していることを確認します。

      $ velero version
      Copy to Clipboard Toggle word wrap
      Client:
      	Version: v1.12.1-OADP
      	Git commit: -
      Server:
      	Version: v1.12.1-OADP
      Copy to Clipboard Toggle word wrap
    3. このコマンドで CA 証明書を使用するには、次のコマンドを実行して証明書を Velero デプロイメントに追加できます。

      $ CA_CERT=$(oc -n openshift-adp get dataprotectionapplications.oadp.openshift.io <dpa-name> -o jsonpath='{.spec.backupLocations[0].velero.objectStorage.caCert}')
      Copy to Clipboard Toggle word wrap
      $ [[ -n $CA_CERT ]] && echo "$CA_CERT" | base64 -d | oc exec -n openshift-adp -i deploy/velero -c velero -- bash -c "cat > /tmp/your-cacert.txt" || echo "DPA BSL has no caCert"
      Copy to Clipboard Toggle word wrap
      $ velero describe backup <backup_name> --details --cacert /tmp/<your_cacert>.txt
      Copy to Clipboard Toggle word wrap
    4. バックアップログを取得するために、次のコマンドを実行します。

      $ velero backup logs  <backup_name>  --cacert /tmp/<your_cacert.txt>
      Copy to Clipboard Toggle word wrap

      このログを使用して、バックアップできないリソースの障害と警告を表示できます。

    5. Velero Pod が再起動すると、/tmp/your-cacert.txt ファイルが消去されます。そのため、前の手順のコマンドを再実行して /tmp/your-cacert.txt ファイルを再作成する必要があります。
    6. 次のコマンドを実行すると、/tmp/your-cacert.txt ファイルを保存した場所にファイルがまだ存在するかどうかを確認できます。

      $ oc exec -n openshift-adp -i deploy/velero -c velero -- bash -c "ls /tmp/your-cacert.txt"
      /tmp/your-cacert.txt
      Copy to Clipboard Toggle word wrap

OpenShift API for Data Protection (OADP) の今後のリリースでは、この手順が不要になるように証明書を Velero Pod にマウントする予定です。

4.7.1.5. Data Protection Application のインストール

DataProtectionApplication API のインスタンスを作成して、Data Protection Application (DPA) をインストールします。

前提条件

  • OADP Operator をインストールする。
  • オブジェクトストレージをバックアップロケーションとして設定する必要がある。
  • スナップショットを使用して PV をバックアップする場合、クラウドプロバイダーはネイティブスナップショット API または Container Storage Interface (CSI) スナップショットのいずれかをサポートする必要がある。
  • バックアップとスナップショットの場所で同じ認証情報を使用する場合は、デフォルトの名前である cloud-credentials を使用して Secret を作成する必要がある。
  • バックアップとスナップショットの場所で異なる認証情報を使用する場合は、デフォルト名である cloud-credentials を使用して Secret を作成する必要があります。これには、バックアップとスナップショットの場所の認証情報用の個別のプロファイルが含まれます。

    注記

    インストール中にバックアップまたはスナップショットの場所を指定したくない場合は、空の credentials-velero ファイルを使用してデフォルトの Secret を作成できます。デフォルトの Secret がない場合、インストールは失敗します。

手順

  1. OperatorsInstalled Operators をクリックして、OADP Operator を選択します。
  2. Provided APIs で、DataProtectionApplication ボックスの Create instance をクリックします。
  3. YAML View をクリックして、DataProtectionApplication マニフェストのパラメーターを更新します。

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: <dpa_sample>
      namespace: openshift-adp 
    1
    
    spec:
      configuration:
        velero:
          defaultPlugins:
            - openshift 
    2
    
            - aws
          resourceTimeout: 10m 
    3
    
        nodeAgent: 
    4
    
          enable: true 
    5
    
          uploaderType: kopia 
    6
    
          podConfig:
            nodeSelector: <node_selector> 
    7
    
      backupLocations:
        - name: default
          velero:
            provider: aws
            default: true
            objectStorage:
              bucket: <bucket_name> 
    8
    
              prefix: <prefix> 
    9
    
            config:
              region: <region>
              profile: "default"
              s3ForcePathStyle: "true" 
    10
    
              s3Url: <s3_url> 
    11
    
            credential:
              key: cloud
              name: cloud-credentials 
    12
    
      snapshotLocations: 
    13
    
        - name: default
          velero:
            provider: aws
            config:
              region: <region> 
    14
    
              profile: "default"
            credential:
              key: cloud
              name: cloud-credentials 
    15
    Copy to Clipboard Toggle word wrap
    1
    OADP のデフォルトの namespace は openshift-adp です。namespace は変数であり、設定可能です。
    2
    openshift プラグインは必須です。
    3
    Velero CRD の可用性、volumeSnapshot の削除、バックアップリポジトリーの可用性など、タイムアウトが発生するまでに複数の Velero リソースを待機する時間を分単位で指定します。デフォルトは 10m です。
    4
    管理要求をサーバーにルーティングする管理エージェント。
    5
    nodeAgent を有効にして File System Backup を実行する場合は、この値を true に設定します。
    6
    アップローダーとして kopia または restic と入力します。インストール後に選択を変更することはできません。組み込み DataMover の場合は、Kopia を使用する必要があります。nodeAgent はデーモンセットをデプロイします。これは、nodeAgent Pod が各ワーキングノード上で実行されることを意味します。File System Backup を設定するには、spec.defaultVolumesToFsBackup: trueBackup CR に追加します。
    7
    Kopia または Restic が使用可能なノードを指定します。デフォルトでは、Kopia または Restic はすべてのノードで実行されます。
    8
    Backup Storage Location としてバケットを指定します。バケットが Velero バックアップ専用のバケットでない場合は、接頭辞を指定する必要があります。
    9
    バケットが複数の目的で使用される場合は、Velero バックアップの接頭辞を指定します (例: velero)。
    10
    S3 オブジェクトにパススタイルの URL を強制するかどうかを指定します (ブール値)。AWS S3 では必要ありません。S3 互換ストレージにのみ必要です。
    11
    バックアップを保存するために使用しているオブジェクトストアの URL を指定します。AWS S3 では必要ありません。S3 互換ストレージにのみ必要です。
    12
    作成した Secret オブジェクトの名前を指定します。この値を指定しない場合は、デフォルト名の cloud-credentials が使用されます。カスタム名を指定すると、バックアップの場所にカスタム名が使用されます。
    13
    CSI スナップショットまたは File System Backup (FSB) を使用して PV をバックアップする場合を除き、スナップショットの場所を指定します。
    14
    スナップショットの場所は、PV と同じリージョンにある必要があります。
    15
    作成した Secret オブジェクトの名前を指定します。この値を指定しない場合は、デフォルト名の cloud-credentials が使用されます。カスタム名を指定すると、スナップショットの場所にカスタム名が使用されます。バックアップとスナップショットの場所で異なる認証情報を使用する場合は、credentials-velero ファイルに個別のプロファイルを作成します。
  4. Create をクリックします。

検証

  1. 次のコマンドを実行して OpenShift API for Data Protection (OADP) リソースを表示し、インストールを検証します。

    $ oc get all -n openshift-adp
    Copy to Clipboard Toggle word wrap

    出力例

    NAME                                                     READY   STATUS    RESTARTS   AGE
    pod/oadp-operator-controller-manager-67d9494d47-6l8z8    2/2     Running   0          2m8s
    pod/node-agent-9cq4q                                     1/1     Running   0          94s
    pod/node-agent-m4lts                                     1/1     Running   0          94s
    pod/node-agent-pv4kr                                     1/1     Running   0          95s
    pod/velero-588db7f655-n842v                              1/1     Running   0          95s
    
    NAME                                                       TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
    service/oadp-operator-controller-manager-metrics-service   ClusterIP   172.30.70.140    <none>        8443/TCP   2m8s
    service/openshift-adp-velero-metrics-svc                   ClusterIP   172.30.10.0      <none>        8085/TCP   8h
    
    NAME                        DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
    daemonset.apps/node-agent    3         3         3       3            3           <none>          96s
    
    NAME                                                READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/oadp-operator-controller-manager    1/1     1            1           2m9s
    deployment.apps/velero                              1/1     1            1           96s
    
    NAME                                                           DESIRED   CURRENT   READY   AGE
    replicaset.apps/oadp-operator-controller-manager-67d9494d47    1         1         1       2m9s
    replicaset.apps/velero-588db7f655                              1         1         1       96s
    Copy to Clipboard Toggle word wrap

  2. 次のコマンドを実行して、DataProtectionApplication (DPA) が調整されていることを確認します。

    $ oc get dpa dpa-sample -n openshift-adp -o jsonpath='{.status}'
    Copy to Clipboard Toggle word wrap

    出力例

    {"conditions":[{"lastTransitionTime":"2023-10-27T01:23:57Z","message":"Reconcile complete","reason":"Complete","status":"True","type":"Reconciled"}]}
    Copy to Clipboard Toggle word wrap

  3. typeReconciled に設定されていることを確認します。
  4. 次のコマンドを実行して、Backup Storage Location を確認し、PHASEAvailable であることを確認します。

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

    出力例

    NAME           PHASE       LAST VALIDATED   AGE     DEFAULT
    dpa-sample-1   Available   1s               3d16h   true
    Copy to Clipboard Toggle word wrap

4.7.1.5.1. ノードエージェントとノードラベルの設定

Data Protection Application (DPA) は、nodeSelector フィールドを使用して、ノードエージェントを実行できるノードを選択します。nodeSelector フィールドは、推奨される形式のノード選択制約です。

手順

  1. カスタムラベルを追加して、選択した任意のノードでノードエージェントを実行します。

    $ oc label node/<node_name> node-role.kubernetes.io/nodeAgent=""
    Copy to Clipboard Toggle word wrap
    注記

    指定したラベルが、各ノードのラベルと一致する必要があります。

  2. ノードのラベル付けに使用したのと同じカスタムラベルを DPA.spec.configuration.nodeAgent.podConfig.nodeSelector フィールドで使用します。

    configuration:
      nodeAgent:
        enable: true
        podConfig:
          nodeSelector:
            node-role.kubernetes.io/nodeAgent: ""
    Copy to Clipboard Toggle word wrap

    次の例は nodeSelector のアンチパターンです。この例は、node-role.kubernetes.io/infra: ""node-role.kubernetes.io/worker: "" の両方のラベルがノードに存在しない限り機能しません。

        configuration:
          nodeAgent:
            enable: true
            podConfig:
              nodeSelector:
                node-role.kubernetes.io/infra: ""
                node-role.kubernetes.io/worker: ""
    Copy to Clipboard Toggle word wrap
4.7.1.6. MD5 チェックサムアルゴリズムを使用して Backup Storage Location を設定する

Data Protection Application (DPA) の Backup Storage Location (BSL) を設定して、Amazon Simple Storage Service (Amazon S3) と S3 互換ストレージプロバイダーの両方で MD5 チェックサムアルゴリズムを使用できます。チェックサムアルゴリズムは、Amazon S3 へのオブジェクトのアップロードとダウンロードのチェックサムを計算します。DPA の spec.backupLocations.velero.config.checksumAlgorithm セクションの checksumAlgorithm フィールドを設定する際に、次のいずれかのオプションを使用できます。

  • CRC32
  • CRC32C
  • SHA1
  • SHA256
注記

checksumAlgorithm フィールドを空の値に設定して、MD5 チェックサム確認をスキップすることもできます。

checksumAlgorithm フィールドに値を設定しなかった場合、デフォルト値として CRC32 が設定されます。

前提条件

  • OADP Operator がインストールされている。
  • バックアップの場所として Amazon S3 または S3 互換のオブジェクトストレージが設定されている。

手順

  • 次の例に示すように、DPA で BSL を設定します。

    Data Protection Application の例

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: test-dpa
      namespace: openshift-adp
    spec:
      backupLocations:
      - name: default
        velero:
          config:
            checksumAlgorithm: "" 
    1
    
            insecureSkipTLSVerify: "true"
            profile: "default"
            region: <bucket_region>
            s3ForcePathStyle: "true"
            s3Url: <bucket_url>
          credential:
            key: cloud
            name: cloud-credentials
          default: true
          objectStorage:
            bucket: <bucket_name>
            prefix: velero
          provider: aws
      configuration:
        velero:
          defaultPlugins:
          - openshift
          - aws
          - csi
    Copy to Clipboard Toggle word wrap

    1
    checksumAlgorithm を指定します。この例では、checksumAlgorithm フィールドは空の値に設定されています。CRC32CRC32CSHA1SHA256 から選択できます。
重要

Noobaa をオブジェクトストレージプロバイダーとして使用しており、DPA で spec.backupLocations.velero.config.checksumAlgorithm フィールドを設定していない場合、checksumAlgorithm の空の値が BSL 設定に追加されます。

空の値は、DPA を使用して作成された BSL に対してのみ追加されます。他の方法で BSL を作成した場合、この値は追加されません。

4.7.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 がインストールされている。

手順

  • 次の例に示すように、DPA の client-burst フィールドと client-qps フィールドを設定します。

    Data Protection Application の例

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: test-dpa
      namespace: openshift-adp
    spec:
      backupLocations:
        - name: default
          velero:
            config:
              insecureSkipTLSVerify: "true"
              profile: "default"
              region: <bucket_region>
              s3ForcePathStyle: "true"
              s3Url: <bucket_url>
            credential:
              key: cloud
              name: cloud-credentials
            default: true
            objectStorage:
              bucket: <bucket_name>
              prefix: velero
            provider: aws
      configuration:
        nodeAgent:
          enable: true
          uploaderType: restic
        velero:
          client-burst: 500 
    1
    
          client-qps: 300 
    2
    
          defaultPlugins:
            - openshift
            - aws
            - kubevirt
    Copy to Clipboard Toggle word wrap

    1
    client-burst 値を指定します。この例では、client-burst フィールドは 500 に設定されています。
    2
    client-qps 値を指定します。この例では、client-qps フィールドは 300 に設定されています。
4.7.1.8. DPA の imagePullPolicy 設定のオーバーライド

OADP 1.4.0 以前では、Operator はすべてのイメージで Velero およびノードエージェント Pod の imagePullPolicy フィールドを Always に設定します。

OADP 1.4.1 以降では、Operator はまず、各イメージに sha256 または sha512 ダイジェストがあるかを確認し、それに応じて imagePullPolicy フィールドを設定します。

  • イメージにダイジェストがある場合、Operator は imagePullPolicyIfNotPresent に設定します。
  • イメージにダイジェストがない場合、Operator は imagePullPolicyAlways に設定します。

Data Protection Application (DPA) の spec.imagePullPolicy フィールドを使用して、imagePullPolicy フィールドをオーバーライドすることもできます。

前提条件

  • OADP Operator がインストールされている。

手順

  • 以下の例のように、DPA の spec.imagePullPolicy フィールドを設定します。

    Data Protection Application の例

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: test-dpa
      namespace: openshift-adp
    spec:
      backupLocations:
        - name: default
          velero:
            config:
              insecureSkipTLSVerify: "true"
              profile: "default"
              region: <bucket_region>
              s3ForcePathStyle: "true"
              s3Url: <bucket_url>
            credential:
              key: cloud
              name: cloud-credentials
            default: true
            objectStorage:
              bucket: <bucket_name>
              prefix: velero
            provider: aws
      configuration:
        nodeAgent:
          enable: true
          uploaderType: kopia
        velero:
          defaultPlugins:
            - openshift
            - aws
            - kubevirt
            - csi
      imagePullPolicy: Never 
    1
    Copy to Clipboard Toggle word wrap

    1
    imagePullPolicy の値を指定します。この例では、imagePullPolicy フィールドが Never に設定されています。
4.7.1.9. 複数の BSL を使用した DPA の設定

複数の BackupStorageLocation (BSL) CR を使用して DataProtectionApplication (DPA) カスタムリソース (CR) を設定し、クラウドプロバイダーによって提供される認証情報を指定できます。

たとえば、次の 2 つの BSL を設定したとします。

  • DPA に 1 つの BSL を設定し、それをデフォルトの BSL として設定した。
  • BackupStorageLocation CR を使用して、別の BSL を別途作成した。

DPA を通じて作成された BSL をすでにデフォルトとして設定しているため、別途作成した BSL を再度デフォルトとして設定することはできません。つまり、任意の時点において、デフォルトの BSL として設定できる BSL は 1 つだけです。

前提条件

  • OADP Operator をインストールする。
  • クラウドプロバイダーによって提供される認証情報を使用してシークレットを作成する。

手順

  1. 複数の BackupStorageLocation CR を使用して DataProtectionApplication CR を設定します。以下の例を参照してください。

    DPA の例

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    #...
    backupLocations:
      - name: aws 
    1
    
        velero:
          provider: aws
          default: true 
    2
    
          objectStorage:
            bucket: <bucket_name> 
    3
    
            prefix: <prefix> 
    4
    
          config:
            region: <region_name> 
    5
    
            profile: "default"
          credential:
            key: cloud
            name: cloud-credentials 
    6
    
      - name: odf 
    7
    
        velero:
          provider: aws
          default: false
          objectStorage:
            bucket: <bucket_name>
            prefix: <prefix>
          config:
            profile: "default"
            region: <region_name>
            s3Url: <url> 
    8
    
            insecureSkipTLSVerify: "true"
            s3ForcePathStyle: "true"
          credential:
            key: cloud
            name: <custom_secret_name_odf> 
    9
    
    #...
    Copy to Clipboard Toggle word wrap

    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 名を指定しない場合は、デフォルトの名前が使用されます。
  2. バックアップ CR で使用する BSL を指定します。以下の例を参照してください。

    バックアップ CR の例

    apiVersion: velero.io/v1
    kind: Backup
    # ...
    spec:
      includedNamespaces:
      - <namespace> 
    1
    
      storageLocation: <backup_storage_location> 
    2
    
      defaultVolumesToFsBackup: true
    Copy to Clipboard Toggle word wrap

    1
    バックアップする namespace を指定します。
    2
    保存場所を指定します。
4.7.1.9.1. DataProtectionApplication CR で CSI を有効にする

CSI スナップショットを使用して永続ボリュームをバックアップするには、DataProtectionApplication カスタムリソース (CR) で Container Storage Interface (CSI) を有効にします。

前提条件

  • クラウドプロバイダーは、CSI スナップショットをサポートする必要があります。

手順

  • 次の例のように、DataProtectionApplication CR を編集します。

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    ...
    spec:
      configuration:
        velero:
          defaultPlugins:
          - openshift
          - csi 
    1
    Copy to Clipboard Toggle word wrap
    1
    csi デフォルトプラグインを追加します。
4.7.1.9.2. DataProtectionApplication でノードエージェントを無効にする

バックアップに ResticKopia、または DataMover を使用していない場合は、DataProtectionApplication カスタムリソース (CR) の nodeAgent フィールドを無効にすることができます。nodeAgent を無効にする前に、OADP Operator がアイドル状態であり、バックアップを実行していないことを確認してください。

手順

  1. nodeAgent を無効にするには、enable フラグを false に設定します。以下の例を参照してください。

    DataProtectionApplication CR の例

    # ...
    configuration:
      nodeAgent:
        enable: false  
    1
    
        uploaderType: kopia
    # ...
    Copy to Clipboard Toggle word wrap

    1
    ノードエージェントを無効にします。
  2. nodeAgent を有効にするには、enable フラグを true に設定します。以下の例を参照してください。

    DataProtectionApplication CR の例

    # ...
    configuration:
      nodeAgent:
        enable: true  
    1
    
        uploaderType: kopia
    # ...
    Copy to Clipboard Toggle word wrap

    1
    ノードエージェントを有効にします。

ジョブをセットアップして、DataProtectionApplication CR の nodeAgent フィールドを有効または無効にすることができます。詳細は、「ジョブの使用による Pod でのタスクの実行」を参照してください。

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 にログインしている。

手順

  1. 次のコマンドを実行して、IBM Cloud Object Storage (COS) プラグインをインストールします。

    $ ibmcloud plugin install cos -f
    Copy to Clipboard Toggle word wrap
  2. 次のコマンドを実行してバケット名を設定します。

    $ BUCKET=<bucket_name>
    Copy to Clipboard Toggle word wrap
  3. 次のコマンドを実行してバケットリージョンを設定します。

    $ REGION=<bucket_region> 
    1
    Copy to Clipboard Toggle word wrap
    1
    バケットのリージョンを指定します (例: eu-gb)。
  4. 次のコマンドを実行してリソースグループを作成します。

    $ ibmcloud resource group-create <resource_group_name>
    Copy to Clipboard Toggle word wrap
  5. 次のコマンドを実行して、ターゲットリソースグループを設定します。

    $ ibmcloud target -g <resource_group_name>
    Copy to Clipboard Toggle word wrap
  6. 次のコマンドを実行して、ターゲットリソースグループが正しく設定されていることを確認します。

    $ ibmcloud target
    Copy to Clipboard Toggle word wrap

    出力例

    API endpoint:     https://cloud.ibm.com
    Region:
    User:             test-user
    Account:          Test Account (fb6......e95) <-> 2...122
    Resource group:   Default
    Copy to Clipboard Toggle word wrap

    出力例では、リソースグループは Default に設定されています。

  7. 次のコマンドを実行してリソースグループ名を設定します。

    $ RESOURCE_GROUP=<resource_group> 
    1
    Copy to Clipboard Toggle word wrap
    1
    リソースグループ名を指定します (例: "default")。
  8. 次のコマンドを実行して、IBM Cloud service-instance リソースを作成します。

    $ ibmcloud resource service-instance-create \
    <service_instance_name> \
    1
    
    <service_name> \
    2
    
    <service_plan> \
    3
    
    <region_name> 
    4
    Copy to Clipboard Toggle word wrap
    1
    service-instance リソースの名前を指定します。
    2
    サービス名を指定します。または、サービス ID を指定することもできます。
    3
    IBM Cloud アカウントのサービスプランを指定します。
    4
    リージョン名を指定します。

    コマンドの例

    $ ibmcloud resource service-instance-create test-service-instance cloud-object-storage \ 
    1
    
    standard \
    global \
    -d premium-global-deployment 
    2
    Copy to Clipboard Toggle word wrap

    1
    サービス名は cloud-object-storage です。
    2
    -d フラグはデプロイメント名を指定します。
  9. 次のコマンドを実行して、サービスインスタンス ID を抽出します。

    $ SERVICE_INSTANCE_ID=$(ibmcloud resource service-instance test-service-instance --output json | jq -r '.[0].id')
    Copy to Clipboard Toggle word wrap
  10. 次のコマンドを実行して COS バケットを作成します。

    $ ibmcloud cos bucket-create \//
    --bucket $BUCKET \//
    --ibm-service-instance-id $SERVICE_INSTANCE_ID \//
    --region $REGION
    Copy to Clipboard Toggle word wrap

    $BUCKET$SERVICE_INSTANCE_ID$REGION などの変数は、以前に設定した値に置き換えられます。

  11. 次のコマンドを実行して HMAC 認証情報を作成します。

    $ ibmcloud resource service-key-create test-key Writer --instance-name test-service-instance --parameters {\"HMAC\":true}
    Copy to Clipboard Toggle word wrap
  12. 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__
    Copy to Clipboard Toggle word wrap
4.8.1.2. デフォルト Secret の作成

バックアップとスナップショットの場所が同じ認証情報を使用する場合、またはスナップショットの場所が必要ない場合は、デフォルトの Secret を作成します。

注記

DataProtectionApplication カスタムリソース (CR) にはデフォルトの Secret が必要です。作成しないと、インストールは失敗します。バックアップの場所の Secret の名前が指定されていない場合は、デフォルトの名前が使用されます。

インストール時にバックアップ場所の認証情報を使用しない場合は、空の credentials-velero ファイルを使用して、デフォルト名の Secret を作成できます。

前提条件

  • オブジェクトストレージとクラウドストレージがある場合は、同じ認証情報を使用する必要があります。
  • Velero のオブジェクトストレージを設定する必要があります。

手順

  1. Backup Storage Location の credentials-velero ファイルをクラウドプロバイダーに適した形式で作成します。
  2. デフォルト名で Secret カスタムリソース (CR) を作成します。

    $ oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-velero
    Copy to Clipboard Toggle word wrap

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 で指定されていません。

手順

  1. スナップショットの場所の credentials-velero ファイルをクラウドプロバイダーに適した形式で作成します。
  2. デフォルト名でスナップショットの場所の Secret を作成します。

    $ oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-velero
    Copy to Clipboard Toggle word wrap
  3. オブジェクトストレージに適した形式で、バックアップロケーションの credentials-velero ファイルを作成します。
  4. カスタム名を使用してバックアップロケーションの Secret を作成します。

    $ oc create secret generic <custom_secret> -n openshift-adp --from-file cloud=credentials-velero
    Copy to Clipboard Toggle word wrap
  5. 次の例のように、カスタム名の SecretDataProtectionApplication に追加します。

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: <dpa_sample>
      namespace: openshift-adp
    spec:
    ...
      backupLocations:
        - velero:
            provider: <provider>
            default: true
            credential:
              key: cloud
              name: <custom_secret> 
    1
    
            objectStorage:
              bucket: <bucket_name>
              prefix: <prefix>
    Copy to Clipboard Toggle word wrap
    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 がない場合、インストールは失敗します。

手順

  1. OperatorsInstalled Operators をクリックして、OADP Operator を選択します。
  2. Provided APIs で、DataProtectionApplication ボックスの Create instance をクリックします。
  3. YAML View をクリックして、DataProtectionApplication マニフェストのパラメーターを更新します。

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      namespace: openshift-adp
      name: <dpa_name>
    spec:
      configuration:
        velero:
          defaultPlugins:
          - openshift
          - aws
          - csi
      backupLocations:
        - velero:
            provider: aws 
    1
    
            default: true
            objectStorage:
              bucket: <bucket_name> 
    2
    
              prefix: velero
            config:
              insecureSkipTLSVerify: 'true'
              profile: default
              region: <region_name> 
    3
    
              s3ForcePathStyle: 'true'
              s3Url: <s3_url> 
    4
    
            credential:
              key: cloud
              name: cloud-credentials 
    5
    Copy to Clipboard Toggle word wrap
    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 認証情報からのアクセスキーとシークレットアクセスキーを使用して作成したシークレットの名前を定義します。
  4. Create をクリックします。

検証

  1. 次のコマンドを実行して OpenShift API for Data Protection (OADP) リソースを表示し、インストールを検証します。

    $ oc get all -n openshift-adp
    Copy to Clipboard Toggle word wrap

    出力例

    NAME                                                     READY   STATUS    RESTARTS   AGE
    pod/oadp-operator-controller-manager-67d9494d47-6l8z8    2/2     Running   0          2m8s
    pod/node-agent-9cq4q                                     1/1     Running   0          94s
    pod/node-agent-m4lts                                     1/1     Running   0          94s
    pod/node-agent-pv4kr                                     1/1     Running   0          95s
    pod/velero-588db7f655-n842v                              1/1     Running   0          95s
    
    NAME                                                       TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
    service/oadp-operator-controller-manager-metrics-service   ClusterIP   172.30.70.140    <none>        8443/TCP   2m8s
    service/openshift-adp-velero-metrics-svc                   ClusterIP   172.30.10.0      <none>        8085/TCP   8h
    
    NAME                        DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
    daemonset.apps/node-agent    3         3         3       3            3           <none>          96s
    
    NAME                                                READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/oadp-operator-controller-manager    1/1     1            1           2m9s
    deployment.apps/velero                              1/1     1            1           96s
    
    NAME                                                           DESIRED   CURRENT   READY   AGE
    replicaset.apps/oadp-operator-controller-manager-67d9494d47    1         1         1       2m9s
    replicaset.apps/velero-588db7f655                              1         1         1       96s
    Copy to Clipboard Toggle word wrap

  2. 次のコマンドを実行して、DataProtectionApplication (DPA) が調整されていることを確認します。

    $ oc get dpa dpa-sample -n openshift-adp -o jsonpath='{.status}'
    Copy to Clipboard Toggle word wrap

    出力例

    {"conditions":[{"lastTransitionTime":"2023-10-27T01:23:57Z","message":"Reconcile complete","reason":"Complete","status":"True","type":"Reconciled"}]}
    Copy to Clipboard Toggle word wrap

  3. typeReconciled に設定されていることを確認します。
  4. 次のコマンドを実行して、Backup Storage Location を確認し、PHASEAvailable であることを確認します。

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

    出力例

    NAME           PHASE       LAST VALIDATED   AGE     DEFAULT
    dpa-sample-1   Available   1s               3d16h   true
    Copy to Clipboard Toggle word wrap

4.8.1.5. Velero の CPU とメモリーのリソース割り当てを設定

DataProtectionApplication カスタムリソース (CR) マニフェストを編集して、Velero Pod の CPU およびメモリーリソースの割り当てを設定します。

前提条件

  • OpenShift API for Data Protection (OADP) Operator がインストールされている必要があります。

手順

  • 次の例のように、DataProtectionApplication CR マニフェストの spec.configuration.velero.podConfig.ResourceAllocations ブロックの値を編集します。

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: <dpa_sample>
    spec:
    # ...
      configuration:
        velero:
          podConfig:
            nodeSelector: <node_selector> 
    1
    
            resourceAllocations: 
    2
    
              limits:
                cpu: "1"
                memory: 1024Mi
              requests:
                cpu: 200m
                memory: 256Mi
    Copy to Clipboard Toggle word wrap
    1
    Velero podSpec に提供されるノードセレクターを指定します。
    2
    リストされている resourceAllocations は、平均使用量です。
    注記

    Kopia は OADP 1.3 以降のリリースで選択できます。Kopia はファイルシステムのバックアップに使用できます。組み込みの Data Mover を使用する Data Mover の場合は、Kopia が唯一の選択肢になります。

    Kopia は Restic よりも多くのリソースを消費するため、それに応じて CPU とメモリーの要件を調整しなければならない場合があります。

4.8.1.6. ノードエージェントとノードラベルの設定

Data Protection Application (DPA) は、nodeSelector フィールドを使用して、ノードエージェントを実行できるノードを選択します。nodeSelector フィールドは、推奨される形式のノード選択制約です。

手順

  1. カスタムラベルを追加して、選択した任意のノードでノードエージェントを実行します。

    $ oc label node/<node_name> node-role.kubernetes.io/nodeAgent=""
    Copy to Clipboard Toggle word wrap
    注記

    指定したラベルが、各ノードのラベルと一致する必要があります。

  2. ノードのラベル付けに使用したのと同じカスタムラベルを DPA.spec.configuration.nodeAgent.podConfig.nodeSelector フィールドで使用します。

    configuration:
      nodeAgent:
        enable: true
        podConfig:
          nodeSelector:
            node-role.kubernetes.io/nodeAgent: ""
    Copy to Clipboard Toggle word wrap

    次の例は nodeSelector のアンチパターンです。この例は、node-role.kubernetes.io/infra: ""node-role.kubernetes.io/worker: "" の両方のラベルがノードに存在しない限り機能しません。

        configuration:
          nodeAgent:
            enable: true
            podConfig:
              nodeSelector:
                node-role.kubernetes.io/infra: ""
                node-role.kubernetes.io/worker: ""
    Copy to Clipboard Toggle word wrap
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 がインストールされている。

手順

  • 次の例に示すように、DPA の client-burst フィールドと client-qps フィールドを設定します。

    Data Protection Application の例

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: test-dpa
      namespace: openshift-adp
    spec:
      backupLocations:
        - name: default
          velero:
            config:
              insecureSkipTLSVerify: "true"
              profile: "default"
              region: <bucket_region>
              s3ForcePathStyle: "true"
              s3Url: <bucket_url>
            credential:
              key: cloud
              name: cloud-credentials
            default: true
            objectStorage:
              bucket: <bucket_name>
              prefix: velero
            provider: aws
      configuration:
        nodeAgent:
          enable: true
          uploaderType: restic
        velero:
          client-burst: 500 
    1
    
          client-qps: 300 
    2
    
          defaultPlugins:
            - openshift
            - aws
            - kubevirt
    Copy to Clipboard Toggle word wrap

    1
    client-burst 値を指定します。この例では、client-burst フィールドは 500 に設定されています。
    2
    client-qps 値を指定します。この例では、client-qps フィールドは 300 に設定されています。
4.8.1.8. DPA の imagePullPolicy 設定のオーバーライド

OADP 1.4.0 以前では、Operator はすべてのイメージで Velero およびノードエージェント Pod の imagePullPolicy フィールドを Always に設定します。

OADP 1.4.1 以降では、Operator はまず、各イメージに sha256 または sha512 ダイジェストがあるかを確認し、それに応じて imagePullPolicy フィールドを設定します。

  • イメージにダイジェストがある場合、Operator は imagePullPolicyIfNotPresent に設定します。
  • イメージにダイジェストがない場合、Operator は imagePullPolicyAlways に設定します。

Data Protection Application (DPA) の spec.imagePullPolicy フィールドを使用して、imagePullPolicy フィールドをオーバーライドすることもできます。

前提条件

  • OADP Operator がインストールされている。

手順

  • 以下の例のように、DPA の spec.imagePullPolicy フィールドを設定します。

    Data Protection Application の例

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: test-dpa
      namespace: openshift-adp
    spec:
      backupLocations:
        - name: default
          velero:
            config:
              insecureSkipTLSVerify: "true"
              profile: "default"
              region: <bucket_region>
              s3ForcePathStyle: "true"
              s3Url: <bucket_url>
            credential:
              key: cloud
              name: cloud-credentials
            default: true
            objectStorage:
              bucket: <bucket_name>
              prefix: velero
            provider: aws
      configuration:
        nodeAgent:
          enable: true
          uploaderType: kopia
        velero:
          defaultPlugins:
            - openshift
            - aws
            - kubevirt
            - csi
      imagePullPolicy: Never 
    1
    Copy to Clipboard Toggle word wrap

    1
    imagePullPolicy の値を指定します。この例では、imagePullPolicy フィールドが Never に設定されています。
4.8.1.9. 複数の BSL を使用した DPA の設定

複数の BackupStorageLocation (BSL) CR を使用して DataProtectionApplication (DPA) カスタムリソース (CR) を設定し、クラウドプロバイダーによって提供される認証情報を指定できます。

たとえば、次の 2 つの BSL を設定したとします。

  • DPA に 1 つの BSL を設定し、それをデフォルトの BSL として設定した。
  • BackupStorageLocation CR を使用して、別の BSL を別途作成した。

DPA を通じて作成された BSL をすでにデフォルトとして設定しているため、別途作成した BSL を再度デフォルトとして設定することはできません。つまり、任意の時点において、デフォルトの BSL として設定できる BSL は 1 つだけです。

前提条件

  • OADP Operator をインストールする。
  • クラウドプロバイダーによって提供される認証情報を使用してシークレットを作成する。

手順

  1. 複数の BackupStorageLocation CR を使用して DataProtectionApplication CR を設定します。以下の例を参照してください。

    DPA の例

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    #...
    backupLocations:
      - name: aws 
    1
    
        velero:
          provider: aws
          default: true 
    2
    
          objectStorage:
            bucket: <bucket_name> 
    3
    
            prefix: <prefix> 
    4
    
          config:
            region: <region_name> 
    5
    
            profile: "default"
          credential:
            key: cloud
            name: cloud-credentials 
    6
    
      - name: odf 
    7
    
        velero:
          provider: aws
          default: false
          objectStorage:
            bucket: <bucket_name>
            prefix: <prefix>
          config:
            profile: "default"
            region: <region_name>
            s3Url: <url> 
    8
    
            insecureSkipTLSVerify: "true"
            s3ForcePathStyle: "true"
          credential:
            key: cloud
            name: <custom_secret_name_odf> 
    9
    
    #...
    Copy to Clipboard Toggle word wrap

    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 名を指定しない場合は、デフォルトの名前が使用されます。
  2. バックアップ CR で使用する BSL を指定します。以下の例を参照してください。

    バックアップ CR の例

    apiVersion: velero.io/v1
    kind: Backup
    # ...
    spec:
      includedNamespaces:
      - <namespace> 
    1
    
      storageLocation: <backup_storage_location> 
    2
    
      defaultVolumesToFsBackup: true
    Copy to Clipboard Toggle word wrap

    1
    バックアップする namespace を指定します。
    2
    保存場所を指定します。
4.8.1.10. DataProtectionApplication でノードエージェントを無効にする

バックアップに ResticKopia、または DataMover を使用していない場合は、DataProtectionApplication カスタムリソース (CR) の nodeAgent フィールドを無効にすることができます。nodeAgent を無効にする前に、OADP Operator がアイドル状態であり、バックアップを実行していないことを確認してください。

手順

  1. nodeAgent を無効にするには、enable フラグを false に設定します。以下の例を参照してください。

    DataProtectionApplication CR の例

    # ...
    configuration:
      nodeAgent:
        enable: false  
    1
    
        uploaderType: kopia
    # ...
    Copy to Clipboard Toggle word wrap

    1
    ノードエージェントを無効にします。
  2. nodeAgent を有効にするには、enable フラグを true に設定します。以下の例を参照してください。

    DataProtectionApplication CR の例

    # ...
    configuration:
      nodeAgent:
        enable: true  
    1
    
        uploaderType: kopia
    # ...
    Copy to Clipboard Toggle word wrap

    1
    ノードエージェントを有効にします。

ジョブをセットアップして、DataProtectionApplication CR の nodeAgent フィールドを有効または無効にすることができます。詳細は、「ジョブの使用による Pod でのタスクの実行」を参照してください。

4.9. Azure を使用した OADP の設定

4.9.1. Microsoft Azure を使用した OpenShift API for Data Protection の設定

OADP Operator をインストールすることで、Microsoft Azure を使用して OpenShift API for Data Protection (OADP) をインストールします。Operator は Velero 1.14 をインストールします。

注記

OADP 1.0.4 以降、すべての OADP 1.0.z バージョンは Migration Toolkit for Containers Operator の依存関係としてのみ使用でき、スタンドアロン Operator として使用することはできません。

Velero 用に Azure を設定し、デフォルトの Secret を作成してから、Data Protection Application をインストールします。詳細は、OADP Operator のインストール を参照してください。

制限されたネットワーク環境に OADP Operator をインストールするには、最初にデフォルトの OperatorHub ソースを無効にして、Operator カタログをミラーリングする必要があります。詳細は、ネットワークが制限された環境での Operator Lifecycle Manager の使用 を参照してください。

4.9.1.1. Microsoft Azure の設定

OpenShift API for Data Protection (OADP) 用に Microsoft Azure を設定します。

前提条件

  • Azure CLI がインストールされていること。

Azure サービスを使用するツールには、Azure リソースの安全を確保するために、必ず制限された権限を付与する必要があります。そのため、Azure では、アプリケーションを完全な権限を持つユーザーとしてサインインさせる代わりに、サービスプリンシパルを提供しています。Azure サービスプリンシパルは、アプリケーション、ホストされたサービス、または自動化ツールで使用できる名前です。

このアイデンティティーはリソースへのアクセスに使用されます。

  • サービスプリンシパルを作成する
  • サービスプリンシパルとパスワードを使用してサインインする
  • サービスプリンシパルと証明書を使用してサインインする
  • サービスプリンシパルのロールを管理する
  • サービスプリンシパルを使用して Azure リソースを作成する
  • サービスプリンシパルの認証情報をリセットする

詳細は、Create an Azure service principal with Azure CLI を参照してください。

4.9.1.2. バックアップおよびスナップショットの場所、ならびにそのシークレットについて

DataProtectionApplication カスタムリソース (CR) で、バックアップおよびスナップショットの場所、ならびにそのシークレットを指定します。

4.9.1.2.1. バックアップの場所

バックアップの場所として、次のいずれかの AWS S3 互換オブジェクトストレージソリューションを指定できます。

  • Multicloud Object Gateway (MCG)
  • Red Hat Container Storage
  • Ceph RADOS Gateway (別称 Ceph Object Gateway)
  • Red Hat OpenShift Data Foundation
  • MinIO

Velero は、オブジェクトストレージのアーカイブファイルとして、OpenShift Container Platform リソース、Kubernetes オブジェクト、および内部イメージをバックアップします。

4.9.1.2.2. スナップショットの場所

クラウドプロバイダーのネイティブスナップショット API を使用して永続ボリュームをバックアップする場合、クラウドプロバイダーをスナップショットの場所として指定する必要があります。

Container Storage Interface (CSI) スナップショットを使用する場合、CSI ドライバーを登録するために VolumeSnapshotClass CR を作成するため、スナップショットの場所を指定する必要はありません。

File System Backup (FSB) を使用する場合、FSB がオブジェクトストレージ上にファイルシステムをバックアップするため、スナップショットの場所を指定する必要はありません。

4.9.1.2.3. シークレット

バックアップとスナップショットの場所が同じ認証情報を使用する場合、またはスナップショットの場所が必要ない場合は、デフォルトの Secret を作成します。

バックアップとスナップショットの場所で異なる認証情報を使用する場合は、次の 2 つの secret オブジェクトを作成します。

  • DataProtectionApplication CR で指定する、バックアップの場所用のカスタム Secret
  • DataProtectionApplication CR で参照されない、スナップショットの場所用のデフォルト Secret
重要

Data Protection Application には、デフォルトの Secret が必要です。作成しないと、インストールは失敗します。

インストール中にバックアップまたはスナップショットの場所を指定したくない場合は、空の credentials-velero ファイルを使用してデフォルトの Secret を作成できます。

4.9.1.3. Azure での OADP の認証について

Azure で OADP を認証するには、次の方法を使用できます。

  • シークレットベースの認証を使用する Velero 専用のサービスプリンシパル
  • シークレットベースの認証を使用する Velero 専用のストレージアカウントアクセスキー
4.9.1.4. サービスプリンシパルまたはストレージアカウントアクセスキーを使用する

デフォルトの Secret オブジェクトを作成し、Backup Storage Location のカスタムリソースでそれを参照します。Secret オブジェクトの認証情報ファイルには、Azure サービスプリンシパルまたはストレージアカウントアクセスキーに関する情報を含めることができます。

Secret のデフォルト名は cloud-credentials-azure です。

注記

DataProtectionApplication カスタムリソース (CR) にはデフォルトの Secret が必要です。作成しないと、インストールは失敗します。バックアップの場所の Secret の名前が指定されていない場合は、デフォルトの名前が使用されます。

インストール時にバックアップ場所の認証情報を使用しない場合は、空の credentials-velero ファイルを使用して、デフォルト名の Secret を作成できます。

前提条件

  • cluster-admin 特権を持つユーザーとして OpenShift クラスターにアクセスできる。
  • 適切な権限が付与された Azure サブスクリプションがある。
  • OADP をインストールした。
  • バックアップを保存するためのオブジェクトストレージを設定した。

手順

  1. Backup Storage Location の credentials-velero ファイルをクラウドプロバイダーに適した形式で作成します。

    Azure で OADP を認証するには、次の 2 つの方法のいずれかを使用できます。

    • シークレットベースの認証でサービスプリンシパルを使用します。以下の例を参照してください。

      AZURE_SUBSCRIPTION_ID=<azure_subscription_id>
      AZURE_TENANT_ID=<azure_tenant_id>
      AZURE_CLIENT_ID=<azure_client_id>
      AZURE_CLIENT_SECRET=<azure_client_secret>
      AZURE_RESOURCE_GROUP=<azure_resource_group>
      AZURE_CLOUD_NAME=<azure_cloud_name>
      Copy to Clipboard Toggle word wrap
    • ストレージアカウントアクセスキーを使用します。以下の例を参照してください。

      AZURE_STORAGE_ACCOUNT_ACCESS_KEY=<azure_storage_account_access_key>
      AZURE_SUBSCRIPTION_ID=<azure_subscription_id>
      AZURE_RESOURCE_GROUP=<azure_resource_group>
      AZURE_CLOUD_NAME=<azure_cloud_name>
      Copy to Clipboard Toggle word wrap
  2. デフォルト名で Secret カスタムリソース (CR) を作成します。

    $ oc create secret generic cloud-credentials-azure -n openshift-adp --from-file cloud=credentials-velero
    Copy to Clipboard Toggle word wrap
  3. 次の例に示すように、Data Protection Application をインストールするときに、DataProtectionApplication CR の spec.backupLocations.velero.credential ブロック内の Secret を参照します。

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: <dpa_sample>
      namespace: openshift-adp
    spec:
    ...
      backupLocations:
        - velero:
            config:
              resourceGroup: <azure_resource_group>
              storageAccount: <azure_storage_account_id>
              subscriptionId: <azure_subscription_id>
            credential:
              key: cloud
              name: <custom_secret> 
    1
    
            provider: azure
            default: true
            objectStorage:
              bucket: <bucket_name>
              prefix: <prefix>
      snapshotLocations:
        - velero:
            config:
              resourceGroup: <azure_resource_group>
              subscriptionId: <azure_subscription_id>
              incremental: "true"
            provider: azure
    Copy to Clipboard Toggle word wrap
    1
    カスタム名を持つバックアップロケーションの Secret

Velero リソースの割り当てを設定するか、自己署名 CA 証明書を有効にして、Data Protection Application を設定できます。

4.9.1.5. Velero の CPU とメモリーのリソース割り当てを設定

DataProtectionApplication カスタムリソース (CR) マニフェストを編集して、Velero Pod の CPU およびメモリーリソースの割り当てを設定します。

前提条件

  • OpenShift API for Data Protection (OADP) Operator がインストールされている必要があります。

手順

  • 次の例のように、DataProtectionApplication CR マニフェストの spec.configuration.velero.podConfig.ResourceAllocations ブロックの値を編集します。

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: <dpa_sample>
    spec:
    # ...
      configuration:
        velero:
          podConfig:
            nodeSelector: <node_selector> 
    1
    
            resourceAllocations: 
    2
    
              limits:
                cpu: "1"
                memory: 1024Mi
              requests:
                cpu: 200m
                memory: 256Mi
    Copy to Clipboard Toggle word wrap
    1
    Velero podSpec に提供されるノードセレクターを指定します。
    2
    リストされている resourceAllocations は、平均使用量です。
    注記

    Kopia は OADP 1.3 以降のリリースで選択できます。Kopia はファイルシステムのバックアップに使用できます。組み込みの Data Mover を使用する Data Mover の場合は、Kopia が唯一の選択肢になります。

    Kopia は Restic よりも多くのリソースを消費するため、それに応じて CPU とメモリーの要件を調整しなければならない場合があります。

nodeSelector フィールドを使用して、ノードエージェントを実行できるノードを選択します。nodeSelector フィールドは、推奨される最も単純な形式のノード選択制約です。指定したラベルが、各ノードのラベルと一致する必要があります。

詳細は、ノードエージェントとノードラベルの設定 を参照してください。

4.9.1.6. 自己署名 CA 証明書の有効化

certificate signed by unknown authority エラーを防ぐために、DataProtectionApplication カスタムリソース (CR) マニフェストを編集して、オブジェクトストレージの自己署名 CA 証明書を有効にする必要があります。

前提条件

  • OpenShift API for Data Protection (OADP) Operator がインストールされている必要があります。

手順

  • DataProtectionApplication CR マニフェストの spec.backupLocations.velero.objectStorage.caCert パラメーターと spec.backupLocations.velero.config パラメーターを編集します。

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: <dpa_sample>
    spec:
    # ...
      backupLocations:
        - name: default
          velero:
            provider: aws
            default: true
            objectStorage:
              bucket: <bucket>
              prefix: <prefix>
              caCert: <base64_encoded_cert_string> 
    1
    
            config:
              insecureSkipTLSVerify: "false" 
    2
    
    # ...
    Copy to Clipboard Toggle word wrap
    1
    Base64 でエンコードされた CA 証明書文字列を指定します。
    2
    insecureSkipTLSVerify 設定は、"true" または "false" のいずれかに設定できます。"true" に設定すると、SSL/TLS セキュリティーが無効になります。"false" に設定すると、SSL/TLS セキュリティーが有効になります。
4.9.1.6.1. Velero デプロイメント用のエイリアス化した velero コマンドで CA 証明書を使用する

Velero CLI のエイリアスを作成することで、システムにローカルにインストールせずに Velero CLI を使用できます。

前提条件

  • cluster-admin ロールを持つユーザーとして OpenShift Container Platform クラスターにログインしている。
  • OpenShift CLI (oc) がインストールされている。

    1. エイリアス化した Velero コマンドを使用するには、次のコマンドを実行します。

      $ alias velero='oc -n openshift-adp exec deployment/velero -c velero -it -- ./velero'
      Copy to Clipboard Toggle word wrap
    2. 次のコマンドを実行して、エイリアスが機能していることを確認します。

      $ velero version
      Copy to Clipboard Toggle word wrap
      Client:
      	Version: v1.12.1-OADP
      	Git commit: -
      Server:
      	Version: v1.12.1-OADP
      Copy to Clipboard Toggle word wrap
    3. このコマンドで CA 証明書を使用するには、次のコマンドを実行して証明書を Velero デプロイメントに追加できます。

      $ CA_CERT=$(oc -n openshift-adp get dataprotectionapplications.oadp.openshift.io <dpa-name> -o jsonpath='{.spec.backupLocations[0].velero.objectStorage.caCert}')
      Copy to Clipboard Toggle word wrap
      $ [[ -n $CA_CERT ]] && echo "$CA_CERT" | base64 -d | oc exec -n openshift-adp -i deploy/velero -c velero -- bash -c "cat > /tmp/your-cacert.txt" || echo "DPA BSL has no caCert"
      Copy to Clipboard Toggle word wrap
      $ velero describe backup <backup_name> --details --cacert /tmp/<your_cacert>.txt
      Copy to Clipboard Toggle word wrap
    4. バックアップログを取得するために、次のコマンドを実行します。

      $ velero backup logs  <backup_name>  --cacert /tmp/<your_cacert.txt>
      Copy to Clipboard Toggle word wrap

      このログを使用して、バックアップできないリソースの障害と警告を表示できます。

    5. Velero Pod が再起動すると、/tmp/your-cacert.txt ファイルが消去されます。そのため、前の手順のコマンドを再実行して /tmp/your-cacert.txt ファイルを再作成する必要があります。
    6. 次のコマンドを実行すると、/tmp/your-cacert.txt ファイルを保存した場所にファイルがまだ存在するかどうかを確認できます。

      $ oc exec -n openshift-adp -i deploy/velero -c velero -- bash -c "ls /tmp/your-cacert.txt"
      /tmp/your-cacert.txt
      Copy to Clipboard Toggle word wrap

OpenShift API for Data Protection (OADP) の今後のリリースでは、この手順が不要になるように証明書を Velero Pod にマウントする予定です。

4.9.1.7. Data Protection Application のインストール

DataProtectionApplication API のインスタンスを作成して、Data Protection Application (DPA) をインストールします。

前提条件

  • OADP Operator をインストールする。
  • オブジェクトストレージをバックアップロケーションとして設定する必要がある。
  • スナップショットを使用して PV をバックアップする場合、クラウドプロバイダーはネイティブスナップショット API または Container Storage Interface (CSI) スナップショットのいずれかをサポートする必要がある。
  • バックアップとスナップショットの場所で同じ認証情報を使用する場合は、デフォルトの名前である cloud-credentials-azure を使用して Secret を作成する必要がある。

    注記

    インストール中にバックアップまたはスナップショットの場所を指定したくない場合は、空の credentials-velero ファイルを使用してデフォルトの Secret を作成できます。デフォルトの Secret がない場合、インストールは失敗します。

手順

  1. OperatorsInstalled Operators をクリックして、OADP Operator を選択します。
  2. Provided APIs で、DataProtectionApplication ボックスの Create instance をクリックします。
  3. YAML View をクリックして、DataProtectionApplication マニフェストのパラメーターを更新します。

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: <dpa_sample>
      namespace: openshift-adp 
    1
    
    spec:
      configuration:
        velero:
          defaultPlugins:
            - azure
            - openshift 
    2
    
          resourceTimeout: 10m 
    3
    
        nodeAgent: 
    4
    
          enable: true 
    5
    
          uploaderType: kopia 
    6
    
          podConfig:
            nodeSelector: <node_selector> 
    7
    
      backupLocations:
        - velero:
            config:
              resourceGroup: <azure_resource_group> 
    8
    
              storageAccount: <azure_storage_account_id> 
    9
    
              subscriptionId: <azure_subscription_id> 
    10
    
            credential:
              key: cloud
              name: cloud-credentials-azure  
    11
    
            provider: azure
            default: true
            objectStorage:
              bucket: <bucket_name> 
    12
    
              prefix: <prefix> 
    13
    
      snapshotLocations: 
    14
    
        - velero:
            config:
              resourceGroup: <azure_resource_group>
              subscriptionId: <azure_subscription_id>
              incremental: "true"
            name: default
            provider: azure
            credential:
              key: cloud
              name: cloud-credentials-azure 
    15
    Copy to Clipboard Toggle word wrap
    1
    OADP のデフォルトの namespace は openshift-adp です。namespace は変数であり、設定可能です。
    2
    openshift プラグインは必須です。
    3
    Velero CRD の可用性、volumeSnapshot の削除、バックアップリポジトリーの可用性など、タイムアウトが発生するまでに複数の Velero リソースを待機する時間を分単位で指定します。デフォルトは 10m です。
    4
    管理要求をサーバーにルーティングする管理エージェント。
    5
    nodeAgent を有効にして File System Backup を実行する場合は、この値を true に設定します。
    6
    アップローダーとして kopia または restic と入力します。インストール後に選択を変更することはできません。組み込み DataMover の場合は、Kopia を使用する必要があります。nodeAgent はデーモンセットをデプロイします。これは、nodeAgent Pod が各ワーキングノード上で実行されることを意味します。File System Backup を設定するには、spec.defaultVolumesToFsBackup: trueBackup CR に追加します。
    7
    Kopia または Restic が使用可能なノードを指定します。デフォルトでは、Kopia または Restic はすべてのノードで実行されます。
    8
    Azure リソースグループを指定します。
    9
    Azure ストレージアカウント ID を指定します。
    10
    Azure サブスクリプション ID を指定します。
    11
    この値を指定しない場合は、デフォルト名の cloud-credentials-azure が使用されます。カスタム名を指定すると、バックアップの場所にカスタム名が使用されます。
    12
    Backup Storage Location としてバケットを指定します。バケットが Velero バックアップ専用のバケットでない場合は、接頭辞を指定する必要があります。
    13
    バケットが複数の目的で使用される場合は、Velero バックアップの接頭辞を指定します (例: velero)。
    14
    CSI スナップショットまたは Restic を使用して PV をバックアップする場合は、スナップショットの場所を指定する必要はありません。
    15
    作成した Secret オブジェクトの名前を指定します。この値を指定しない場合は、デフォルト名の cloud-credentials-azure が使用されます。カスタム名を指定すると、バックアップの場所にカスタム名が使用されます。
  4. Create をクリックします。

検証

  1. 次のコマンドを実行して OpenShift API for Data Protection (OADP) リソースを表示し、インストールを検証します。

    $ oc get all -n openshift-adp
    Copy to Clipboard Toggle word wrap

    出力例

    NAME                                                     READY   STATUS    RESTARTS   AGE
    pod/oadp-operator-controller-manager-67d9494d47-6l8z8    2/2     Running   0          2m8s
    pod/node-agent-9cq4q                                     1/1     Running   0          94s
    pod/node-agent-m4lts                                     1/1     Running   0          94s
    pod/node-agent-pv4kr                                     1/1     Running   0          95s
    pod/velero-588db7f655-n842v                              1/1     Running   0          95s
    
    NAME                                                       TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
    service/oadp-operator-controller-manager-metrics-service   ClusterIP   172.30.70.140    <none>        8443/TCP   2m8s
    service/openshift-adp-velero-metrics-svc                   ClusterIP   172.30.10.0      <none>        8085/TCP   8h
    
    NAME                        DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
    daemonset.apps/node-agent    3         3         3       3            3           <none>          96s
    
    NAME                                                READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/oadp-operator-controller-manager    1/1     1            1           2m9s
    deployment.apps/velero                              1/1     1            1           96s
    
    NAME                                                           DESIRED   CURRENT   READY   AGE
    replicaset.apps/oadp-operator-controller-manager-67d9494d47    1         1         1       2m9s
    replicaset.apps/velero-588db7f655                              1         1         1       96s
    Copy to Clipboard Toggle word wrap

  2. 次のコマンドを実行して、DataProtectionApplication (DPA) が調整されていることを確認します。

    $ oc get dpa dpa-sample -n openshift-adp -o jsonpath='{.status}'
    Copy to Clipboard Toggle word wrap

    出力例

    {"conditions":[{"lastTransitionTime":"2023-10-27T01:23:57Z","message":"Reconcile complete","reason":"Complete","status":"True","type":"Reconciled"}]}
    Copy to Clipboard Toggle word wrap

  3. typeReconciled に設定されていることを確認します。
  4. 次のコマンドを実行して、Backup Storage Location を確認し、PHASEAvailable であることを確認します。

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

    出力例

    NAME           PHASE       LAST VALIDATED   AGE     DEFAULT
    dpa-sample-1   Available   1s               3d16h   true
    Copy to Clipboard Toggle word wrap

4.9.1.8. クライアントバースト設定と 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 がインストールされている。

手順

  • 次の例に示すように、DPA の client-burst フィールドと client-qps フィールドを設定します。

    Data Protection Application の例

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: test-dpa
      namespace: openshift-adp
    spec:
      backupLocations:
        - name: default
          velero:
            config:
              insecureSkipTLSVerify: "true"
              profile: "default"
              region: <bucket_region>
              s3ForcePathStyle: "true"
              s3Url: <bucket_url>
            credential:
              key: cloud
              name: cloud-credentials
            default: true
            objectStorage:
              bucket: <bucket_name>
              prefix: velero
            provider: aws
      configuration:
        nodeAgent:
          enable: true
          uploaderType: restic
        velero:
          client-burst: 500 
    1
    
          client-qps: 300 
    2
    
          defaultPlugins:
            - openshift
            - aws
            - kubevirt
    Copy to Clipboard Toggle word wrap

    1
    client-burst 値を指定します。この例では、client-burst フィールドは 500 に設定されています。
    2
    client-qps 値を指定します。この例では、client-qps フィールドは 300 に設定されています。
4.9.1.9. DPA の imagePullPolicy 設定のオーバーライド

OADP 1.4.0 以前では、Operator はすべてのイメージで Velero およびノードエージェント Pod の imagePullPolicy フィールドを Always に設定します。

OADP 1.4.1 以降では、Operator はまず、各イメージに sha256 または sha512 ダイジェストがあるかを確認し、それに応じて imagePullPolicy フィールドを設定します。

  • イメージにダイジェストがある場合、Operator は imagePullPolicyIfNotPresent に設定します。
  • イメージにダイジェストがない場合、Operator は imagePullPolicyAlways に設定します。

Data Protection Application (DPA) の spec.imagePullPolicy フィールドを使用して、imagePullPolicy フィールドをオーバーライドすることもできます。

前提条件

  • OADP Operator がインストールされている。

手順

  • 以下の例のように、DPA の spec.imagePullPolicy フィールドを設定します。

    Data Protection Application の例

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: test-dpa
      namespace: openshift-adp
    spec:
      backupLocations:
        - name: default
          velero:
            config:
              insecureSkipTLSVerify: "true"
              profile: "default"
              region: <bucket_region>
              s3ForcePathStyle: "true"
              s3Url: <bucket_url>
            credential:
              key: cloud
              name: cloud-credentials
            default: true
            objectStorage:
              bucket: <bucket_name>
              prefix: velero
            provider: aws
      configuration:
        nodeAgent:
          enable: true
          uploaderType: kopia
        velero:
          defaultPlugins:
            - openshift
            - aws
            - kubevirt
            - csi
      imagePullPolicy: Never 
    1
    Copy to Clipboard Toggle word wrap

    1
    imagePullPolicy の値を指定します。この例では、imagePullPolicy フィールドが Never に設定されています。
4.9.1.9.1. ノードエージェントとノードラベルの設定

Data Protection Application (DPA) は、nodeSelector フィールドを使用して、ノードエージェントを実行できるノードを選択します。nodeSelector フィールドは、推奨される形式のノード選択制約です。

手順

  1. カスタムラベルを追加して、選択した任意のノードでノードエージェントを実行します。

    $ oc label node/<node_name> node-role.kubernetes.io/nodeAgent=""
    Copy to Clipboard Toggle word wrap
    注記

    指定したラベルが、各ノードのラベルと一致する必要があります。

  2. ノードのラベル付けに使用したのと同じカスタムラベルを DPA.spec.configuration.nodeAgent.podConfig.nodeSelector フィールドで使用します。

    configuration:
      nodeAgent:
        enable: true
        podConfig:
          nodeSelector:
            node-role.kubernetes.io/nodeAgent: ""
    Copy to Clipboard Toggle word wrap

    次の例は nodeSelector のアンチパターンです。この例は、node-role.kubernetes.io/infra: ""node-role.kubernetes.io/worker: "" の両方のラベルがノードに存在しない限り機能しません。

        configuration:
          nodeAgent:
            enable: true
            podConfig:
              nodeSelector:
                node-role.kubernetes.io/infra: ""
                node-role.kubernetes.io/worker: ""
    Copy to Clipboard Toggle word wrap
4.9.1.9.2. DataProtectionApplication CR で CSI を有効にする

CSI スナップショットを使用して永続ボリュームをバックアップするには、DataProtectionApplication カスタムリソース (CR) で Container Storage Interface (CSI) を有効にします。

前提条件

  • クラウドプロバイダーは、CSI スナップショットをサポートする必要があります。

手順

  • 次の例のように、DataProtectionApplication CR を編集します。

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    ...
    spec:
      configuration:
        velero:
          defaultPlugins:
          - openshift
          - csi 
    1
    Copy to Clipboard Toggle word wrap
    1
    csi デフォルトプラグインを追加します。
4.9.1.9.3. DataProtectionApplication でノードエージェントを無効にする

バックアップに ResticKopia、または DataMover を使用していない場合は、DataProtectionApplication カスタムリソース (CR) の nodeAgent フィールドを無効にすることができます。nodeAgent を無効にする前に、OADP Operator がアイドル状態であり、バックアップを実行していないことを確認してください。

手順

  1. nodeAgent を無効にするには、enable フラグを false に設定します。以下の例を参照してください。

    DataProtectionApplication CR の例

    # ...
    configuration:
      nodeAgent:
        enable: false  
    1
    
        uploaderType: kopia
    # ...
    Copy to Clipboard Toggle word wrap

    1
    ノードエージェントを無効にします。
  2. nodeAgent を有効にするには、enable フラグを true に設定します。以下の例を参照してください。

    DataProtectionApplication CR の例

    # ...
    configuration:
      nodeAgent:
        enable: true  
    1
    
        uploaderType: kopia
    # ...
    Copy to Clipboard Toggle word wrap

    1
    ノードエージェントを有効にします。

ジョブをセットアップして、DataProtectionApplication CR の nodeAgent フィールドを有効または無効にすることができます。詳細は、「ジョブの使用による Pod でのタスクの実行」を参照してください。

4.10. Google Cloud を使用した OADP の設定

4.10.1. Google Cloud を使用した OpenShift API for Data Protection の設定

OADP Operator をインストールすることで、Google Cloud を使用して OpenShift API for Data Protection (OADP) をインストールします。Operator は Velero 1.14 をインストールします。

注記

OADP 1.0.4 以降、すべての OADP 1.0.z バージョンは Migration Toolkit for Containers Operator の依存関係としてのみ使用でき、スタンドアロン Operator として使用することはできません。

Velero 用に Google Cloud を設定し、デフォルトの Secret を作成してから、Data Protection Application をインストールします。詳細は、OADP Operator のインストール を参照してください。

制限されたネットワーク環境に OADP Operator をインストールするには、最初にデフォルトの OperatorHub ソースを無効にして、Operator カタログをミラーリングする必要があります。詳細は、ネットワークが制限された環境での Operator Lifecycle Manager の使用 を参照してください。

4.10.1.1. Google Cloud の設定

OpenShift API for Data Protection (OADP) 用に Google Cloud を設定します。

前提条件

  • gcloud および gsutil CLI ツールがインストールされている必要があります。詳細は、Google Cloud のドキュメント をご覧ください。

手順

  1. Google Cloud にログインします。

    $ gcloud auth login
    Copy to Clipboard Toggle word wrap
  2. BUCKET 変数を設定します。

    $ BUCKET=<bucket> 
    1
    Copy to Clipboard Toggle word wrap
    1
    バケット名を指定します。
  3. ストレージバケットを作成します。

    $ gsutil mb gs://$BUCKET/
    Copy to Clipboard Toggle word wrap
  4. PROJECT_ID 変数をアクティブなプロジェクトに設定します。

    $ PROJECT_ID=$(gcloud config get-value project)
    Copy to Clipboard Toggle word wrap
  5. サービスアカウントを作成します。

    $ gcloud iam service-accounts create velero \
        --display-name "Velero service account"
    Copy to Clipboard Toggle word wrap
  6. サービスアカウントをリスト表示します。

    $ gcloud iam service-accounts list
    Copy to Clipboard Toggle word wrap
  7. email の値と一致するように SERVICE_ACCOUNT_EMAIL 変数を設定します。

    $ SERVICE_ACCOUNT_EMAIL=$(gcloud iam service-accounts list \
        --filter="displayName:Velero service account" \
        --format 'value(email)')
    Copy to Clipboard Toggle word wrap
  8. ポリシーを添付して、velero ユーザーに必要最小限の権限を付与します。

    $ ROLE_PERMISSIONS=(
        compute.disks.get
        compute.disks.create
        compute.disks.createSnapshot
        compute.snapshots.get
        compute.snapshots.create
        compute.snapshots.useReadOnly
        compute.snapshots.delete
        compute.zones.get
        storage.objects.create
        storage.objects.delete
        storage.objects.get
        storage.objects.list
        iam.serviceAccounts.signBlob
    )
    Copy to Clipboard Toggle word wrap
  9. velero.server カスタムロールを作成します。

    $ gcloud iam roles create velero.server \
        --project $PROJECT_ID \
        --title "Velero Server" \
        --permissions "$(IFS=","; echo "${ROLE_PERMISSIONS[*]}")"
    Copy to Clipboard Toggle word wrap
  10. IAM ポリシーバインディングをプロジェクトに追加します。

    $ gcloud projects add-iam-policy-binding $PROJECT_ID \
        --member serviceAccount:$SERVICE_ACCOUNT_EMAIL \
        --role projects/$PROJECT_ID/roles/velero.server
    Copy to Clipboard Toggle word wrap
  11. IAM サービスアカウントを更新します。

    $ gsutil iam ch serviceAccount:$SERVICE_ACCOUNT_EMAIL:objectAdmin gs://${BUCKET}
    Copy to Clipboard Toggle word wrap
  12. IAM サービスアカウントのキーを現在のディレクトリーにある credentials-velero ファイルに保存します。

    $ gcloud iam service-accounts keys create credentials-velero \
        --iam-account $SERVICE_ACCOUNT_EMAIL
    Copy to Clipboard Toggle word wrap

    Data Protection Application をインストールする前に、credentials-velero ファイルを使用して Google Cloud の Secret オブジェクトを作成します。

4.10.1.2. バックアップおよびスナップショットの場所、ならびにそのシークレットについて

DataProtectionApplication カスタムリソース (CR) で、バックアップおよびスナップショットの場所、ならびにそのシークレットを指定します。

4.10.1.2.1. バックアップの場所

バックアップの場所として、次のいずれかの AWS S3 互換オブジェクトストレージソリューションを指定できます。

  • Multicloud Object Gateway (MCG)
  • Red Hat Container Storage
  • Ceph RADOS Gateway (別称 Ceph Object Gateway)
  • Red Hat OpenShift Data Foundation
  • MinIO

Velero は、オブジェクトストレージのアーカイブファイルとして、OpenShift Container Platform リソース、Kubernetes オブジェクト、および内部イメージをバックアップします。

4.10.1.2.2. スナップショットの場所

クラウドプロバイダーのネイティブスナップショット API を使用して永続ボリュームをバックアップする場合、クラウドプロバイダーをスナップショットの場所として指定する必要があります。

Container Storage Interface (CSI) スナップショットを使用する場合、CSI ドライバーを登録するために VolumeSnapshotClass CR を作成するため、スナップショットの場所を指定する必要はありません。

File System Backup (FSB) を使用する場合、FSB がオブジェクトストレージ上にファイルシステムをバックアップするため、スナップショットの場所を指定する必要はありません。

4.10.1.2.3. シークレット

バックアップとスナップショットの場所が同じ認証情報を使用する場合、またはスナップショットの場所が必要ない場合は、デフォルトの Secret を作成します。

バックアップとスナップショットの場所で異なる認証情報を使用する場合は、次の 2 つの secret オブジェクトを作成します。

  • DataProtectionApplication CR で指定する、バックアップの場所用のカスタム Secret
  • DataProtectionApplication CR で参照されない、スナップショットの場所用のデフォルト Secret
重要

Data Protection Application には、デフォルトの Secret が必要です。作成しないと、インストールは失敗します。

インストール中にバックアップまたはスナップショットの場所を指定したくない場合は、空の credentials-velero ファイルを使用してデフォルトの Secret を作成できます。

4.10.1.2.4. デフォルト Secret の作成

バックアップとスナップショットの場所が同じ認証情報を使用する場合、またはスナップショットの場所が必要ない場合は、デフォルトの Secret を作成します。

Secret のデフォルト名は cloud-credentials-gcp です。

注記

DataProtectionApplication カスタムリソース (CR) にはデフォルトの Secret が必要です。作成しないと、インストールは失敗します。バックアップの場所の Secret の名前が指定されていない場合は、デフォルトの名前が使用されます。

インストール時にバックアップ場所の認証情報を使用しない場合は、空の credentials-velero ファイルを使用して、デフォルト名の Secret を作成できます。

前提条件

  • オブジェクトストレージとクラウドストレージがある場合は、同じ認証情報を使用する必要があります。
  • Velero のオブジェクトストレージを設定する必要があります。

手順

  1. Backup Storage Location の credentials-velero ファイルをクラウドプロバイダーに適した形式で作成します。
  2. デフォルト名で Secret カスタムリソース (CR) を作成します。

    $ oc create secret generic cloud-credentials-gcp -n openshift-adp --from-file cloud=credentials-velero
    Copy to Clipboard Toggle word wrap

Secret は、Data Protection Application をインストールするときに、DataProtectionApplication CR の spec.backupLocations.credential ブロックで参照されます。

4.10.1.2.5. 異なる認証情報のシークレットの作成

バックアップとスナップショットの場所で異なる認証情報を使用する場合は、次の 2 つの Secret オブジェクトを作成する必要があります。

  • カスタム名を持つバックアップロケーションの Secret。カスタム名は、DataProtectionApplication カスタムリソース (CR) の spec.backupLocations ブロックで指定されます。
  • スナップショットの場所 Secret (デフォルト名は cloud-credentials-gcp)。この Secret は、DataProtectionApplication で指定されていません。

手順

  1. スナップショットの場所の credentials-velero ファイルをクラウドプロバイダーに適した形式で作成します。
  2. デフォルト名でスナップショットの場所の Secret を作成します。

    $ oc create secret generic cloud-credentials-gcp -n openshift-adp --from-file cloud=credentials-velero
    Copy to Clipboard Toggle word wrap
  3. オブジェクトストレージに適した形式で、バックアップロケーションの credentials-velero ファイルを作成します。
  4. カスタム名を使用してバックアップロケーションの Secret を作成します。

    $ oc create secret generic <custom_secret> -n openshift-adp --from-file cloud=credentials-velero
    Copy to Clipboard Toggle word wrap
  5. 次の例のように、カスタム名の SecretDataProtectionApplication に追加します。

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: <dpa_sample>
      namespace: openshift-adp
    spec:
    ...
      backupLocations:
        - velero:
            provider: gcp
            default: true
            credential:
              key: cloud
              name: <custom_secret> 
    1
    
            objectStorage:
              bucket: <bucket_name>
              prefix: <prefix>
      snapshotLocations:
        - velero:
            provider: gcp
            default: true
            config:
              project: <project>
              snapshotLocation: us-west1
    Copy to Clipboard Toggle word wrap
    1
    カスタム名を持つバックアップロケーションの Secret
4.10.1.3. Data Protection Application の設定

Velero リソースの割り当てを設定するか、自己署名 CA 証明書を有効にして、Data Protection Application を設定できます。

4.10.1.3.1. Velero の CPU とメモリーのリソース割り当てを設定

DataProtectionApplication カスタムリソース (CR) マニフェストを編集して、Velero Pod の CPU およびメモリーリソースの割り当てを設定します。

前提条件

  • OpenShift API for Data Protection (OADP) Operator がインストールされている必要があります。

手順

  • 次の例のように、DataProtectionApplication CR マニフェストの spec.configuration.velero.podConfig.ResourceAllocations ブロックの値を編集します。

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: <dpa_sample>
    spec:
    # ...
      configuration:
        velero:
          podConfig:
            nodeSelector: <node_selector> 
    1
    
            resourceAllocations: 
    2
    
              limits:
                cpu: "1"
                memory: 1024Mi
              requests:
                cpu: 200m
                memory: 256Mi
    Copy to Clipboard Toggle word wrap
    1
    Velero podSpec に提供されるノードセレクターを指定します。
    2
    リストされている resourceAllocations は、平均使用量です。
    注記

    Kopia は OADP 1.3 以降のリリースで選択できます。Kopia はファイルシステムのバックアップに使用できます。組み込みの Data Mover を使用する Data Mover の場合は、Kopia が唯一の選択肢になります。

    Kopia は Restic よりも多くのリソースを消費するため、それに応じて CPU とメモリーの要件を調整しなければならない場合があります。

nodeSelector フィールドを使用して、ノードエージェントを実行できるノードを選択します。nodeSelector フィールドは、推奨される最も単純な形式のノード選択制約です。指定したラベルが、各ノードのラベルと一致する必要があります。

詳細は、ノードエージェントとノードラベルの設定 を参照してください。

4.10.1.3.2. 自己署名 CA 証明書の有効化

certificate signed by unknown authority エラーを防ぐために、DataProtectionApplication カスタムリソース (CR) マニフェストを編集して、オブジェクトストレージの自己署名 CA 証明書を有効にする必要があります。

前提条件

  • OpenShift API for Data Protection (OADP) Operator がインストールされている必要があります。

手順

  • DataProtectionApplication CR マニフェストの spec.backupLocations.velero.objectStorage.caCert パラメーターと spec.backupLocations.velero.config パラメーターを編集します。

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: <dpa_sample>
    spec:
    # ...
      backupLocations:
        - name: default
          velero:
            provider: aws
            default: true
            objectStorage:
              bucket: <bucket>
              prefix: <prefix>
              caCert: <base64_encoded_cert_string> 
    1
    
            config:
              insecureSkipTLSVerify: "false" 
    2
    
    # ...
    Copy to Clipboard Toggle word wrap
    1
    Base64 でエンコードされた CA 証明書文字列を指定します。
    2
    insecureSkipTLSVerify 設定は、"true" または "false" のいずれかに設定できます。"true" に設定すると、SSL/TLS セキュリティーが無効になります。"false" に設定すると、SSL/TLS セキュリティーが有効になります。
4.10.1.3.3. Velero デプロイメント用のエイリアス化した velero コマンドで CA 証明書を使用する

Velero CLI のエイリアスを作成することで、システムにローカルにインストールせずに Velero CLI を使用できます。

前提条件

  • cluster-admin ロールを持つユーザーとして OpenShift Container Platform クラスターにログインしている。
  • OpenShift CLI (oc) がインストールされている。

    1. エイリアス化した Velero コマンドを使用するには、次のコマンドを実行します。

      $ alias velero='oc -n openshift-adp exec deployment/velero -c velero -it -- ./velero'
      Copy to Clipboard Toggle word wrap
    2. 次のコマンドを実行して、エイリアスが機能していることを確認します。

      $ velero version
      Copy to Clipboard Toggle word wrap
      Client:
      	Version: v1.12.1-OADP
      	Git commit: -
      Server:
      	Version: v1.12.1-OADP
      Copy to Clipboard Toggle word wrap
    3. このコマンドで CA 証明書を使用するには、次のコマンドを実行して証明書を Velero デプロイメントに追加できます。

      $ CA_CERT=$(oc -n openshift-adp get dataprotectionapplications.oadp.openshift.io <dpa-name> -o jsonpath='{.spec.backupLocations[0].velero.objectStorage.caCert}')
      Copy to Clipboard Toggle word wrap
      $ [[ -n $CA_CERT ]] && echo "$CA_CERT" | base64 -d | oc exec -n openshift-adp -i deploy/velero -c velero -- bash -c "cat > /tmp/your-cacert.txt" || echo "DPA BSL has no caCert"
      Copy to Clipboard Toggle word wrap
      $ velero describe backup <backup_name> --details --cacert /tmp/<your_cacert>.txt
      Copy to Clipboard Toggle word wrap
    4. バックアップログを取得するために、次のコマンドを実行します。

      $ velero backup logs  <backup_name>  --cacert /tmp/<your_cacert.txt>
      Copy to Clipboard Toggle word wrap

      このログを使用して、バックアップできないリソースの障害と警告を表示できます。

    5. Velero Pod が再起動すると、/tmp/your-cacert.txt ファイルが消去されます。そのため、前の手順のコマンドを再実行して /tmp/your-cacert.txt ファイルを再作成する必要があります。
    6. 次のコマンドを実行すると、/tmp/your-cacert.txt ファイルを保存した場所にファイルがまだ存在するかどうかを確認できます。

      $ oc exec -n openshift-adp -i deploy/velero -c velero -- bash -c "ls /tmp/your-cacert.txt"
      /tmp/your-cacert.txt
      Copy to Clipboard Toggle word wrap

OpenShift API for Data Protection (OADP) の今後のリリースでは、この手順が不要になるように証明書を Velero Pod にマウントする予定です。

4.10.1.4. Google Workload Identity 連携のクラウド認証

Google Cloud の外で実行されているアプリケーションは、ユーザー名やパスワードなどのサービスアカウントキーを使用して、Google Cloud リソースにアクセスします。これらのサービスアカウントキーは、適切に管理されていない場合、セキュリティーリスクになる可能性があります。

Google Workload Identity 連携を使用すると、Identity and Access Management (IAM) を使用して、サービスアカウントに成り代わる機能などの IAM ロールを外部アイデンティティーに付与できます。これにより、サービスアカウントキーに関連するメンテナンスとセキュリティーのリスクが排除されます。

Workload Identity 連携は、証明書の暗号化と復号化、ユーザー属性の抽出、および検証を処理します。Identity 連携は認証を外部化し、それをセキュリティートークンサービス (STS) に渡すことで、個々の開発者の負担を軽減します。リソースへのアクセスの認可と制御は、引き続きアプリケーションが処理します。

注記

Google Workload Identity 連携は、OADP 1.3.x 以降で利用できます。

ボリュームをバックアップする場合、Google Workload Identity 連携認証を使用した Google Cloud 上の OADP は、CSI スナップショットのみをサポートします。

Google Workload Identity 連携認証を使用した Google Cloud 上の OADP は、Volume Snapshot Locations (VSL) バックアップをサポートしていません。詳細は、Google Workload Identity 連携の既知の問題 を参照してください。

Google Workload Identity 連携クラウド認証を使用しない場合は、Data Protection Application のインストール に進みます。

前提条件

  • Google Cloud Workload Identity を設定 して、クラスターを手動モードでインストールした。
  • Cloud Credential Operator ユーティリティー (ccoctl) と、関連する Workload Identity プールにアクセスできる。

手順

  1. 次のコマンドを実行して、oadp-credrequest ディレクトリーを作成します。

    $ mkdir -p oadp-credrequest
    Copy to Clipboard Toggle word wrap
  2. 次のように、CredentialsRequest.yaml ファイルを作成します。

    echo 'apiVersion: cloudcredential.openshift.io/v1
    kind: CredentialsRequest
    metadata:
      name: oadp-operator-credentials
      namespace: openshift-cloud-credential-operator
    spec:
      providerSpec:
        apiVersion: cloudcredential.openshift.io/v1
        kind: GCPProviderSpec
        permissions:
        - compute.disks.get
        - compute.disks.create
        - compute.disks.createSnapshot
        - compute.snapshots.get
        - compute.snapshots.create
        - compute.snapshots.useReadOnly
        - compute.snapshots.delete
        - compute.zones.get
        - storage.objects.create
        - storage.objects.delete
        - storage.objects.get
        - storage.objects.list
        - iam.serviceAccounts.signBlob
        skipServiceCheck: true
      secretRef:
        name: cloud-credentials-gcp
        namespace: <OPERATOR_INSTALL_NS>
      serviceAccountNames:
      - velero
    ' > oadp-credrequest/credrequest.yaml
    Copy to Clipboard Toggle word wrap
  3. 次のコマンドを実行し、ccoctl ユーティリティーを使用して、oadp-credrequest ディレクトリー内の CredentialsRequest オブジェクトを処理します。

    $ ccoctl gcp create-service-accounts \
        --name=<name> \
        --project=<gcp_project_id> \
        --credentials-requests-dir=oadp-credrequest \
        --workload-identity-pool=<pool_id> \
        --workload-identity-provider=<provider_id>
    Copy to Clipboard Toggle word wrap

    これで、次のステップで manifests/openshift-adp-cloud-credentials-gcp-credentials.yaml ファイルを使用できるようになりました。

  4. 次のコマンドを実行して、namespace を作成します。

    $ oc create namespace <OPERATOR_INSTALL_NS>
    Copy to Clipboard Toggle word wrap
  5. 次のコマンドを実行して、認証情報を namespace に適用します。

    $ oc apply -f manifests/openshift-adp-cloud-credentials-gcp-credentials.yaml
    Copy to Clipboard Toggle word wrap
4.10.1.4.1. Google Workload Identity 連携の既知の問題
  • Google Cloud Workload Identity 連携が設定されている場合、Volume Snapshot Location (VSL) バックアップが PartiallyFailed フェーズで終了します。Google Workload Identity 連携認証は、VSL バックアップをサポートしません。
4.10.1.5. Data Protection Application のインストール

DataProtectionApplication API のインスタンスを作成して、Data Protection Application (DPA) をインストールします。

前提条件

  • OADP Operator をインストールする。
  • オブジェクトストレージをバックアップロケーションとして設定する必要がある。
  • スナップショットを使用して PV をバックアップする場合、クラウドプロバイダーはネイティブスナップショット API または Container Storage Interface (CSI) スナップショットのいずれかをサポートする必要がある。
  • バックアップとスナップショットの場所で同じ認証情報を使用する場合は、デフォルトの名前である cloud-credentials-gcp を使用して Secret を作成する必要がある。

    注記

    インストール中にバックアップまたはスナップショットの場所を指定したくない場合は、空の credentials-velero ファイルを使用してデフォルトの Secret を作成できます。デフォルトの Secret がない場合、インストールは失敗します。

手順

  1. OperatorsInstalled Operators をクリックして、OADP Operator を選択します。
  2. Provided APIs で、DataProtectionApplication ボックスの Create instance をクリックします。
  3. YAML View をクリックして、DataProtectionApplication マニフェストのパラメーターを更新します。

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: <dpa_sample>
      namespace: <OPERATOR_INSTALL_NS> 
    1
    
    spec:
      configuration:
        velero:
          defaultPlugins:
            - gcp
            - openshift 
    2
    
          resourceTimeout: 10m 
    3
    
        nodeAgent: 
    4
    
          enable: true 
    5
    
          uploaderType: kopia 
    6
    
          podConfig:
            nodeSelector: <node_selector> 
    7
    
      backupLocations:
        - velero:
            provider: gcp
            default: true
            credential:
              key: cloud 
    8
    
              name: cloud-credentials-gcp 
    9
    
            objectStorage:
              bucket: <bucket_name> 
    10
    
              prefix: <prefix> 
    11
    
      snapshotLocations: 
    12
    
        - velero:
            provider: gcp
            default: true
            config:
              project: <project>
              snapshotLocation: us-west1 
    13
    
            credential:
              key: cloud
              name: cloud-credentials-gcp 
    14
    
      backupImages: true 
    15
    Copy to Clipboard Toggle word wrap
    1
    OADP のデフォルトの namespace は openshift-adp です。namespace は変数であり、設定可能です。
    2
    openshift プラグインは必須です。
    3
    Velero CRD の可用性、volumeSnapshot の削除、バックアップリポジトリーの可用性など、タイムアウトが発生するまでに複数の Velero リソースを待機する時間を分単位で指定します。デフォルトは 10m です。
    4
    管理要求をサーバーにルーティングする管理エージェント。
    5
    nodeAgent を有効にして File System Backup を実行する場合は、この値を true に設定します。
    6
    アップローダーとして kopia または restic と入力します。インストール後に選択を変更することはできません。組み込み DataMover の場合は、Kopia を使用する必要があります。nodeAgent はデーモンセットをデプロイします。これは、nodeAgent Pod が各ワーキングノード上で実行されることを意味します。File System Backup を設定するには、spec.defaultVolumesToFsBackup: trueBackup CR に追加します。
    7
    Kopia または Restic が使用可能なノードを指定します。デフォルトでは、Kopia または Restic はすべてのノードで実行されます。
    8
    認証情報を含む秘密鍵。Google Workload Identity 連携クラウド認証の場合は、service_account.json を使用します。
    9
    認証情報を含むシークレットの名前。この値を指定しない場合は、デフォルトの名前である cloud-credentials-gcp が使用されます。
    10
    Backup Storage Location としてバケットを指定します。バケットが Velero バックアップ専用のバケットでない場合は、接頭辞を指定する必要があります。
    11
    バケットが複数の目的で使用される場合は、Velero バックアップの接頭辞を指定します (例: velero)。
    12
    CSI スナップショットまたは Restic を使用して PV をバックアップする場合を除き、スナップショットの場所を指定します。
    13
    スナップショットの場所は、PV と同じリージョンにある必要があります。
    14
    作成した Secret オブジェクトの名前を指定します。この値を指定しない場合は、デフォルトの名前である cloud-credentials-gcp が使用されます。カスタム名を指定すると、バックアップの場所にカスタム名が使用されます。
    15
    Google Workload Identity 連携は、内部イメージのバックアップをサポートしています。イメージのバックアップを使用しない場合は、このフィールドを false に設定します。
  4. Create をクリックします。

検証

  1. 次のコマンドを実行して OpenShift API for Data Protection (OADP) リソースを表示し、インストールを検証します。

    $ oc get all -n openshift-adp
    Copy to Clipboard Toggle word wrap

    出力例

    NAME                                                     READY   STATUS    RESTARTS   AGE
    pod/oadp-operator-controller-manager-67d9494d47-6l8z8    2/2     Running   0          2m8s
    pod/node-agent-9cq4q                                     1/1     Running   0          94s
    pod/node-agent-m4lts                                     1/1     Running   0          94s
    pod/node-agent-pv4kr                                     1/1     Running   0          95s
    pod/velero-588db7f655-n842v                              1/1     Running   0          95s
    
    NAME                                                       TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
    service/oadp-operator-controller-manager-metrics-service   ClusterIP   172.30.70.140    <none>        8443/TCP   2m8s
    service/openshift-adp-velero-metrics-svc                   ClusterIP   172.30.10.0      <none>        8085/TCP   8h
    
    NAME                        DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
    daemonset.apps/node-agent    3         3         3       3            3           <none>          96s
    
    NAME                                                READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/oadp-operator-controller-manager    1/1     1            1           2m9s
    deployment.apps/velero                              1/1     1            1           96s
    
    NAME                                                           DESIRED   CURRENT   READY   AGE
    replicaset.apps/oadp-operator-controller-manager-67d9494d47    1         1         1       2m9s
    replicaset.apps/velero-588db7f655                              1         1         1       96s
    Copy to Clipboard Toggle word wrap

  2. 次のコマンドを実行して、DataProtectionApplication (DPA) が調整されていることを確認します。

    $ oc get dpa dpa-sample -n openshift-adp -o jsonpath='{.status}'
    Copy to Clipboard Toggle word wrap

    出力例

    {"conditions":[{"lastTransitionTime":"2023-10-27T01:23:57Z","message":"Reconcile complete","reason":"Complete","status":"True","type":"Reconciled"}]}
    Copy to Clipboard Toggle word wrap

  3. typeReconciled に設定されていることを確認します。
  4. 次のコマンドを実行して、Backup Storage Location を確認し、PHASEAvailable であることを確認します。

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

    出力例

    NAME           PHASE       LAST VALIDATED   AGE     DEFAULT
    dpa-sample-1   Available   1s               3d16h   true
    Copy to Clipboard Toggle word wrap

4.10.1.6. クライアントバースト設定と 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 がインストールされている。

手順

  • 次の例に示すように、DPA の client-burst フィールドと client-qps フィールドを設定します。

    Data Protection Application の例

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: test-dpa
      namespace: openshift-adp
    spec:
      backupLocations:
        - name: default
          velero:
            config:
              insecureSkipTLSVerify: "true"
              profile: "default"
              region: <bucket_region>
              s3ForcePathStyle: "true"
              s3Url: <bucket_url>
            credential:
              key: cloud
              name: cloud-credentials
            default: true
            objectStorage:
              bucket: <bucket_name>
              prefix: velero
            provider: aws
      configuration:
        nodeAgent:
          enable: true
          uploaderType: restic
        velero:
          client-burst: 500 
    1
    
          client-qps: 300 
    2
    
          defaultPlugins:
            - openshift
            - aws
            - kubevirt
    Copy to Clipboard Toggle word wrap

    1
    client-burst 値を指定します。この例では、client-burst フィールドは 500 に設定されています。
    2
    client-qps 値を指定します。この例では、client-qps フィールドは 300 に設定されています。
4.10.1.7. DPA の imagePullPolicy 設定のオーバーライド

OADP 1.4.0 以前では、Operator はすべてのイメージで Velero およびノードエージェント Pod の imagePullPolicy フィールドを Always に設定します。

OADP 1.4.1 以降では、Operator はまず、各イメージに sha256 または sha512 ダイジェストがあるかを確認し、それに応じて imagePullPolicy フィールドを設定します。

  • イメージにダイジェストがある場合、Operator は imagePullPolicyIfNotPresent に設定します。
  • イメージにダイジェストがない場合、Operator は imagePullPolicyAlways に設定します。

Data Protection Application (DPA) の spec.imagePullPolicy フィールドを使用して、imagePullPolicy フィールドをオーバーライドすることもできます。

前提条件

  • OADP Operator がインストールされている。

手順

  • 以下の例のように、DPA の spec.imagePullPolicy フィールドを設定します。

    Data Protection Application の例

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: test-dpa
      namespace: openshift-adp
    spec:
      backupLocations:
        - name: default
          velero:
            config:
              insecureSkipTLSVerify: "true"
              profile: "default"
              region: <bucket_region>
              s3ForcePathStyle: "true"
              s3Url: <bucket_url>
            credential:
              key: cloud
              name: cloud-credentials
            default: true
            objectStorage:
              bucket: <bucket_name>
              prefix: velero
            provider: aws
      configuration:
        nodeAgent:
          enable: true
          uploaderType: kopia
        velero:
          defaultPlugins:
            - openshift
            - aws
            - kubevirt
            - csi
      imagePullPolicy: Never 
    1
    Copy to Clipboard Toggle word wrap

    1
    imagePullPolicy の値を指定します。この例では、imagePullPolicy フィールドが Never に設定されています。
4.10.1.7.1. ノードエージェントとノードラベルの設定

Data Protection Application (DPA) は、nodeSelector フィールドを使用して、ノードエージェントを実行できるノードを選択します。nodeSelector フィールドは、推奨される形式のノード選択制約です。

手順

  1. カスタムラベルを追加して、選択した任意のノードでノードエージェントを実行します。

    $ oc label node/<node_name> node-role.kubernetes.io/nodeAgent=""
    Copy to Clipboard Toggle word wrap
    注記

    指定したラベルが、各ノードのラベルと一致する必要があります。

  2. ノードのラベル付けに使用したのと同じカスタムラベルを DPA.spec.configuration.nodeAgent.podConfig.nodeSelector フィールドで使用します。

    configuration:
      nodeAgent:
        enable: true
        podConfig:
          nodeSelector:
            node-role.kubernetes.io/nodeAgent: ""
    Copy to Clipboard Toggle word wrap

    次の例は nodeSelector のアンチパターンです。この例は、node-role.kubernetes.io/infra: ""node-role.kubernetes.io/worker: "" の両方のラベルがノードに存在しない限り機能しません。

        configuration:
          nodeAgent:
            enable: true
            podConfig:
              nodeSelector:
                node-role.kubernetes.io/infra: ""
                node-role.kubernetes.io/worker: ""
    Copy to Clipboard Toggle word wrap
4.10.1.7.2. DataProtectionApplication CR で CSI を有効にする

CSI スナップショットを使用して永続ボリュームをバックアップするには、DataProtectionApplication カスタムリソース (CR) で Container Storage Interface (CSI) を有効にします。

前提条件

  • クラウドプロバイダーは、CSI スナップショットをサポートする必要があります。

手順

  • 次の例のように、DataProtectionApplication CR を編集します。

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    ...
    spec:
      configuration:
        velero:
          defaultPlugins:
          - openshift
          - csi 
    1
    Copy to Clipboard Toggle word wrap
    1
    csi デフォルトプラグインを追加します。
4.10.1.7.3. DataProtectionApplication でノードエージェントを無効にする

バックアップに ResticKopia、または DataMover を使用していない場合は、DataProtectionApplication カスタムリソース (CR) の nodeAgent フィールドを無効にすることができます。nodeAgent を無効にする前に、OADP Operator がアイドル状態であり、バックアップを実行していないことを確認してください。

手順

  1. nodeAgent を無効にするには、enable フラグを false に設定します。以下の例を参照してください。

    DataProtectionApplication CR の例

    # ...
    configuration:
      nodeAgent:
        enable: false  
    1
    
        uploaderType: kopia
    # ...
    Copy to Clipboard Toggle word wrap

    1
    ノードエージェントを無効にします。
  2. nodeAgent を有効にするには、enable フラグを true に設定します。以下の例を参照してください。

    DataProtectionApplication CR の例

    # ...
    configuration:
      nodeAgent:
        enable: true  
    1
    
        uploaderType: kopia
    # ...
    Copy to Clipboard Toggle word wrap

    1
    ノードエージェントを有効にします。

ジョブをセットアップして、DataProtectionApplication CR の nodeAgent フィールドを有効または無効にすることができます。詳細は、「ジョブの使用による Pod でのタスクの実行」を参照してください。

4.11. MCG を使用した OADP の設定

4.11.1. Multicloud Object Gateway を使用した OpenShift API for Data Protection の設定

Multicloud Object Gateway (MCG) は OpenShift Data Foundation のコンポーネントです。MCG は、DataProtectionApplication カスタムリソース (CR) でバックアップの場所として設定できます。OADP Operator をインストールすることで、MCG を使用する OpenShift API for Data Protection (OADP) をインストールできます。Operator は Velero 1.14 をインストールします。

注記

OADP 1.0.4 以降、すべての OADP 1.0.z バージョンは Migration Toolkit for Containers Operator の依存関係としてのみ使用でき、スタンドアロン Operator として使用することはできません。

重要

オブジェクトストレージのバケット作成を自動化する CloudStorage API は、テクノロジープレビュー機能のみです。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。

Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、以下のリンクを参照してください。

バックアップ場所の Secret CR を作成し、Data Protection Application をインストールできます。詳細は、OADP Operator のインストール を参照してください。

制限されたネットワーク環境に OADP Operator をインストールするには、最初にデフォルトの OperatorHub ソースを無効にして、Operator カタログをミラーリングする必要があります。詳細は、ネットワークが制限された環境での Operator Lifecycle Manager の使用 を参照してください。

4.11.1.1. Multicloud Object Gateway の認証情報の取得

OpenShift API for Data Protection (OADP) の Secret カスタムリソース (CR) を作成するには、Multicloud Object Gateway (MCG) バケットの認証情報を取得する必要があります。

注記

MCG Operator は 非推奨 ですが、MCG プラグインは OpenShift Data Foundation で引き続き利用できます。プラグインをダウンロードするには、Red Hat OpenShift Data Foundation のダウンロード を参照し、ご使用のオペレーティングシステムに適した MCG プラグインをダウンロードします。

前提条件

手順

  1. MCG バケットを作成します。詳細は、ハイブリッドおよびマルチクラウドリソースの管理 を参照してください。
  2. バケットリソースに対して oc describe コマンドを実行して、S3 エンドポイント、AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY、およびバケット名を取得します。
  3. credentials-velero ファイルを作成します。

    $ cat << EOF > ./credentials-velero
    [default]
    aws_access_key_id=<AWS_ACCESS_KEY_ID>
    aws_secret_access_key=<AWS_SECRET_ACCESS_KEY>
    EOF
    Copy to Clipboard Toggle word wrap

    Data Protection Application をインストールするときに、credentials-velero ファイルを使用して Secret オブジェクトを作成できます。

4.11.1.2. バックアップおよびスナップショットの場所、ならびにそのシークレットについて

DataProtectionApplication カスタムリソース (CR) で、バックアップおよびスナップショットの場所、ならびにそのシークレットを指定します。

4.11.1.2.1. バックアップの場所

バックアップの場所として、次のいずれかの AWS S3 互換オブジェクトストレージソリューションを指定できます。

  • Multicloud Object Gateway (MCG)
  • Red Hat Container Storage
  • Ceph RADOS Gateway (別称 Ceph Object Gateway)
  • Red Hat OpenShift Data Foundation
  • MinIO

Velero は、オブジェクトストレージのアーカイブファイルとして、OpenShift Container Platform リソース、Kubernetes オブジェクト、および内部イメージをバックアップします。

4.11.1.2.2. スナップショットの場所

クラウドプロバイダーのネイティブスナップショット API を使用して永続ボリュームをバックアップする場合、クラウドプロバイダーをスナップショットの場所として指定する必要があります。

Container Storage Interface (CSI) スナップショットを使用する場合、CSI ドライバーを登録するために VolumeSnapshotClass CR を作成するため、スナップショットの場所を指定する必要はありません。

File System Backup (FSB) を使用する場合、FSB がオブジェクトストレージ上にファイルシステムをバックアップするため、スナップショットの場所を指定する必要はありません。

4.11.1.2.3. シークレット

バックアップとスナップショットの場所が同じ認証情報を使用する場合、またはスナップショットの場所が必要ない場合は、デフォルトの Secret を作成します。

バックアップとスナップショットの場所で異なる認証情報を使用する場合は、次の 2 つの secret オブジェクトを作成します。

  • DataProtectionApplication CR で指定する、バックアップの場所用のカスタム Secret
  • DataProtectionApplication CR で参照されない、スナップショットの場所用のデフォルト Secret
重要

Data Protection Application には、デフォルトの Secret が必要です。作成しないと、インストールは失敗します。

インストール中にバックアップまたはスナップショットの場所を指定したくない場合は、空の credentials-velero ファイルを使用してデフォルトの Secret を作成できます。

4.11.1.2.4. デフォルト Secret の作成

バックアップとスナップショットの場所が同じ認証情報を使用する場合、またはスナップショットの場所が必要ない場合は、デフォルトの Secret を作成します。

Secret のデフォルト名は cloud-credentials です。

注記

DataProtectionApplication カスタムリソース (CR) にはデフォルトの Secret が必要です。作成しないと、インストールは失敗します。バックアップの場所の Secret の名前が指定されていない場合は、デフォルトの名前が使用されます。

インストール時にバックアップ場所の認証情報を使用しない場合は、空の credentials-velero ファイルを使用して、デフォルト名の Secret を作成できます。

前提条件

  • オブジェクトストレージとクラウドストレージがある場合は、同じ認証情報を使用する必要があります。
  • Velero のオブジェクトストレージを設定する必要があります。

手順

  1. Backup Storage Location の credentials-velero ファイルをクラウドプロバイダーに適した形式で作成します。

    以下の例を参照してください。

    [default]
    aws_access_key_id=<AWS_ACCESS_KEY_ID>
    aws_secret_access_key=<AWS_SECRET_ACCESS_KEY>
    Copy to Clipboard Toggle word wrap
  2. デフォルト名で Secret カスタムリソース (CR) を作成します。

    $ oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-velero
    Copy to Clipboard Toggle word wrap

Secret は、Data Protection Application をインストールするときに、DataProtectionApplication CR の spec.backupLocations.credential ブロックで参照されます。

4.11.1.2.5. 異なる認証情報のシークレットの作成

バックアップとスナップショットの場所で異なる認証情報を使用する場合は、次の 2 つの Secret オブジェクトを作成する必要があります。

  • カスタム名を持つバックアップロケーションの Secret。カスタム名は、DataProtectionApplication カスタムリソース (CR) の spec.backupLocations ブロックで指定されます。
  • スナップショットの場所 Secret (デフォルト名は cloud-credentials)。この Secret は、DataProtectionApplication で指定されていません。

手順

  1. スナップショットの場所の credentials-velero ファイルをクラウドプロバイダーに適した形式で作成します。
  2. デフォルト名でスナップショットの場所の Secret を作成します。

    $ oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-velero
    Copy to Clipboard Toggle word wrap
  3. オブジェクトストレージに適した形式で、バックアップロケーションの credentials-velero ファイルを作成します。
  4. カスタム名を使用してバックアップロケーションの Secret を作成します。

    $ oc create secret generic <custom_secret> -n openshift-adp --from-file cloud=credentials-velero
    Copy to Clipboard Toggle word wrap
  5. 次の例のように、カスタム名の SecretDataProtectionApplication に追加します。

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: <dpa_sample>
      namespace: openshift-adp
    spec:
    ...
      backupLocations:
        - velero:
            config:
              profile: "default"
              region: <region_name> 
    1
    
              s3Url: <url>
              insecureSkipTLSVerify: "true"
              s3ForcePathStyle: "true"
            provider: aws
            default: true
            credential:
              key: cloud
              name:  <custom_secret> 
    2
    
            objectStorage:
              bucket: <bucket_name>
              prefix: <prefix>
    Copy to Clipboard Toggle word wrap
    1
    オブジェクトストレージサーバーのドキュメントの命名規則に従って、リージョンを指定します。
    2
    カスタム名を持つバックアップロケーションの Secret
4.11.1.3. Data Protection Application の設定

Velero リソースの割り当てを設定するか、自己署名 CA 証明書を有効にして、Data Protection Application を設定できます。

4.11.1.3.1. Velero の CPU とメモリーのリソース割り当てを設定

DataProtectionApplication カスタムリソース (CR) マニフェストを編集して、Velero Pod の CPU およびメモリーリソースの割り当てを設定します。

前提条件

  • OpenShift API for Data Protection (OADP) Operator がインストールされている必要があります。

手順

  • 次の例のように、DataProtectionApplication CR マニフェストの spec.configuration.velero.podConfig.ResourceAllocations ブロックの値を編集します。

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: <dpa_sample>
    spec:
    # ...
      configuration:
        velero:
          podConfig:
            nodeSelector: <node_selector> 
    1
    
            resourceAllocations: 
    2
    
              limits:
                cpu: "1"
                memory: 1024Mi
              requests:
                cpu: 200m
                memory: 256Mi
    Copy to Clipboard Toggle word wrap
    1
    Velero podSpec に提供されるノードセレクターを指定します。
    2
    リストされている resourceAllocations は、平均使用量です。
    注記

    Kopia は OADP 1.3 以降のリリースで選択できます。Kopia はファイルシステムのバックアップに使用できます。組み込みの Data Mover を使用する Data Mover の場合は、Kopia が唯一の選択肢になります。

    Kopia は Restic よりも多くのリソースを消費するため、それに応じて CPU とメモリーの要件を調整しなければならない場合があります。

nodeSelector フィールドを使用して、ノードエージェントを実行できるノードを選択します。nodeSelector フィールドは、推奨される最も単純な形式のノード選択制約です。指定したラベルが、各ノードのラベルと一致する必要があります。

詳細は、ノードエージェントとノードラベルの設定 を参照してください。

4.11.1.3.2. 自己署名 CA 証明書の有効化

certificate signed by unknown authority エラーを防ぐために、DataProtectionApplication カスタムリソース (CR) マニフェストを編集して、オブジェクトストレージの自己署名 CA 証明書を有効にする必要があります。

前提条件

  • OpenShift API for Data Protection (OADP) Operator がインストールされている必要があります。

手順

  • DataProtectionApplication CR マニフェストの spec.backupLocations.velero.objectStorage.caCert パラメーターと spec.backupLocations.velero.config パラメーターを編集します。

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: <dpa_sample>
    spec:
    # ...
      backupLocations:
        - name: default
          velero:
            provider: aws
            default: true
            objectStorage:
              bucket: <bucket>
              prefix: <prefix>
              caCert: <base64_encoded_cert_string> 
    1
    
            config:
              insecureSkipTLSVerify: "false" 
    2
    
    # ...
    Copy to Clipboard Toggle word wrap
    1
    Base64 でエンコードされた CA 証明書文字列を指定します。
    2
    insecureSkipTLSVerify 設定は、"true" または "false" のいずれかに設定できます。"true" に設定すると、SSL/TLS セキュリティーが無効になります。"false" に設定すると、SSL/TLS セキュリティーが有効になります。
4.11.1.3.3. Velero デプロイメント用のエイリアス化した velero コマンドで CA 証明書を使用する

Velero CLI のエイリアスを作成することで、システムにローカルにインストールせずに Velero CLI を使用できます。

前提条件

  • cluster-admin ロールを持つユーザーとして OpenShift Container Platform クラスターにログインしている。
  • OpenShift CLI (oc) がインストールされている。

    1. エイリアス化した Velero コマンドを使用するには、次のコマンドを実行します。

      $ alias velero='oc -n openshift-adp exec deployment/velero -c velero -it -- ./velero'
      Copy to Clipboard Toggle word wrap
    2. 次のコマンドを実行して、エイリアスが機能していることを確認します。

      $ velero version
      Copy to Clipboard Toggle word wrap
      Client:
      	Version: v1.12.1-OADP
      	Git commit: -
      Server:
      	Version: v1.12.1-OADP
      Copy to Clipboard Toggle word wrap
    3. このコマンドで CA 証明書を使用するには、次のコマンドを実行して証明書を Velero デプロイメントに追加できます。

      $ CA_CERT=$(oc -n openshift-adp get dataprotectionapplications.oadp.openshift.io <dpa-name> -o jsonpath='{.spec.backupLocations[0].velero.objectStorage.caCert}')
      Copy to Clipboard Toggle word wrap
      $ [[ -n $CA_CERT ]] && echo "$CA_CERT" | base64 -d | oc exec -n openshift-adp -i deploy/velero -c velero -- bash -c "cat > /tmp/your-cacert.txt" || echo "DPA BSL has no caCert"
      Copy to Clipboard Toggle word wrap
      $ velero describe backup <backup_name> --details --cacert /tmp/<your_cacert>.txt
      Copy to Clipboard Toggle word wrap
    4. バックアップログを取得するために、次のコマンドを実行します。

      $ velero backup logs  <backup_name>  --cacert /tmp/<your_cacert.txt>
      Copy to Clipboard Toggle word wrap

      このログを使用して、バックアップできないリソースの障害と警告を表示できます。

    5. Velero Pod が再起動すると、/tmp/your-cacert.txt ファイルが消去されます。そのため、前の手順のコマンドを再実行して /tmp/your-cacert.txt ファイルを再作成する必要があります。
    6. 次のコマンドを実行すると、/tmp/your-cacert.txt ファイルを保存した場所にファイルがまだ存在するかどうかを確認できます。

      $ oc exec -n openshift-adp -i deploy/velero -c velero -- bash -c "ls /tmp/your-cacert.txt"
      /tmp/your-cacert.txt
      Copy to Clipboard Toggle word wrap

OpenShift API for Data Protection (OADP) の今後のリリースでは、この手順が不要になるように証明書を Velero Pod にマウントする予定です。

4.11.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 がない場合、インストールは失敗します。

手順

  1. OperatorsInstalled Operators をクリックして、OADP Operator を選択します。
  2. Provided APIs で、DataProtectionApplication ボックスの Create instance をクリックします。
  3. YAML View をクリックして、DataProtectionApplication マニフェストのパラメーターを更新します。

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: <dpa_sample>
      namespace: openshift-adp 
    1
    
    spec:
      configuration:
        velero:
          defaultPlugins:
            - aws 
    2
    
            - openshift 
    3
    
          resourceTimeout: 10m 
    4
    
        nodeAgent: 
    5
    
          enable: true 
    6
    
          uploaderType: kopia 
    7
    
          podConfig:
            nodeSelector: <node_selector> 
    8
    
      backupLocations:
        - velero:
            config:
              profile: "default"
              region: <region_name> 
    9
    
              s3Url: <url> 
    10
    
              insecureSkipTLSVerify: "true"
              s3ForcePathStyle: "true"
            provider: aws
            default: true
            credential:
              key: cloud
              name: cloud-credentials 
    11
    
            objectStorage:
              bucket: <bucket_name> 
    12
    
              prefix: <prefix> 
    13
    Copy to Clipboard Toggle word wrap
    1
    OADP のデフォルトの namespace は openshift-adp です。namespace は変数であり、設定可能です。
    2
    ストレージの場所に対応したオブジェクトストアプラグインが必要です。すべての S3 プロバイダーで、aws プラグインが必要です。Azure および Google Cloud オブジェクトストアの場合、azure または gcp プラグインが必要です。
    3
    openshift プラグインは必須です。
    4
    Velero CRD の可用性、volumeSnapshot の削除、バックアップリポジトリーの可用性など、タイムアウトが発生するまでに複数の Velero リソースを待機する時間を分単位で指定します。デフォルトは 10m です。
    5
    管理要求をサーバーにルーティングする管理エージェント。
    6
    nodeAgent を有効にして File System Backup を実行する場合は、この値を true に設定します。
    7
    アップローダーとして kopia または restic と入力します。インストール後に選択を変更することはできません。組み込み DataMover の場合は、Kopia を使用する必要があります。nodeAgent はデーモンセットをデプロイします。これは、nodeAgent Pod が各ワーキングノード上で実行されることを意味します。File System Backup を設定するには、spec.defaultVolumesToFsBackup: trueBackup CR に追加します。
    8
    Kopia または Restic が使用可能なノードを指定します。デフォルトでは、Kopia または Restic はすべてのノードで実行されます。
    9
    オブジェクトストレージサーバーのドキュメントの命名規則に従って、リージョンを指定します。
    10
    S3 エンドポイントの URL を指定します。
    11
    作成した Secret オブジェクトの名前を指定します。この値を指定しない場合は、デフォルト名の cloud-credentials が使用されます。カスタム名を指定すると、バックアップの場所にカスタム名が使用されます。
    12
    Backup Storage Location としてバケットを指定します。バケットが Velero バックアップ専用のバケットでない場合は、接頭辞を指定する必要があります。
    13
    バケットが複数の目的で使用される場合は、Velero バックアップの接頭辞を指定します (例: velero)。
  4. Create をクリックします。

検証

  1. 次のコマンドを実行して OpenShift API for Data Protection (OADP) リソースを表示し、インストールを検証します。

    $ oc get all -n openshift-adp
    Copy to Clipboard Toggle word wrap

    出力例

    NAME                                                     READY   STATUS    RESTARTS   AGE
    pod/oadp-operator-controller-manager-67d9494d47-6l8z8    2/2     Running   0          2m8s
    pod/node-agent-9cq4q                                     1/1     Running   0          94s
    pod/node-agent-m4lts                                     1/1     Running   0          94s
    pod/node-agent-pv4kr                                     1/1     Running   0          95s
    pod/velero-588db7f655-n842v                              1/1     Running   0          95s
    
    NAME                                                       TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
    service/oadp-operator-controller-manager-metrics-service   ClusterIP   172.30.70.140    <none>        8443/TCP   2m8s
    service/openshift-adp-velero-metrics-svc                   ClusterIP   172.30.10.0      <none>        8085/TCP   8h
    
    NAME                        DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
    daemonset.apps/node-agent    3         3         3       3            3           <none>          96s
    
    NAME                                                READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/oadp-operator-controller-manager    1/1     1            1           2m9s
    deployment.apps/velero                              1/1     1            1           96s
    
    NAME                                                           DESIRED   CURRENT   READY   AGE
    replicaset.apps/oadp-operator-controller-manager-67d9494d47    1         1         1       2m9s
    replicaset.apps/velero-588db7f655                              1         1         1       96s
    Copy to Clipboard Toggle word wrap

  2. 次のコマンドを実行して、DataProtectionApplication (DPA) が調整されていることを確認します。

    $ oc get dpa dpa-sample -n openshift-adp -o jsonpath='{.status}'
    Copy to Clipboard Toggle word wrap

    出力例

    {"conditions":[{"lastTransitionTime":"2023-10-27T01:23:57Z","message":"Reconcile complete","reason":"Complete","status":"True","type":"Reconciled"}]}
    Copy to Clipboard Toggle word wrap

  3. typeReconciled に設定されていることを確認します。
  4. 次のコマンドを実行して、Backup Storage Location を確認し、PHASEAvailable であることを確認します。

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

    出力例

    NAME           PHASE       LAST VALIDATED   AGE     DEFAULT
    dpa-sample-1   Available   1s               3d16h   true
    Copy to Clipboard Toggle word wrap

4.11.1.5. クライアントバースト設定と 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 がインストールされている。

手順

  • 次の例に示すように、DPA の client-burst フィールドと client-qps フィールドを設定します。

    Data Protection Application の例

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: test-dpa
      namespace: openshift-adp
    spec:
      backupLocations:
        - name: default
          velero:
            config:
              insecureSkipTLSVerify: "true"
              profile: "default"
              region: <bucket_region>
              s3ForcePathStyle: "true"
              s3Url: <bucket_url>
            credential:
              key: cloud
              name: cloud-credentials
            default: true
            objectStorage:
              bucket: <bucket_name>
              prefix: velero
            provider: aws
      configuration:
        nodeAgent:
          enable: true
          uploaderType: restic
        velero:
          client-burst: 500 
    1
    
          client-qps: 300 
    2
    
          defaultPlugins:
            - openshift
            - aws
            - kubevirt
    Copy to Clipboard Toggle word wrap

    1
    client-burst 値を指定します。この例では、client-burst フィールドは 500 に設定されています。
    2
    client-qps 値を指定します。この例では、client-qps フィールドは 300 に設定されています。
4.11.1.6. DPA の imagePullPolicy 設定のオーバーライド

OADP 1.4.0 以前では、Operator はすべてのイメージで Velero およびノードエージェント Pod の imagePullPolicy フィールドを Always に設定します。

OADP 1.4.1 以降では、Operator はまず、各イメージに sha256 または sha512 ダイジェストがあるかを確認し、それに応じて imagePullPolicy フィールドを設定します。

  • イメージにダイジェストがある場合、Operator は imagePullPolicyIfNotPresent に設定します。
  • イメージにダイジェストがない場合、Operator は imagePullPolicyAlways に設定します。

Data Protection Application (DPA) の spec.imagePullPolicy フィールドを使用して、imagePullPolicy フィールドをオーバーライドすることもできます。

前提条件

  • OADP Operator がインストールされている。

手順

  • 以下の例のように、DPA の spec.imagePullPolicy フィールドを設定します。

    Data Protection Application の例

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: test-dpa
      namespace: openshift-adp
    spec:
      backupLocations:
        - name: default
          velero:
            config:
              insecureSkipTLSVerify: "true"
              profile: "default"
              region: <bucket_region>
              s3ForcePathStyle: "true"
              s3Url: <bucket_url>
            credential:
              key: cloud
              name: cloud-credentials
            default: true
            objectStorage:
              bucket: <bucket_name>
              prefix: velero
            provider: aws
      configuration:
        nodeAgent:
          enable: true
          uploaderType: kopia
        velero:
          defaultPlugins:
            - openshift
            - aws
            - kubevirt
            - csi
      imagePullPolicy: Never 
    1
    Copy to Clipboard Toggle word wrap

    1
    imagePullPolicy の値を指定します。この例では、imagePullPolicy フィールドが Never に設定されています。
4.11.1.6.1. ノードエージェントとノードラベルの設定

Data Protection Application (DPA) は、nodeSelector フィールドを使用して、ノードエージェントを実行できるノードを選択します。nodeSelector フィールドは、推奨される形式のノード選択制約です。

手順

  1. カスタムラベルを追加して、選択した任意のノードでノードエージェントを実行します。

    $ oc label node/<node_name> node-role.kubernetes.io/nodeAgent=""
    Copy to Clipboard Toggle word wrap
    注記

    指定したラベルが、各ノードのラベルと一致する必要があります。

  2. ノードのラベル付けに使用したのと同じカスタムラベルを DPA.spec.configuration.nodeAgent.podConfig.nodeSelector フィールドで使用します。

    configuration:
      nodeAgent:
        enable: true
        podConfig:
          nodeSelector:
            node-role.kubernetes.io/nodeAgent: ""
    Copy to Clipboard Toggle word wrap

    次の例は nodeSelector のアンチパターンです。この例は、node-role.kubernetes.io/infra: ""node-role.kubernetes.io/worker: "" の両方のラベルがノードに存在しない限り機能しません。

        configuration:
          nodeAgent:
            enable: true
            podConfig:
              nodeSelector:
                node-role.kubernetes.io/infra: ""
                node-role.kubernetes.io/worker: ""
    Copy to Clipboard Toggle word wrap
4.11.1.6.2. DataProtectionApplication CR で CSI を有効にする

CSI スナップショットを使用して永続ボリュームをバックアップするには、DataProtectionApplication カスタムリソース (CR) で Container Storage Interface (CSI) を有効にします。

前提条件

  • クラウドプロバイダーは、CSI スナップショットをサポートする必要があります。

手順

  • 次の例のように、DataProtectionApplication CR を編集します。

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    ...
    spec:
      configuration:
        velero:
          defaultPlugins:
          - openshift
          - csi 
    1
    Copy to Clipboard Toggle word wrap
    1
    csi デフォルトプラグインを追加します。
4.11.1.6.3. DataProtectionApplication でノードエージェントを無効にする

バックアップに ResticKopia、または DataMover を使用していない場合は、DataProtectionApplication カスタムリソース (CR) の nodeAgent フィールドを無効にすることができます。nodeAgent を無効にする前に、OADP Operator がアイドル状態であり、バックアップを実行していないことを確認してください。

手順

  1. nodeAgent を無効にするには、enable フラグを false に設定します。以下の例を参照してください。

    DataProtectionApplication CR の例

    # ...
    configuration:
      nodeAgent:
        enable: false  
    1
    
        uploaderType: kopia
    # ...
    Copy to Clipboard Toggle word wrap

    1
    ノードエージェントを無効にします。
  2. nodeAgent を有効にするには、enable フラグを true に設定します。以下の例を参照してください。

    DataProtectionApplication CR の例

    # ...
    configuration:
      nodeAgent:
        enable: true  
    1
    
        uploaderType: kopia
    # ...
    Copy to Clipboard Toggle word wrap

    1
    ノードエージェントを有効にします。

ジョブをセットアップして、DataProtectionApplication CR の nodeAgent フィールドを有効または無効にすることができます。詳細は、「ジョブの使用による Pod でのタスクの実行」を参照してください。

4.12. ODF を使用した OADP の設定

4.12.1. OpenShift Data Foundation を使用した OpenShift API for Data Protection の設定

OpenShift Data Foundation を使用して OpenShift API for Data Protection (OADP) をインストールするには、OADP Operator をインストールし、バックアップの場所とスナップショットロケーションを設定します。次に、Data Protection Application をインストールします。

注記

OADP 1.0.4 以降、すべての OADP 1.0.z バージョンは Migration Toolkit for Containers Operator の依存関係としてのみ使用でき、スタンドアロン Operator として使用することはできません。

Multicloud Object Gateway または任意の AWS S3 互換のオブジェクトストレージをバックアップの場所として設定できます。

重要

オブジェクトストレージのバケット作成を自動化する CloudStorage API は、テクノロジープレビュー機能のみです。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。

Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、以下のリンクを参照してください。

バックアップ場所の Secret CR を作成し、Data Protection Application をインストールできます。詳細は、OADP Operator のインストール を参照してください。

制限されたネットワーク環境に OADP Operator をインストールするには、最初にデフォルトの OperatorHub ソースを無効にして、Operator カタログをミラーリングする必要があります。詳細は、ネットワークが制限された環境での Operator Lifecycle Manager の使用 を参照してください。

4.12.1.1. バックアップおよびスナップショットの場所、ならびにそのシークレットについて

DataProtectionApplication カスタムリソース (CR) で、バックアップおよびスナップショットの場所、ならびにそのシークレットを指定します。

4.12.1.1.1. バックアップの場所

バックアップの場所として、次のいずれかの AWS S3 互換オブジェクトストレージソリューションを指定できます。

  • Multicloud Object Gateway (MCG)
  • Red Hat Container Storage
  • Ceph RADOS Gateway (別称 Ceph Object Gateway)
  • Red Hat OpenShift Data Foundation
  • MinIO

Velero は、オブジェクトストレージのアーカイブファイルとして、OpenShift Container Platform リソース、Kubernetes オブジェクト、および内部イメージをバックアップします。

4.12.1.1.2. スナップショットの場所

クラウドプロバイダーのネイティブスナップショット API を使用して永続ボリュームをバックアップする場合、クラウドプロバイダーをスナップショットの場所として指定する必要があります。

Container Storage Interface (CSI) スナップショットを使用する場合、CSI ドライバーを登録するために VolumeSnapshotClass CR を作成するため、スナップショットの場所を指定する必要はありません。

File System Backup (FSB) を使用する場合、FSB がオブジェクトストレージ上にファイルシステムをバックアップするため、スナップショットの場所を指定する必要はありません。

4.12.1.1.3. シークレット

バックアップとスナップショットの場所が同じ認証情報を使用する場合、またはスナップショットの場所が必要ない場合は、デフォルトの Secret を作成します。

バックアップとスナップショットの場所で異なる認証情報を使用する場合は、次の 2 つの secret オブジェクトを作成します。

  • DataProtectionApplication CR で指定する、バックアップの場所用のカスタム Secret
  • DataProtectionApplication CR で参照されない、スナップショットの場所用のデフォルト Secret
重要

Data Protection Application には、デフォルトの Secret が必要です。作成しないと、インストールは失敗します。

インストール中にバックアップまたはスナップショットの場所を指定したくない場合は、空の credentials-velero ファイルを使用してデフォルトの Secret を作成できます。

4.12.1.1.4. デフォルト Secret の作成

バックアップとスナップショットの場所が同じ認証情報を使用する場合、またはスナップショットの場所が必要ない場合は、デフォルトの Secret を作成します。

バックアップストレージプロバイダーに awsazure、または gcp などのデフォルトのプラグインがない限り、Secret のデフォルト名は cloud-credentials です。その場合、プロバイダー固有の OADP インストール手順でデフォルト名が指定されています。

注記

DataProtectionApplication カスタムリソース (CR) にはデフォルトの Secret が必要です。作成しないと、インストールは失敗します。バックアップの場所の Secret の名前が指定されていない場合は、デフォルトの名前が使用されます。

インストール時にバックアップ場所の認証情報を使用しない場合は、空の credentials-velero ファイルを使用して、デフォルト名の Secret を作成できます。

前提条件

  • オブジェクトストレージとクラウドストレージがある場合は、同じ認証情報を使用する必要があります。
  • Velero のオブジェクトストレージを設定する必要があります。

手順

  1. Backup Storage Location の credentials-velero ファイルをクラウドプロバイダーに適した形式で作成します。

    以下の例を参照してください。

    [default]
    aws_access_key_id=<AWS_ACCESS_KEY_ID>
    aws_secret_access_key=<AWS_SECRET_ACCESS_KEY>
    Copy to Clipboard Toggle word wrap
  2. デフォルト名で Secret カスタムリソース (CR) を作成します。

    $ oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-velero
    Copy to Clipboard Toggle word wrap

Secret は、Data Protection Application をインストールするときに、DataProtectionApplication CR の spec.backupLocations.credential ブロックで参照されます。

4.12.1.1.5. 異なる認証情報のシークレットの作成

バックアップとスナップショットの場所で異なる認証情報を使用する場合は、次の 2 つの Secret オブジェクトを作成する必要があります。

  • カスタム名を持つバックアップロケーションの Secret。カスタム名は、DataProtectionApplication カスタムリソース (CR) の spec.backupLocations ブロックで指定されます。
  • スナップショットの場所 Secret (デフォルト名は cloud-credentials)。この Secret は、DataProtectionApplication で指定されていません。

手順

  1. スナップショットの場所の credentials-velero ファイルをクラウドプロバイダーに適した形式で作成します。
  2. デフォルト名でスナップショットの場所の Secret を作成します。

    $ oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-velero
    Copy to Clipboard Toggle word wrap
  3. オブジェクトストレージに適した形式で、バックアップロケーションの credentials-velero ファイルを作成します。
  4. カスタム名を使用してバックアップロケーションの Secret を作成します。

    $ oc create secret generic <custom_secret> -n openshift-adp --from-file cloud=credentials-velero
    Copy to Clipboard Toggle word wrap
  5. 次の例のように、カスタム名の SecretDataProtectionApplication に追加します。

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: <dpa_sample>
      namespace: openshift-adp
    spec:
    ...
      backupLocations:
        - velero:
            provider: <provider>
            default: true
            credential:
              key: cloud
              name: <custom_secret> 
    1
    
            objectStorage:
              bucket: <bucket_name>
              prefix: <prefix>
    Copy to Clipboard Toggle word wrap
    1
    カスタム名を持つバックアップロケーションの Secret
4.12.1.2. Data Protection Application の設定

Velero リソースの割り当てを設定するか、自己署名 CA 証明書を有効にして、Data Protection Application を設定できます。

4.12.1.2.1. Velero の CPU とメモリーのリソース割り当てを設定

DataProtectionApplication カスタムリソース (CR) マニフェストを編集して、Velero Pod の CPU およびメモリーリソースの割り当てを設定します。

前提条件

  • OpenShift API for Data Protection (OADP) Operator がインストールされている必要があります。

手順

  • 次の例のように、DataProtectionApplication CR マニフェストの spec.configuration.velero.podConfig.ResourceAllocations ブロックの値を編集します。

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: <dpa_sample>
    spec:
    # ...
      configuration:
        velero:
          podConfig:
            nodeSelector: <node_selector> 
    1
    
            resourceAllocations: 
    2
    
              limits:
                cpu: "1"
                memory: 1024Mi
              requests:
                cpu: 200m
                memory: 256Mi
    Copy to Clipboard Toggle word wrap
    1
    Velero podSpec に提供されるノードセレクターを指定します。
    2
    リストされている resourceAllocations は、平均使用量です。
    注記

    Kopia は OADP 1.3 以降のリリースで選択できます。Kopia はファイルシステムのバックアップに使用できます。組み込みの Data Mover を使用する Data Mover の場合は、Kopia が唯一の選択肢になります。

    Kopia は Restic よりも多くのリソースを消費するため、それに応じて CPU とメモリーの要件を調整しなければならない場合があります。

nodeSelector フィールドを使用して、ノードエージェントを実行できるノードを選択します。nodeSelector フィールドは、推奨される最も単純な形式のノード選択制約です。指定したラベルが、各ノードのラベルと一致する必要があります。

詳細は、ノードエージェントとノードラベルの設定 を参照してください。

4.12.1.2.1.1. 収集したデータに基づき Ceph の CPU およびメモリー要件を調整する

以下の推奨事項は、スケールおよびパフォーマンスのラボで観察したパフォーマンスに基づいています。この変更は、特に Red Hat OpenShift Data Foundation (ODF) に関連しています。ODF を使用する場合は、適切なチューニングガイドで公式の推奨事項を確認してください。

4.12.1.2.1.1.1. 設定に必要な CPU とメモリー

バックアップおよび復元操作には、大量の CephFS PersistentVolumes (PV) が必要です。out-of-memory (OOM) エラーによる Ceph MDS Pod の再起動を回避するためには、次の設定が推奨されます。

Expand
設定タイプ要求上限

CPU

要求が 3 に変更されました

上限は 3

メモリー

要求が 8 Gi に変更されました

上限は 128 Gi

4.12.1.2.2. 自己署名 CA 証明書の有効化

certificate signed by unknown authority エラーを防ぐために、DataProtectionApplication カスタムリソース (CR) マニフェストを編集して、オブジェクトストレージの自己署名 CA 証明書を有効にする必要があります。

前提条件

  • OpenShift API for Data Protection (OADP) Operator がインストールされている必要があります。

手順

  • DataProtectionApplication CR マニフェストの spec.backupLocations.velero.objectStorage.caCert パラメーターと spec.backupLocations.velero.config パラメーターを編集します。

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: <dpa_sample>
    spec:
    # ...
      backupLocations:
        - name: default
          velero:
            provider: aws
            default: true
            objectStorage:
              bucket: <bucket>
              prefix: <prefix>
              caCert: <base64_encoded_cert_string> 
    1
    
            config:
              insecureSkipTLSVerify: "false" 
    2
    
    # ...
    Copy to Clipboard Toggle word wrap
    1
    Base64 でエンコードされた CA 証明書文字列を指定します。
    2
    insecureSkipTLSVerify 設定は、"true" または "false" のいずれかに設定できます。"true" に設定すると、SSL/TLS セキュリティーが無効になります。"false" に設定すると、SSL/TLS セキュリティーが有効になります。
4.12.1.2.3. Velero デプロイメント用のエイリアス化した velero コマンドで CA 証明書を使用する

Velero CLI のエイリアスを作成することで、システムにローカルにインストールせずに Velero CLI を使用できます。

前提条件

  • cluster-admin ロールを持つユーザーとして OpenShift Container Platform クラスターにログインしている。
  • OpenShift CLI (oc) がインストールされている。

    1. エイリアス化した Velero コマンドを使用するには、次のコマンドを実行します。

      $ alias velero='oc -n openshift-adp exec deployment/velero -c velero -it -- ./velero'
      Copy to Clipboard Toggle word wrap
    2. 次のコマンドを実行して、エイリアスが機能していることを確認します。

      $ velero version
      Copy to Clipboard Toggle word wrap
      Client:
      	Version: v1.12.1-OADP
      	Git commit: -
      Server:
      	Version: v1.12.1-OADP
      Copy to Clipboard Toggle word wrap
    3. このコマンドで CA 証明書を使用するには、次のコマンドを実行して証明書を Velero デプロイメントに追加できます。

      $ CA_CERT=$(oc -n openshift-adp get dataprotectionapplications.oadp.openshift.io <dpa-name> -o jsonpath='{.spec.backupLocations[0].velero.objectStorage.caCert}')
      Copy to Clipboard Toggle word wrap
      $ [[ -n $CA_CERT ]] && echo "$CA_CERT" | base64 -d | oc exec -n openshift-adp -i deploy/velero -c velero -- bash -c "cat > /tmp/your-cacert.txt" || echo "DPA BSL has no caCert"
      Copy to Clipboard Toggle word wrap
      $ velero describe backup <backup_name> --details --cacert /tmp/<your_cacert>.txt
      Copy to Clipboard Toggle word wrap
    4. バックアップログを取得するために、次のコマンドを実行します。

      $ velero backup logs  <backup_name>  --cacert /tmp/<your_cacert.txt>
      Copy to Clipboard Toggle word wrap

      このログを使用して、バックアップできないリソースの障害と警告を表示できます。

    5. Velero Pod が再起動すると、/tmp/your-cacert.txt ファイルが消去されます。そのため、前の手順のコマンドを再実行して /tmp/your-cacert.txt ファイルを再作成する必要があります。
    6. 次のコマンドを実行すると、/tmp/your-cacert.txt ファイルを保存した場所にファイルがまだ存在するかどうかを確認できます。

      $ oc exec -n openshift-adp -i deploy/velero -c velero -- bash -c "ls /tmp/your-cacert.txt"
      /tmp/your-cacert.txt
      Copy to Clipboard Toggle word wrap

OpenShift API for Data Protection (OADP) の今後のリリースでは、この手順が不要になるように証明書を Velero Pod にマウントする予定です。

4.12.1.3. Data Protection Application のインストール

DataProtectionApplication API のインスタンスを作成して、Data Protection Application (DPA) をインストールします。

前提条件

  • OADP Operator をインストールする。
  • オブジェクトストレージをバックアップロケーションとして設定する必要がある。
  • スナップショットを使用して PV をバックアップする場合、クラウドプロバイダーはネイティブスナップショット API または Container Storage Interface (CSI) スナップショットのいずれかをサポートする必要がある。
  • バックアップとスナップショットの場所で同じ認証情報を使用する場合は、デフォルトの名前である cloud-credentials を使用して Secret を作成する必要がある。

    注記

    インストール中にバックアップまたはスナップショットの場所を指定したくない場合は、空の credentials-velero ファイルを使用してデフォルトの Secret を作成できます。デフォルトの Secret がない場合、インストールは失敗します。

手順

  1. OperatorsInstalled Operators をクリックして、OADP Operator を選択します。
  2. Provided APIs で、DataProtectionApplication ボックスの Create instance をクリックします。
  3. YAML View をクリックして、DataProtectionApplication マニフェストのパラメーターを更新します。

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: <dpa_sample>
      namespace: openshift-adp 
    1
    
    spec:
      configuration:
        velero:
          defaultPlugins:
            - aws 
    2
    
            - kubevirt 
    3
    
            - csi 
    4
    
            - openshift 
    5
    
          resourceTimeout: 10m 
    6
    
        nodeAgent: 
    7
    
          enable: true 
    8
    
          uploaderType: kopia 
    9
    
          podConfig:
            nodeSelector: <node_selector> 
    10
    
      backupLocations:
        - velero:
            provider: gcp 
    11
    
            default: true
            credential:
              key: cloud
              name: <default_secret> 
    12
    
            objectStorage:
              bucket: <bucket_name> 
    13
    
              prefix: <prefix> 
    14
    Copy to Clipboard Toggle word wrap
    1
    OADP のデフォルトの namespace は openshift-adp です。namespace は変数であり、設定可能です。
    2
    ストレージの場所に対応したオブジェクトストアプラグインが必要です。すべての S3 プロバイダーで、aws プラグインが必要です。Azure および Google Cloud オブジェクトストアの場合、azure または gcp プラグインが必要です。
    3
    オプション: kubevirt プラグインは OpenShift Virtualization で使用されます。
    4
    CSI スナップショットを使用して PV をバックアップする場合は、csi のデフォルトプラグインを指定します。csi プラグインは、Velero CSI ベータスナップショット API を使用します。スナップショットの場所を設定する必要はありません。
    5
    openshift プラグインは必須です。
    6
    Velero CRD の可用性、volumeSnapshot の削除、バックアップリポジトリーの可用性など、タイムアウトが発生するまでに複数の Velero リソースを待機する時間を分単位で指定します。デフォルトは 10m です。
    7
    管理要求をサーバーにルーティングする管理エージェント。
    8
    nodeAgent を有効にして File System Backup を実行する場合は、この値を true に設定します。
    9
    アップローダーとして kopia または restic と入力します。インストール後に選択を変更することはできません。組み込み DataMover の場合は、Kopia を使用する必要があります。nodeAgent はデーモンセットをデプロイします。これは、nodeAgent Pod が各ワーキングノード上で実行されることを意味します。File System Backup を設定するには、spec.defaultVolumesToFsBackup: trueBackup CR に追加します。
    10
    Kopia または Restic が使用可能なノードを指定します。デフォルトでは、Kopia または Restic はすべてのノードで実行されます。
    11
    バックアッププロバイダーを指定します。
    12
    バックアッププロバイダーにデフォルトのプラグインを使用する場合は、Secret の正しいデフォルト名を指定します (例: cloud-credentials-gcp)。カスタム名を指定すると、そのカスタム名がバックアップの場所に使用されます。Secret 名を指定しない場合は、デフォルトの名前が使用されます。
    13
    Backup Storage Location としてバケットを指定します。バケットが Velero バックアップ専用のバケットでない場合は、接頭辞を指定する必要があります。
    14
    バケットが複数の目的で使用される場合は、Velero バックアップの接頭辞を指定します (例: velero)。
  4. Create をクリックします。

検証

  1. 次のコマンドを実行して OpenShift API for Data Protection (OADP) リソースを表示し、インストールを検証します。

    $ oc get all -n openshift-adp
    Copy to Clipboard Toggle word wrap

    出力例

    NAME                                                     READY   STATUS    RESTARTS   AGE
    pod/oadp-operator-controller-manager-67d9494d47-6l8z8    2/2     Running   0          2m8s
    pod/node-agent-9cq4q                                     1/1     Running   0          94s
    pod/node-agent-m4lts                                     1/1     Running   0          94s
    pod/node-agent-pv4kr                                     1/1     Running   0          95s
    pod/velero-588db7f655-n842v                              1/1     Running   0          95s
    
    NAME                                                       TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
    service/oadp-operator-controller-manager-metrics-service   ClusterIP   172.30.70.140    <none>        8443/TCP   2m8s
    service/openshift-adp-velero-metrics-svc                   ClusterIP   172.30.10.0      <none>        8085/TCP   8h
    
    NAME                        DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
    daemonset.apps/node-agent    3         3         3       3            3           <none>          96s
    
    NAME                                                READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/oadp-operator-controller-manager    1/1     1            1           2m9s
    deployment.apps/velero                              1/1     1            1           96s
    
    NAME                                                           DESIRED   CURRENT   READY   AGE
    replicaset.apps/oadp-operator-controller-manager-67d9494d47    1         1         1       2m9s
    replicaset.apps/velero-588db7f655                              1         1         1       96s
    Copy to Clipboard Toggle word wrap

  2. 次のコマンドを実行して、DataProtectionApplication (DPA) が調整されていることを確認します。

    $ oc get dpa dpa-sample -n openshift-adp -o jsonpath='{.status}'
    Copy to Clipboard Toggle word wrap

    出力例

    {"conditions":[{"lastTransitionTime":"2023-10-27T01:23:57Z","message":"Reconcile complete","reason":"Complete","status":"True","type":"Reconciled"}]}
    Copy to Clipboard Toggle word wrap

  3. typeReconciled に設定されていることを確認します。
  4. 次のコマンドを実行して、Backup Storage Location を確認し、PHASEAvailable であることを確認します。

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

    出力例

    NAME           PHASE       LAST VALIDATED   AGE     DEFAULT
    dpa-sample-1   Available   1s               3d16h   true
    Copy to Clipboard Toggle word wrap

4.12.1.4. クライアントバースト設定と 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 がインストールされている。

手順

  • 次の例に示すように、DPA の client-burst フィールドと client-qps フィールドを設定します。

    Data Protection Application の例

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: test-dpa
      namespace: openshift-adp
    spec:
      backupLocations:
        - name: default
          velero:
            config:
              insecureSkipTLSVerify: "true"
              profile: "default"
              region: <bucket_region>
              s3ForcePathStyle: "true"
              s3Url: <bucket_url>
            credential:
              key: cloud
              name: cloud-credentials
            default: true
            objectStorage:
              bucket: <bucket_name>
              prefix: velero
            provider: aws
      configuration:
        nodeAgent:
          enable: true
          uploaderType: restic
        velero:
          client-burst: 500 
    1
    
          client-qps: 300 
    2
    
          defaultPlugins:
            - openshift
            - aws
            - kubevirt
    Copy to Clipboard Toggle word wrap

    1
    client-burst 値を指定します。この例では、client-burst フィールドは 500 に設定されています。
    2
    client-qps 値を指定します。この例では、client-qps フィールドは 300 に設定されています。
4.12.1.5. DPA の imagePullPolicy 設定のオーバーライド

OADP 1.4.0 以前では、Operator はすべてのイメージで Velero およびノードエージェント Pod の imagePullPolicy フィールドを Always に設定します。

OADP 1.4.1 以降では、Operator はまず、各イメージに sha256 または sha512 ダイジェストがあるかを確認し、それに応じて imagePullPolicy フィールドを設定します。

  • イメージにダイジェストがある場合、Operator は imagePullPolicyIfNotPresent に設定します。
  • イメージにダイジェストがない場合、Operator は imagePullPolicyAlways に設定します。

Data Protection Application (DPA) の spec.imagePullPolicy フィールドを使用して、imagePullPolicy フィールドをオーバーライドすることもできます。

前提条件

  • OADP Operator がインストールされている。

手順

  • 以下の例のように、DPA の spec.imagePullPolicy フィールドを設定します。

    Data Protection Application の例

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: test-dpa
      namespace: openshift-adp
    spec:
      backupLocations:
        - name: default
          velero:
            config:
              insecureSkipTLSVerify: "true"
              profile: "default"
              region: <bucket_region>
              s3ForcePathStyle: "true"
              s3Url: <bucket_url>
            credential:
              key: cloud
              name: cloud-credentials
            default: true
            objectStorage:
              bucket: <bucket_name>
              prefix: velero
            provider: aws
      configuration:
        nodeAgent:
          enable: true
          uploaderType: kopia
        velero:
          defaultPlugins:
            - openshift
            - aws
            - kubevirt
            - csi
      imagePullPolicy: Never 
    1
    Copy to Clipboard Toggle word wrap

    1
    imagePullPolicy の値を指定します。この例では、imagePullPolicy フィールドが Never に設定されています。
4.12.1.5.1. ノードエージェントとノードラベルの設定

Data Protection Application (DPA) は、nodeSelector フィールドを使用して、ノードエージェントを実行できるノードを選択します。nodeSelector フィールドは、推奨される形式のノード選択制約です。

手順

  1. カスタムラベルを追加して、選択した任意のノードでノードエージェントを実行します。

    $ oc label node/<node_name> node-role.kubernetes.io/nodeAgent=""
    Copy to Clipboard Toggle word wrap
    注記

    指定したラベルが、各ノードのラベルと一致する必要があります。

  2. ノードのラベル付けに使用したのと同じカスタムラベルを DPA.spec.configuration.nodeAgent.podConfig.nodeSelector フィールドで使用します。

    configuration:
      nodeAgent:
        enable: true
        podConfig:
          nodeSelector:
            node-role.kubernetes.io/nodeAgent: ""
    Copy to Clipboard Toggle word wrap

    次の例は nodeSelector のアンチパターンです。この例は、node-role.kubernetes.io/infra: ""node-role.kubernetes.io/worker: "" の両方のラベルがノードに存在しない限り機能しません。

        configuration:
          nodeAgent:
            enable: true
            podConfig:
              nodeSelector:
                node-role.kubernetes.io/infra: ""
                node-role.kubernetes.io/worker: ""
    Copy to Clipboard Toggle word wrap
4.12.1.5.2. OpenShift Data Foundation での障害復旧用のオブジェクトバケット要求の作成

OpenShift Data Foundation の Multicloud Object Gateway (MCG) バケット backupStorageLocation にクラスターストレージを使用する場合は、OpenShift Web コンソールを使用して Object Bucket Claim (OBC) を作成します。

警告

Object Bucket Claim (OBC) の設定に失敗すると、バックアップが利用できなくなる可能性があります。

注記

特に指定のない限り、"NooBaa" は軽量オブジェクトストレージを提供するオープンソースプロジェクトを指し、"Multicloud Object Gateway (MCG)" は NooBaa の Red Hat ディストリビューションを指します。

MCG の詳細は、アプリケーションを使用して Multicloud Object Gateway にアクセスする を参照してください。

手順

4.12.1.5.3. DataProtectionApplication CR で CSI を有効にする

CSI スナップショットを使用して永続ボリュームをバックアップするには、DataProtectionApplication カスタムリソース (CR) で Container Storage Interface (CSI) を有効にします。

前提条件

  • クラウドプロバイダーは、CSI スナップショットをサポートする必要があります。

手順

  • 次の例のように、DataProtectionApplication CR を編集します。

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    ...
    spec:
      configuration:
        velero:
          defaultPlugins:
          - openshift
          - csi 
    1
    Copy to Clipboard Toggle word wrap
    1
    csi デフォルトプラグインを追加します。
4.12.1.5.4. DataProtectionApplication でノードエージェントを無効にする

バックアップに ResticKopia、または DataMover を使用していない場合は、DataProtectionApplication カスタムリソース (CR) の nodeAgent フィールドを無効にすることができます。nodeAgent を無効にする前に、OADP Operator がアイドル状態であり、バックアップを実行していないことを確認してください。

手順

  1. nodeAgent を無効にするには、enable フラグを false に設定します。以下の例を参照してください。

    DataProtectionApplication CR の例

    # ...
    configuration:
      nodeAgent:
        enable: false  
    1
    
        uploaderType: kopia
    # ...
    Copy to Clipboard Toggle word wrap

    1
    ノードエージェントを無効にします。
  2. nodeAgent を有効にするには、enable フラグを true に設定します。以下の例を参照してください。

    DataProtectionApplication CR の例

    # ...
    configuration:
      nodeAgent:
        enable: true  
    1
    
        uploaderType: kopia
    # ...
    Copy to Clipboard Toggle word wrap

    1
    ノードエージェントを有効にします。

ジョブをセットアップして、DataProtectionApplication CR の nodeAgent フィールドを有効または無効にすることができます。詳細は、「ジョブの使用による Pod でのタスクの実行」を参照してください。

4.13. OpenShift Virtualization を使用した OADP の設定

4.13.1. OpenShift Virtualization を使用した OpenShift API for Data Protection の設定

OADP Operator をインストールし、バックアップの場所を設定することで、OpenShift Virtualization を使用した OpenShift API for Data Protection (OADP) をインストールできます。その後、Data Protection Application をインストールできます。

OpenShift API for Data Protection を使用して仮想マシンをバックアップおよび復元します。

注記

OpenShift Virtualization を使用した OpenShift API for Data Protection は、バックアップおよび復元のストレージオプションとして次のものをサポートしています。

  • Container Storage Interface (CSI) バックアップ
  • DataMover による Container Storage Interface (CSI) バックアップ

次のストレージオプションは対象外です。

  • ファイルシステムのバックアップと復元
  • ボリュームスナップショットのバックアップと復元

詳細は、File System Backup を使用してアプリケーションをバックアップする: Kopia または Restic を参照してください。

制限されたネットワーク環境に OADP Operator をインストールするには、最初にデフォルトの OperatorHub ソースを無効にして、Operator カタログをミラーリングする必要があります。詳細は、ネットワークが制限された環境での Operator Lifecycle Manager の使用 を参照してください。

4.13.1.1. OpenShift Virtualization を使用した OADP のインストールと設定

クラスター管理者は、OADP Operator をインストールして OADP をインストールします。

最新バージョンの OADP Operator は、Velero 1.14 をインストールします。

前提条件

  • cluster-admin ロールを持つユーザーとしてクラスターにアクセスできる。

手順

  1. ストレージプロバイダーの指示に従って、OADP Operator をインストールします。
  2. kubevirt および openshift OADP プラグインを使用して Data Protection Application (DPA) をインストールします。
  3. Backup カスタムリソース (CR) を作成して、仮想マシンをバックアップします。

    警告

    Red Hat のサポート対象は、次のオプションに限られています。

    • CSI バックアップ
    • DataMover による CSI バックアップ

Restore CR を作成して Backup CR を復元します。

4.13.1.2. Data Protection Application のインストール

DataProtectionApplication API のインスタンスを作成して、Data Protection Application (DPA) をインストールします。

前提条件

  • OADP Operator をインストールする。
  • オブジェクトストレージをバックアップロケーションとして設定する必要がある。
  • スナップショットを使用して PV をバックアップする場合、クラウドプロバイダーはネイティブスナップショット API または Container Storage Interface (CSI) スナップショットのいずれかをサポートする必要がある。
  • バックアップとスナップショットの場所で同じ認証情報を使用する場合は、デフォルトの名前である cloud-credentials を使用して Secret を作成する必要がある。
  • バックアップとスナップショットの場所で異なる認証情報を使用する場合は、以下のように 2 つの Secrets を作成する必要がある。

    • バックアップの場所用のカスタム名を持つ Secret。この SecretDataProtectionApplication CR に追加します。
    • スナップショットの場所用の別のカスタム名を持つ Secret。この SecretDataProtectionApplication CR に追加します。
    注記

    インストール中にバックアップまたはスナップショットの場所を指定したくない場合は、空の credentials-velero ファイルを使用してデフォルトの Secret を作成できます。デフォルトの Secret がない場合、インストールは失敗します。

手順

  1. OperatorsInstalled Operators をクリックして、OADP Operator を選択します。
  2. Provided APIs で、DataProtectionApplication ボックスの Create instance をクリックします。
  3. YAML View をクリックして、DataProtectionApplication マニフェストのパラメーターを更新します。

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: <dpa_sample>
      namespace: openshift-adp 
    1
    
    spec:
      configuration:
        velero:
          defaultPlugins:
            - kubevirt 
    2
    
            - gcp 
    3
    
            - csi 
    4
    
            - openshift 
    5
    
          resourceTimeout: 10m 
    6
    
        nodeAgent: 
    7
    
          enable: true 
    8
    
          uploaderType: kopia 
    9
    
          podConfig:
            nodeSelector: <node_selector> 
    10
    
      backupLocations:
        - velero:
            provider: gcp 
    11
    
            default: true
            credential:
              key: cloud
              name: <default_secret> 
    12
    
            objectStorage:
              bucket: <bucket_name> 
    13
    
              prefix: <prefix> 
    14
    Copy to Clipboard Toggle word wrap
    1
    OADP のデフォルトの namespace は openshift-adp です。namespace は変数であり、設定可能です。
    2
    kubevirt プラグインは OpenShift Virtualization に必須です。
    3
    バックアッププロバイダーのプラグインがある場合には、それを指定します (例: gcp)。
    4
    CSI スナップショットを使用して PV をバックアップするには、csi プラグインが必須です。csi プラグインは、Velero CSI ベータスナップショット API を使用します。スナップショットの場所を設定する必要はありません。
    5
    openshift プラグインは必須です。
    6
    Velero CRD の可用性、volumeSnapshot の削除、バックアップリポジトリーの可用性など、タイムアウトが発生するまでに複数の Velero リソースを待機する時間を分単位で指定します。デフォルトは 10m です。
    7
    管理要求をサーバーにルーティングする管理エージェント。
    8
    nodeAgent を有効にして File System Backup を実行する場合は、この値を true に設定します。
    9
    組み込み DataMover を使用するには、アップローダーとして kopia と入力します。nodeAgent はデーモンセットをデプロイします。これは、nodeAgent Pod が各ワーキングノード上で実行されることを意味します。File System Backup を設定するには、spec.defaultVolumesToFsBackup: trueBackup CR に追加します。
    10
    Kopia が利用可能なノードを指定します。デフォルトでは、Kopia はすべてのノードで実行されます。
    11
    バックアッププロバイダーを指定します。
    12
    バックアッププロバイダーにデフォルトのプラグインを使用する場合は、Secret の正しいデフォルト名を指定します (例: cloud-credentials-gcp)。カスタム名を指定すると、そのカスタム名がバックアップの場所に使用されます。Secret 名を指定しない場合は、デフォルトの名前が使用されます。
    13
    Backup Storage Location としてバケットを指定します。バケットが Velero バックアップ専用のバケットでない場合は、接頭辞を指定する必要があります。
    14
    バケットが複数の目的で使用される場合は、Velero バックアップの接頭辞を指定します (例: velero)。
  4. Create をクリックします。

検証

  1. 次のコマンドを実行して OpenShift API for Data Protection (OADP) リソースを表示し、インストールを検証します。

    $ oc get all -n openshift-adp
    Copy to Clipboard Toggle word wrap

    出力例

    NAME                                                     READY   STATUS    RESTARTS   AGE
    pod/oadp-operator-controller-manager-67d9494d47-6l8z8    2/2     Running   0          2m8s
    pod/node-agent-9cq4q                                     1/1     Running   0          94s
    pod/node-agent-m4lts                                     1/1     Running   0          94s
    pod/node-agent-pv4kr                                     1/1     Running   0          95s
    pod/velero-588db7f655-n842v                              1/1     Running   0          95s
    
    NAME                                                       TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
    service/oadp-operator-controller-manager-metrics-service   ClusterIP   172.30.70.140    <none>        8443/TCP   2m8s
    service/openshift-adp-velero-metrics-svc                   ClusterIP   172.30.10.0      <none>        8085/TCP   8h
    
    NAME                        DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
    daemonset.apps/node-agent    3         3         3       3            3           <none>          96s
    
    NAME                                                READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/oadp-operator-controller-manager    1/1     1            1           2m9s
    deployment.apps/velero                              1/1     1            1           96s
    
    NAME                                                           DESIRED   CURRENT   READY   AGE
    replicaset.apps/oadp-operator-controller-manager-67d9494d47    1         1         1       2m9s
    replicaset.apps/velero-588db7f655                              1         1         1       96s
    Copy to Clipboard Toggle word wrap

  2. 次のコマンドを実行して、DataProtectionApplication (DPA) が調整されていることを確認します。

    $ oc get dpa dpa-sample -n openshift-adp -o jsonpath='{.status}'
    Copy to Clipboard Toggle word wrap

    出力例

    {"conditions":[{"lastTransitionTime":"2023-10-27T01:23:57Z","message":"Reconcile complete","reason":"Complete","status":"True","type":"Reconciled"}]}
    Copy to Clipboard Toggle word wrap

  3. typeReconciled に設定されていることを確認します。
  4. 次のコマンドを実行して、Backup Storage Location を確認し、PHASEAvailable であることを確認します。

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

    出力例

    NAME           PHASE       LAST VALIDATED   AGE     DEFAULT
    dpa-sample-1   Available   1s               3d16h   true
    Copy to Clipboard Toggle word wrap

警告

Microsoft Windows 仮想マシン (VM) の再起動直後に仮想マシンのバックアップを実行すると、PartiallyFailed エラーが発生してバックアップが失敗する可能性があります。これは、仮想マシンの起動直後は、Microsoft Windows Volume Shadow Copy Service (VSS) と Guest Agent (GA) サービスが準備されていないためです。VSS および GA サービスが準備されていないため、バックアップは失敗します。このような場合は、仮想マシンの起動後数分後にバックアップを再試行してください。

4.13.1.3. 単一仮想マシンのバックアップ

複数の仮想マシンが含まれる namespace があり、そのうちの 1 つだけをバックアップする場合は、ラベルセレクターを使用して、バックアップに含める必要がある仮想マシンをフィルターできます。app: vmname ラベルを使用して仮想マシンをフィルタリングできます。

前提条件

  • OADP Operator がインストールされている。
  • namespace 内で複数の仮想マシンが実行されている。
  • DataProtectionApplication (DPA) カスタムリソース (CR) に kubevirt プラグインを追加した。
  • DataProtectionApplication CR で BackupStorageLocation CR を設定しており、BackupStorageLocation が使用可能である。

手順

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

    Backup CR の例

    apiVersion: velero.io/v1
    kind: Backup
    metadata:
      name: vmbackupsingle
      namespace: openshift-adp
    spec:
      snapshotMoveData: true
      includedNamespaces:
      - <vm_namespace> 
    1
    
      labelSelector:
        matchLabels:
          app: <vm_app_name> 
    2
    
      storageLocation: <backup_storage_location_name> 
    3
    Copy to Clipboard Toggle word wrap

    1
    仮想マシンを作成した namespace の名前を指定します。
    2
    バックアップする必要がある仮想マシンの名前を指定します。
    3
    BackupStorageLocation CR の名前を指定します。
  2. Backup CR を作成するには、次のコマンドを実行します。

    $ oc apply -f <backup_cr_file_name> 
    1
    Copy to Clipboard Toggle word wrap
    1
    Backup CR ファイルの名前を指定します。
4.13.1.4. 1 つの仮想マシンの復元

Backup カスタムリソース (CR) のラベルセレクターを使用して 1 つの仮想マシンをバックアップした後、Restore CR を作成してバックアップを指すように設定できます。この復元操作では、1 つの仮想マシンが復元されます。

前提条件

  • OADP Operator がインストールされている。
  • ラベルセレクターを使用して 1 つの仮想マシンをバックアップした。

手順

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

    Restore CR の例

    apiVersion: velero.io/v1
    kind: Restore
    metadata:
      name: vmrestoresingle
      namespace: openshift-adp
    spec:
      backupName: vmbackupsingle 
    1
    
      restorePVs: true
    Copy to Clipboard Toggle word wrap

    1
    1 つの仮想マシンのバックアップ名を指定します。
  2. 1 つの仮想マシンを復元するには、次のコマンドを実行します。

    $ oc apply -f <restore_cr_file_name> 
    1
    Copy to Clipboard Toggle word wrap
    1
    Restore CR ファイルの名前を指定します。
4.13.1.5. 複数の仮想マシンのバックアップから 1 つの仮想マシンを復元する

複数の仮想マシン (仮想マシン) が含まれるバックアップがあり、そのうち 1 つの仮想マシンのみを復元する場合は、Restore CR の LabelSelectors セクションを使用して、復元する仮想マシンを選択できます。確実に仮想マシンにアタッチされた永続ボリューム要求 (PVC) が正しく復元され、復元された仮想マシンが Provisioning 状態でスタックすることを回避するためには、app: <vm_name>kubevirt.io/created-by ラベルの両方を使用します。kubevirt.io/created-by ラベルと一致させるには、仮想マシンの DataVolume の UID を使用します。

前提条件

  • OADP Operator がインストールされている。
  • バックアップする必要がある仮想マシンにラベル付けした。
  • 複数の仮想マシンのバックアップがある。

手順

  1. 多数の仮想マシンのバックアップを作成する前に、次のコマンドを実行して仮想マシンにラベルが付けられていることを確認します。

    $ oc label vm <vm_name> app=<vm_name> -n openshift-adp
    Copy to Clipboard Toggle word wrap
  2. 次の例に示すように、Restore CR でラベルセレクターを設定します。

    Restore CR の例

    apiVersion: velero.io/v1
    kind: Restore
    metadata:
      name: singlevmrestore
      namespace: openshift-adp
    spec:
      backupName: multiplevmbackup
      restorePVs: true
      LabelSelectors:
        - matchLabels:
            kubevirt.io/created-by: <datavolume_uid> 
    1
    
        - matchLabels:
            app: <vm_name> 
    2
    Copy to Clipboard Toggle word wrap

    1
    復元する仮想マシンの DataVolume の UID を指定します。たとえば、b6…​53a-ddd7-4d9d-9407-a0c…​e5 です。
    2
    復元する仮想マシンの名前を指定します。たとえば、test-vm です。
  3. 仮想マシンを復元するには、次のコマンドを実行します。

    $ oc apply -f <restore_cr_file_name> 
    1
    Copy to Clipboard Toggle word wrap
    1
    Restore CR ファイルの名前を指定します。
4.13.1.6. クライアントバースト設定と 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 がインストールされている。

手順

  • 次の例に示すように、DPA の client-burst フィールドと client-qps フィールドを設定します。

    Data Protection Application の例

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: test-dpa
      namespace: openshift-adp
    spec:
      backupLocations:
        - name: default
          velero:
            config:
              insecureSkipTLSVerify: "true"
              profile: "default"
              region: <bucket_region>
              s3ForcePathStyle: "true"
              s3Url: <bucket_url>
            credential:
              key: cloud
              name: cloud-credentials
            default: true
            objectStorage:
              bucket: <bucket_name>
              prefix: velero
            provider: aws
      configuration:
        nodeAgent:
          enable: true
          uploaderType: restic
        velero:
          client-burst: 500 
    1
    
          client-qps: 300 
    2
    
          defaultPlugins:
            - openshift
            - aws
            - kubevirt
    Copy to Clipboard Toggle word wrap

    1
    client-burst 値を指定します。この例では、client-burst フィールドは 500 に設定されています。
    2
    client-qps 値を指定します。この例では、client-qps フィールドは 300 に設定されています。
4.13.1.7. DPA の imagePullPolicy 設定のオーバーライド

OADP 1.4.0 以前では、Operator はすべてのイメージで Velero およびノードエージェント Pod の imagePullPolicy フィールドを Always に設定します。

OADP 1.4.1 以降では、Operator はまず、各イメージに sha256 または sha512 ダイジェストがあるかを確認し、それに応じて imagePullPolicy フィールドを設定します。

  • イメージにダイジェストがある場合、Operator は imagePullPolicyIfNotPresent に設定します。
  • イメージにダイジェストがない場合、Operator は imagePullPolicyAlways に設定します。

Data Protection Application (DPA) の spec.imagePullPolicy フィールドを使用して、imagePullPolicy フィールドをオーバーライドすることもできます。

前提条件

  • OADP Operator がインストールされている。

手順

  • 以下の例のように、DPA の spec.imagePullPolicy フィールドを設定します。

    Data Protection Application の例

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: test-dpa
      namespace: openshift-adp
    spec:
      backupLocations:
        - name: default
          velero:
            config:
              insecureSkipTLSVerify: "true"
              profile: "default"
              region: <bucket_region>
              s3ForcePathStyle: "true"
              s3Url: <bucket_url>
            credential:
              key: cloud
              name: cloud-credentials
            default: true
            objectStorage:
              bucket: <bucket_name>
              prefix: velero
            provider: aws
      configuration:
        nodeAgent:
          enable: true
          uploaderType: kopia
        velero:
          defaultPlugins:
            - openshift
            - aws
            - kubevirt
            - csi
      imagePullPolicy: Never 
    1
    Copy to Clipboard Toggle word wrap

    1
    imagePullPolicy の値を指定します。この例では、imagePullPolicy フィールドが Never に設定されています。
4.13.1.7.1. ノードエージェントとノードラベルの設定

Data Protection Application (DPA) は、nodeSelector フィールドを使用して、ノードエージェントを実行できるノードを選択します。nodeSelector フィールドは、推奨される形式のノード選択制約です。

手順

  1. カスタムラベルを追加して、選択した任意のノードでノードエージェントを実行します。

    $ oc label node/<node_name> node-role.kubernetes.io/nodeAgent=""
    Copy to Clipboard Toggle word wrap
    注記

    指定したラベルが、各ノードのラベルと一致する必要があります。

  2. ノードのラベル付けに使用したのと同じカスタムラベルを DPA.spec.configuration.nodeAgent.podConfig.nodeSelector フィールドで使用します。

    configuration:
      nodeAgent:
        enable: true
        podConfig:
          nodeSelector:
            node-role.kubernetes.io/nodeAgent: ""
    Copy to Clipboard Toggle word wrap

    次の例は nodeSelector のアンチパターンです。この例は、node-role.kubernetes.io/infra: ""node-role.kubernetes.io/worker: "" の両方のラベルがノードに存在しない限り機能しません。

        configuration:
          nodeAgent:
            enable: true
            podConfig:
              nodeSelector:
                node-role.kubernetes.io/infra: ""
                node-role.kubernetes.io/worker: ""
    Copy to Clipboard Toggle word wrap
4.13.1.8. 増分バックアップのサポートについて

OADP は、コンテナー化されたワークロードと OpenShift Virtualization ワークロードの両方で、block および Filesystem の永続ボリュームの増分バックアップをサポートしています。次の表は、File System Backup (FSB)、Container Storage Interface (CSI)、および CSI Data Mover のサポート状況をまとめたものです。

Expand
表4.4 コンテナー化されたワークロードの OADP バックアップのサポートマトリックス
ボリュームモードFSB - ResticFSB - KopiaCSICSI Data Mover

ファイルシステム

S [1]、I [2]

S [1]、I [2]

S [1]

S [1]、I [2]

ブロック

N [3]

N [3]

S [1]

S [1]、I [2]

Expand
表4.5 OpenShift Virtualization ワークロードの OADP バックアップのサポートマトリックス
ボリュームモードFSB - ResticFSB - KopiaCSICSI Data Mover

ファイルシステム

N [3]

N [3]

S [1]

S [1]、I [2]

ブロック

N [3]

N [3]

S [1]

S [1]、I [2]

  1. バックアップをサポート
  2. 増分バックアップをサポート
  3. サポート対象外
注記

CSI Data Mover バックアップでは、uploaderType に関係なく Kopia が使用されます。

重要

Red Hat は、OADP バージョン 1.3.0 以降と OpenShift Virtualization バージョン 4.14 以降の組み合わせのみをサポートします。

バージョン 1.3.0 より前の OADP は、OpenShift Virtualization のバックアップと復元ではサポートされていません。

4.14. 複数の Backup Storage Location を含む OADP の設定

4.14.1. 複数の Backup Storage Location を使用した OpenShift API for Data Protection (OADP) の設定

Data Protection Application (DPA) では、1 つ以上の Backup Storage Location (BSL) を設定できます。また、バックアップを作成するときに、バックアップを保存する場所を選択できます。この設定では、次の方法でバックアップを保存できます。

  • さまざまなリージョンへのバックアップ
  • 別のストレージプロバイダーへのバックアップ

OADP は、複数の BSL を設定できるように、複数の認証情報をサポートしています。そのため、どの BSL でも使用する認証情報を指定できます。

4.14.1.1. 複数の BSL を使用した DPA の設定

複数の BackupStorageLocation (BSL) CR を使用して DataProtectionApplication (DPA) カスタムリソース (CR) を設定し、クラウドプロバイダーによって提供される認証情報を指定できます。

たとえば、次の 2 つの BSL を設定したとします。

  • DPA に 1 つの BSL を設定し、それをデフォルトの BSL として設定した。
  • BackupStorageLocation CR を使用して、別の BSL を別途作成した。

DPA を通じて作成された BSL をすでにデフォルトとして設定しているため、別途作成した BSL を再度デフォルトとして設定することはできません。つまり、任意の時点において、デフォルトの BSL として設定できる BSL は 1 つだけです。

前提条件

  • OADP Operator をインストールする。
  • クラウドプロバイダーによって提供される認証情報を使用してシークレットを作成する。

手順

  1. 複数の BackupStorageLocation CR を使用して DataProtectionApplication CR を設定します。以下の例を参照してください。

    DPA の例

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    #...
    backupLocations:
      - name: aws 
    1
    
        velero:
          provider: aws
          default: true 
    2
    
          objectStorage:
            bucket: <bucket_name> 
    3
    
            prefix: <prefix> 
    4
    
          config:
            region: <region_name> 
    5
    
            profile: "default"
          credential:
            key: cloud
            name: cloud-credentials 
    6
    
      - name: odf 
    7
    
        velero:
          provider: aws
          default: false
          objectStorage:
            bucket: <bucket_name>
            prefix: <prefix>
          config:
            profile: "default"
            region: <region_name>
            s3Url: <url> 
    8
    
            insecureSkipTLSVerify: "true"
            s3ForcePathStyle: "true"
          credential:
            key: cloud
            name: <custom_secret_name_odf> 
    9
    
    #...
    Copy to Clipboard Toggle word wrap

    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 名を指定しない場合は、デフォルトの名前が使用されます。
  2. バックアップ CR で使用する BSL を指定します。以下の例を参照してください。

    バックアップ CR の例

    apiVersion: velero.io/v1
    kind: Backup
    # ...
    spec:
      includedNamespaces:
      - <namespace> 
    1
    
      storageLocation: <backup_storage_location> 
    2
    
      defaultVolumesToFsBackup: true
    Copy to Clipboard Toggle word wrap

    1
    バックアップする namespace を指定します。
    2
    保存場所を指定します。
4.14.1.2. 2 つの BSL を使用する OADP ユースケース

このユースケースでは、2 つのクラウド認証情報を使用して、2 つの保存場所で DPA を設定します。デフォルトの BSL を使用して、データベースとともにアプリケーションをバックアップします。OADP は、バックアップリソースをデフォルトの BSL に保存します。その後、2 番目の BSL を使用してアプリケーションを再度バックアップします。

前提条件

  • OADP Operator をインストールする。
  • Backup Storage Location として、AWS S3 と Multicloud Object Gateway (MCG) の 2 つを設定する。
  • Red Hat OpenShift クラスターにデータベースがデプロイされたアプリケーションがある。

手順

  1. 次のコマンドを実行して、AWS S3 ストレージプロバイダー用の最初の Secret をデフォルト名で作成します。

    $ oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=<aws_credentials_file_name> 
    1
    Copy to Clipboard Toggle word wrap
    1
    AWS S3 のクラウド認証情報ファイルの名前を指定します。
  2. 次のコマンドを実行して、カスタム名を持つ MCG 用の 2 番目の Secret を作成します。

    $ oc create secret generic mcg-secret -n openshift-adp --from-file cloud=<MCG_credentials_file_name> 
    1
    Copy to Clipboard Toggle word wrap
    1
    MCG のクラウド認証情報ファイルの名前を指定します。mcg-secret カスタムシークレットの名前をメモします。
  3. 次の例に示すように、2 つの BSL を使用して DPA を設定します。

    DPA の例

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: two-bsl-dpa
      namespace: openshift-adp
    spec:
      backupLocations:
      - name: aws
        velero:
          config:
            profile: default
            region: <region_name> 
    1
    
          credential:
            key: cloud
            name: cloud-credentials
          default: true
          objectStorage:
            bucket: <bucket_name> 
    2
    
            prefix: velero
          provider: aws
      - name: mcg
        velero:
          config:
            insecureSkipTLSVerify: "true"
            profile: noobaa
            region: <region_name> 
    3
    
            s3ForcePathStyle: "true"
            s3Url: <s3_url> 
    4
    
          credential:
            key: cloud
            name: mcg-secret 
    5
    
          objectStorage:
            bucket: <bucket_name_mcg> 
    6
    
            prefix: velero
          provider: aws
      configuration:
        nodeAgent:
          enable: true
          uploaderType: kopia
        velero:
          defaultPlugins:
          - openshift
          - aws
    Copy to Clipboard Toggle word wrap

    1
    バケットの AWS リージョンを指定します。
    2
    AWS S3 バケット名を指定します。
    3
    MCG のドキュメントの命名規則に従って、リージョンを指定します。
    4
    MCG の S3 エンドポイントの URL を指定します。
    5
    MCG ストレージのカスタムシークレットの名前を指定します。
    6
    MCG バケット名を指定します。
  4. 次のコマンドを実行して DPA を作成します。

    $ oc create -f <dpa_file_name> 
    1
    Copy to Clipboard Toggle word wrap
    1
    設定した DPA のファイル名を指定します。
  5. 次のコマンドを実行して、DPA が調整されたことを確認します。

    $ oc get dpa -o yaml
    Copy to Clipboard Toggle word wrap
  6. 次のコマンドを実行して、BSL が使用可能であることを確認します。

    $ oc get bsl
    Copy to Clipboard Toggle word wrap

    出力例

    NAME   PHASE       LAST VALIDATED   AGE     DEFAULT
    aws    Available   5s               3m28s   true
    mcg    Available   5s               3m28s
    Copy to Clipboard Toggle word wrap

  7. デフォルトの BSL を使用してバックアップ CR を作成します。

    注記

    次の例では、バックアップ CR で storageLocation フィールドが指定されていません。

    バックアップ CR の例

    apiVersion: velero.io/v1
    kind: Backup
    metadata:
      name: test-backup1
      namespace: openshift-adp
    spec:
      includedNamespaces:
      - <mysql_namespace> 
    1
    
      defaultVolumesToFsBackup: true
    Copy to Clipboard Toggle word wrap

    1
    クラスターにインストールされているアプリケーションの namespace を指定します。
  8. 次のコマンドを実行してバックアップを作成します。

    $ oc apply -f <backup_file_name> 
    1
    Copy to Clipboard Toggle word wrap
    1
    バックアップ CR ファイルの名前を指定します。
  9. 次のコマンドを実行して、デフォルトの BSL を使用したバックアップが完了したことを確認します。

    $ oc get backups.velero.io <backup_name> -o yaml 
    1
    Copy to Clipboard Toggle word wrap
    1
    バックアップの名前を指定します。
  10. MCG を BSL として使用してバックアップ CR を作成します。次の例では、2 番目の storageLocation 値をバックアップ CR の作成時に指定していることに注意してください。

    バックアップ CR の例

    apiVersion: velero.io/v1
    kind: Backup
    metadata:
      name: test-backup1
      namespace: openshift-adp
    spec:
      includedNamespaces:
      - <mysql_namespace> 
    1
    
      storageLocation: mcg 
    2
    
      defaultVolumesToFsBackup: true
    Copy to Clipboard Toggle word wrap

    1
    クラスターにインストールされているアプリケーションの namespace を指定します。
    2
    2 番目の保存場所を指定します。
  11. 次のコマンドを実行して、2 番目のバックアップを作成します。

    $ oc apply -f <backup_file_name> 
    1
    Copy to Clipboard Toggle word wrap
    1
    バックアップ CR ファイルの名前を指定します。
  12. 次のコマンドを実行して、保存場所が MCG であるバックアップが完了したことを確認します。

    $ oc get backups.velero.io <backup_name> -o yaml 
    1
    Copy to Clipboard Toggle word wrap
    1
    バックアップの名前を指定します。

4.15. 複数の Volume Snapshot Location を使用した OADP の設定

4.15.1. 複数の Volume Snapshot Location を使用した OpenShift API for Data Protection (OADP) を設定

1 つ以上の Volume Snapshot Location (VSL) を設定して、クラウドプロバイダーの別々のリージョンにスナップショットを保存できます。

4.15.1.1. 複数の VSL を使用した DPA の設定

複数の VSL を使用して DPA を設定し、クラウドプロバイダーによって提供される認証情報を指定します。スナップショットの場所が、永続ボリュームと同じリージョンにあることを確認してください。以下の例を参照してください。

DPA の例

apiVersion: oadp.openshift.io/v1alpha1
kind: DataProtectionApplication
#...
snapshotLocations:
  - velero:
      config:
        profile: default
        region: <region> 
1

      credential:
        key: cloud
        name: cloud-credentials
      provider: aws
  - velero:
      config:
        profile: default
        region: <region>
      credential:
        key: cloud
        name: <custom_credential> 
2

      provider: aws
#...
Copy to Clipboard Toggle word wrap

1
リージョンを指定します。スナップショットの場所は、永続ボリュームと同じリージョンにある必要があります。
2
カスタム認証情報の名前を指定します。

4.16. OADP のアンインストール

4.16.1. OpenShift API for Data Protection のアンインストール

OpenShift API for Data Protection (OADP) をアンインストールするには、OADP Operator を削除します。詳細は、クラスターからの Operators の削除 を参照してください。

4.17. OADP のバックアップ

4.17.1. アプリケーションのバックアップ

頻繁にバックアップを行うと、Backup Storage Location のストレージが消費される可能性があります。S3 バケットなどの非ローカルバックアップを使用する場合は、バックアップの頻度、保持期間、永続ボリューム (PV) のデータ量を確認してください。取得したバックアップはすべて期限が切れるまで残るため、スケジュールの有効期限 (TTL) 設定も確認してください。

Backup カスタムリソース (CR) を作成することで、アプリケーションをバックアップできます。詳細は、バックアップ CR の作成 を参照してください。Backup CR のさまざまなバックアップタイプは次のとおりです。

  • Backup CR は、Kubernetes リソースと内部イメージのバックアップファイルを S3 オブジェクトストレージに作成します。
  • Velero のスナップショット機能を使用して永続ボリュームに保存されているデータをバックアップすると、スナップショット関連の情報のみが Openshift オブジェクトデータとともに S3 バケットに保存されます。
  • クラウドプロバイダーがネイティブスナップショット API を備えている場合、または CSI スナップショットをサポートしている場合、Backup CR はスナップショットを作成することによって永続ボリューム (PV) をバックアップします。CSI スナップショットの操作の詳細は、CSI スナップショットを使用した永続ボリュームのバックアップ を参照してください。

基盤となるストレージまたはバックアップバケットが同じクラスターの一部である場合、障害発生時にデータが失われる可能性があります。

CSI ボリュームスナップショットの詳細は、CSI ボリュームスナップショット を参照してください。

重要

オブジェクトストレージのバケット作成を自動化する CloudStorage API は、テクノロジープレビュー機能のみです。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。

Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、以下のリンクを参照してください。

注記

CloudStorage API は、CloudStorage オブジェクトを使用しており、OADP で CloudStorage API を使用して BackupStorageLocation として使用する S3 バケットを自動的に作成するためのテクノロジープレビュー機能です。

CloudStorage API は、既存の S3 バケットを指定して BackupStorageLocation オブジェクトを手動作成することをサポートしています。現在、S3 バケットを自動的に作成する CloudStorage API は、AWS S3 ストレージに対してのみ有効です。

PodVolumeRestore が …​/.snapshot: read-only file system エラーで失敗する

…/.snapshot ディレクトリーは、複数の NFS サーバーによって使用されるスナップショットコピーディレクトリーです。このディレクトリーにはデフォルトで読み取り専用アクセスが設定されているため、Velero はこのディレクトリーに復元できません。

Velero に .snapshot ディレクトリーへの書き込みアクセス権を付与しないでください。また、このディレクトリーへのクライアントアクセスを無効にしてください。

重要

OpenShift API for Data Protection (OADP) は、他のソフトウェアで作成されたボリュームスナップショットのバックアップをサポートしていません。

4.17.1.1. バックアップと復元を実行する前にリソースをプレビューする

OADP は、タイプ、namespace、またはラベルに基づいてアプリケーションリソースをバックアップします。そのため、バックアップが完了した後にリソースを確認できます。同様に、復元操作が完了した後も、namespace、永続ボリューム (PV)、またはラベルに基づいて、復元されたオブジェクトを確認できます。事前にリソースをプレビューするには、バックアップおよび復元操作のドライランを実行します。

前提条件

  • OADP Operator がインストールされている。

手順

  1. 実際のバックアップを実行する前に、バックアップに含まれるリソースをプレビューするには、次のコマンドを実行します。

    $ velero backup create <backup-name> --snapshot-volumes false 
    1
    Copy to Clipboard Toggle word wrap
    1
    --snapshot-volumes パラメーターの値を false に指定します。
  2. バックアップリソースの詳細を確認するには、次のコマンドを実行します。

    $ velero describe backup <backup_name> --details 
    1
    Copy to Clipboard Toggle word wrap
    1
    バックアップの名前を指定します。
  3. 実際の復元を実行する前に、復元に含まれるリソースをプレビューするには、次のコマンドを実行します。

    $ velero restore create --from-backup <backup-name> 
    1
    Copy to Clipboard Toggle word wrap
    1
    バックアップリソースを確認するために、作成したバックアップの名前を指定します。
    重要

    velero restore create コマンドは、クラスター内に復元リソースを作成します。リソースを確認した後、復元中に作成されたリソースを削除する必要があります。

  4. 復元リソースの詳細を確認するには、次のコマンドを実行します。

    $ velero describe restore <restore_name> --details 
    1
    Copy to Clipboard Toggle word wrap
    1
    復元の名前を指定します。

バックアップ操作の前または後にコマンドを実行するためのバックアップフックを作成できます。バックアップフックの作成 を参照してください。

Backup CR の代わりに Schedule CR を作成することにより、バックアップをスケジュールできます。Schedule CR を使用したバックアップのスケジュール設定 を参照してください。

4.17.1.2. 既知の問題

OpenShift Container Platform 4.16 は、Restic 復元プロセス中に Pod の readiness を妨げる可能性がある Pod Security Admission (PSA) ポリシーを強制します。 

この問題は OADP 1.1.6 および OADP 1.2.2 リリースで解決されており、これらのリリースにアップグレードすることが推奨されます。

詳細は、PSA ポリシーの変更により、OCP 4.15 で部分的に Restic 復元が失敗する を参照してください。

4.17.2. バックアップ CR の作成

Backup カスタムリソース (CR) を作成して、Kubernetes イメージ、内部イメージ、および永続ボリューム (PV) をバックアップします。

前提条件

  • OpenShift API for Data Protection (OADP) Operator をインストールしている。
  • DataProtectionApplication CR が Ready 状態である。
  • バックアップロケーションの前提条件:

    • Velero 用に S3 オブジェクトストレージを設定する必要があります。
    • DataProtectionApplication CR でバックアップの場所を設定する必要があります。
  • スナップショットの場所の前提条件:

    • クラウドプロバイダーには、ネイティブスナップショット API が必要であるか、Container Storage Interface (CSI) スナップショットをサポートしている必要があります。
    • CSI スナップショットの場合、CSI ドライバーを登録するために VolumeSnapshotClass CR を作成する必要があります。
    • DataProtectionApplication CR でボリュームの場所を設定する必要があります。

手順

  1. 次のコマンドを入力して、backupStorageLocations CR を取得します。

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

    出力例

    NAMESPACE       NAME              PHASE       LAST VALIDATED   AGE   DEFAULT
    openshift-adp   velero-sample-1   Available   11s              31m
    Copy to Clipboard Toggle word wrap

  2. 次の例のように、Backup CR を作成します。

    apiVersion: velero.io/v1
    kind: Backup
    metadata:
      name: <backup>
      labels:
        velero.io/storage-location: default
      namespace: openshift-adp
    spec:
      hooks: {}
      includedNamespaces:
      - <namespace> 
    1
    
      includedResources: [] 
    2
    
      excludedResources: [] 
    3
    
      storageLocation: <velero-sample-1> 
    4
    
      ttl: 720h0m0s 
    5
    
      labelSelector: 
    6
    
        matchLabels:
          app: <label_1>
          app: <label_2>
          app: <label_3>
      orLabelSelectors: 
    7
    
      - matchLabels:
          app: <label_1>
          app: <label_2>
          app: <label_3>
    Copy to Clipboard Toggle word wrap
    1
    バックアップする namespace の配列を指定します。
    2
    オプション: バックアップに含めるリソースの配列を指定します。リソースは、短縮名 ('pods' は 'po' など) または完全修飾名で指定できます。指定しない場合、すべてのリソースが含まれます。
    3
    オプション: バックアップから除外するリソースの配列を指定します。リソースは、短縮名 ('pods' は 'po' など) または完全修飾名で指定できます。
    4
    backupStorageLocations CR の名前を指定します。
    5
    ttl フィールドは、作成されたバックアップの保持期間とバックアップされたデータのバックアップを定義します。たとえば、バックアップツールとして Restic を使用している場合、バックアップの有効期限が切れるまで、バックアップされたデータ項目と永続ボリューム(PV)のデータコンテンツが保存されます。ただし、このデータを保存すると、ターゲットのバックアップの場所により多くの領域が使用されます。追加のストレージは、頻繁なバックアップで消費されます。バックアップは、他の期限切れでないバックアップがタイムアウトする前でも作成されます。
    6
    指定したラベルを すべて 持つバックアップリソースの {key,value} ペアのマップ。
    7
    指定したラベルを 1 つ以上 持つバックアップリソースの {key,value} ペアのマップ。

検証

  • Backup CR のステータスが Completed したことを確認します。

    $ oc get backups.velero.io -n openshift-adp <backup> -o jsonpath='{.status.phase}'
    Copy to Clipboard Toggle word wrap

4.17.3. CSI スナップショットを使用した永続ボリュームのバックアップ

Backup CR を作成する前に、クラウドストレージの VolumeSnapshotClass カスタムリソース (CR) を編集して、Container Storage Interface (CSI) スナップショットを使用して永続ボリュームをバックアップします。CSI ボリュームスナップショット を参照してください。

詳細は、バックアップ CR の作成 を参照してください。

4.17.3.1. CSI スナップショットを使用した永続ボリュームのバックアップ

前提条件

  • クラウドプロバイダーは、CSI スナップショットをサポートする必要があります。
  • DataProtectionApplication CR で CSI を有効にする必要があります。

手順

  • metadata.labels.velero.io/csi-volumesnapshot-class: "true" のキー: 値ペアを VolumeSnapshotClass CR に追加します。

    設定ファイルのサンプル

    apiVersion: snapshot.storage.k8s.io/v1
    kind: VolumeSnapshotClass
    metadata:
      name: <volume_snapshot_class_name>
      labels:
        velero.io/csi-volumesnapshot-class: "true" 
    1
    
      annotations:
        snapshot.storage.kubernetes.io/is-default-class: true 
    2
    
    driver: <csi_driver>
    deletionPolicy: <deletion_policy_type> 
    3
    Copy to Clipboard Toggle word wrap

    1
    true に設定する必要があります。
    2
    同じドライバーを使用して別のクラスターでこのボリュームを復元する場合は、snapshot.storage.kubernetes.io/is-default-class パラメーターを true ではなく false に設定してください。そうしないと、復元が部分的に失敗します。
    3
    OADP は、CSI および Data Mover のバックアップと復元に対して、Retain および Delete 削除ポリシータイプをサポートしています。

次のステップ

  • これで、Backup CR を作成できます。

4.17.4. File System Backup を使用してアプリケーションをバックアップする: Kopia または Restic

OADP を使用して、Pod にアタッチされている Kubernetes ボリュームを、そのボリュームのファイルシステムからバックアップおよび復元できます。このプロセスは、File System Backup (FSB) または Pod Volume Backup (PVB) と呼ばれます。これは、オープンソースのバックアップツール Restic または Kopia のモジュールを使用して実行できます。

クラウドプロバイダーがスナップショットをサポートしていない場合、またはアプリケーションが NFS データボリューム上にある場合は、FSB を使用してバックアップを作成できます。

注記

Restic は、デフォルトで OADP Operator によってインストールされます。必要に応じて、代わりに Kopia をインストールすることもできます。

FSB と OADP の統合により、ほぼすべてのタイプの Kubernetes ボリュームをバックアップおよび復元するためのソリューションが提供されます。この統合は OADP の追加機能であり、既存の機能を置き換えるものではありません。

Backup カスタムリソース (CR) を編集して、Kopia または Restic で Kubernetes リソース、内部イメージ、および永続ボリュームをバックアップします。

DataProtectionApplication CR でスナップショットの場所を指定する必要はありません。

注記

OADP バージョン 1.3 以降では、アプリケーションのバックアップに Kopia または Restic を使用できます。

ビルトイン DataMover の場合は、Kopia を使用する必要があります。

OADP バージョン 1.2 以前の場合、アプリケーションのバックアップには Restic のみ使用できます。

重要

FSB は、hostPath ボリュームのバックアップをサポートしません。詳細は、FSB の制限事項 を参照してください。

PodVolumeRestore が …​/.snapshot: read-only file system エラーで失敗する

…/.snapshot ディレクトリーは、複数の NFS サーバーによって使用されるスナップショットコピーディレクトリーです。このディレクトリーにはデフォルトで読み取り専用アクセスが設定されているため、Velero はこのディレクトリーに復元できません。

Velero に .snapshot ディレクトリーへの書き込みアクセス権を付与しないでください。また、このディレクトリーへのクライアントアクセスを無効にしてください。

4.17.4.1. File System Backup を使用したアプリケーションのバックアップ

前提条件

  • OpenShift API for Data Protection (OADP) Operator をインストールしている。
  • DataProtectionApplication CR で spec.configuration.nodeAgent.enablefalse に設定して、デフォルトの nodeAgent インストールを無効にしていない。
  • DataProtectionApplication CR で spec.configuration.nodeAgent.uploaderTypekopia または restic に設定して、Kopia または Restic をアップローダーとして選択している。
  • DataProtectionApplication CR が Ready 状態である。

手順

  • 次の例のように、Backup CR を作成します。

    apiVersion: velero.io/v1
    kind: Backup
    metadata:
      name: <backup>
      labels:
        velero.io/storage-location: default
      namespace: openshift-adp
    spec:
      defaultVolumesToFsBackup: true 
    1
    
    ...
    Copy to Clipboard Toggle word wrap
    1
    OADP バージョン 1.2 以降では、defaultVolumesToFsBackup: true 設定を spec ブロック内に追加します。OADP バージョン 1.1 では、defaultVolumesToRestic: true を追加します。

4.17.5. バックアップフックの作成

バックアップを実行する際に、バックアップされる Pod に基づいて、Pod 内のコンテナーで実行するコマンドを 1 つ以上指定できます。

コマンドは、カスタムアクション処理の前 (プリ フック)、またはすべてのカスタムアクションが完了し、カスタムアクションで指定された追加アイテムがバックアップされた後 (ポスト フック) に実行するように設定できます。

Backup カスタムリソース (CR) を編集して、Pod 内のコンテナーでコマンドを実行するためのバックアップフックを作成します。

手順

  • 次の例のように、Backup CR の spec.hooks ブロックにフックを追加します。

    apiVersion: velero.io/v1
    kind: Backup
    metadata:
      name: <backup>
      namespace: openshift-adp
    spec:
      hooks:
        resources:
          - name: <hook_name>
            includedNamespaces:
            - <namespace> 
    1
    
            excludedNamespaces: 
    2
    
            - <namespace>
            includedResources: []
            - pods 
    3
    
            excludedResources: [] 
    4
    
            labelSelector: 
    5
    
              matchLabels:
                app: velero
                component: server
            pre: 
    6
    
              - exec:
                  container: <container> 
    7
    
                  command:
                  - /bin/uname 
    8
    
                  - -a
                  onError: Fail 
    9
    
                  timeout: 30s 
    10
    
            post: 
    11
    
    ...
    Copy to Clipboard Toggle word wrap
    1
    オプション: フックが適用される namespace を指定できます。この値が指定されていない場合、フックはすべての namespace に適用されます。
    2
    オプション: フックが適用されない namespace を指定できます。
    3
    現在、Pod は、フックを適用できる唯一のサポート対象リソースです。
    4
    オプション: フックが適用されないリソースを指定できます。
    5
    オプション: このフックは、ラベルに一致するオブジェクトにのみ適用されます。この値が指定されていない場合、フックはすべてのオブジェクトに適用されます。
    6
    バックアップの前に実行するフックの配列。
    7
    オプション: コンテナーが指定されていない場合、コマンドは Pod の最初のコンテナーで実行されます。
    8
    これは、追加される init コンテナーのエントリーポイントです。
    9
    エラー処理に許可される値は、FailContinue です。デフォルトは Fail です。
    10
    オプション: コマンドの実行を待機する時間。デフォルトは 30s です。
    11
    このブロックでは、バックアップ後に実行するフックの配列を、バックアップ前のフックと同じパラメーターで定義します。

4.17.6. Schedule CR を使用したバックアップのスケジュール設定

スケジュール操作を使用すると、Cron 式で指定された特定の時間にデータのバックアップを作成できます。

Backup CR の代わりに Schedule カスタムリソース (CR) を作成して、バックアップをスケジュールします。

警告

バックアップスケジュールでは、別のバックアップが作成される前にバックアップを数量するための時間を十分確保してください。

たとえば、namespace のバックアップに通常 10 分かかる場合は、15 分ごとよりも頻繁にバックアップをスケジュールしないでください。

前提条件

  • OpenShift API for Data Protection (OADP) Operator をインストールしている。
  • DataProtectionApplication CR が Ready 状態である。

手順

  1. backupStorageLocations CR を取得します。

    $ oc get backupStorageLocations -n openshift-adp
    Copy to Clipboard Toggle word wrap

    出力例

    NAMESPACE       NAME              PHASE       LAST VALIDATED   AGE   DEFAULT
    openshift-adp   velero-sample-1   Available   11s              31m
    Copy to Clipboard Toggle word wrap

  2. 次の例のように、Schedule CR を作成します。

    $ cat << EOF | oc apply -f -
    apiVersion: velero.io/v1
    kind: Schedule
    metadata:
      name: <schedule>
      namespace: openshift-adp
    spec:
      schedule: 0 7 * * * 
    1
    
      template:
        hooks: {}
        includedNamespaces:
        - <namespace> 
    2
    
        storageLocation: <velero-sample-1> 
    3
    
        defaultVolumesToFsBackup: true 
    4
    
        ttl: 720h0m0s 
    5
    
    EOF
    Copy to Clipboard Toggle word wrap
    注記

    特定の間隔でバックアップをスケジュールするには、次の形式で <duration_in_minutes> を入力します。

      schedule: "*/10 * * * *"
    Copy to Clipboard Toggle word wrap

    引用符 (" ") の間に分の値を入力します。

    1
    バックアップをスケジュールするための cron 式。たとえば、毎日 7:00 にバックアップを実行する場合は 0 7 * * * です。
    2
    バックアップを作成する namespace の配列。
    3
    backupStorageLocations CR の名前。
    4
    オプション: OADP バージョン 1.2 以降では、Restic を使用してボリュームのバックアップを実行するときに、defaultVolumesToFsBackup: true キーと値のペアを設定に追加します。OADP バージョン 1.1 では、Restic でボリュームをバックアップするときに、defaultVolumesToRestic: true のキーと値のペアを追加します。
    5
    ttl フィールドは、作成されたバックアップの保持期間とバックアップされたデータのバックアップを定義します。たとえば、バックアップツールとして Restic を使用している場合、バックアップの有効期限が切れるまで、バックアップされたデータ項目と永続ボリューム(PV)のデータコンテンツが保存されます。ただし、このデータを保存すると、ターゲットのバックアップの場所により多くの領域が使用されます。追加のストレージは、頻繁なバックアップで消費されます。バックアップは、他の期限切れでないバックアップがタイムアウトする前でも作成されます。

検証

  • スケジュールされたバックアップの実行後に、Schedule CR のステータスが Completed となっていることを確認します。

    $ oc get schedule -n openshift-adp <schedule> -o jsonpath='{.status.phase}'
    Copy to Clipboard Toggle word wrap

4.17.7. バックアップの削除

バックアップを削除するには、次の手順で説明するように、DeleteBackupRequest カスタムリソース (CR) を作成するか、velero backup delete コマンドを実行します。

ボリュームバックアップアーティファクトは、バックアップ方法に応じて、異なるタイミングで削除されます。

  • Restic: アーティファクトは、バックアップが削除された後、次のフルメンテナンスサイクル中に削除されます。
  • Container Storage Interface (CSI): アーティファクトは、バックアップが削除されると直ちに削除されます。
  • Kopia: アーティファクトは、バックアップが削除されてから、Kopia リポジトリーのフルメンテナンスサイクルが 3 回実行された後に削除されます。
4.17.7.1. DeleteBackupRequest CR を作成してバックアップを削除する

DeleteBackupRequest カスタムリソース (CR) を作成することで、バックアップを削除できます。

前提条件

  • アプリケーションのバックアップを実行した。

手順

  1. DeleteBackupRequest CR マニフェストファイルを作成します。

    apiVersion: velero.io/v1
    kind: DeleteBackupRequest
    metadata:
      name: deletebackuprequest
      namespace: openshift-adp
    spec:
      backupName: <backup_name> 
    1
    Copy to Clipboard Toggle word wrap
    1
    バックアップの名前を指定します。
  2. DeleteBackupRequest CR を適用してバックアップを削除します。

    $ oc apply -f <deletebackuprequest_cr_filename>
    Copy to Clipboard Toggle word wrap
4.17.7.2. Velero CLI を使用してバックアップを削除する

Velero CLI を使用してバックアップを削除できます。

前提条件

  • アプリケーションのバックアップを実行した。
  • Velero CLI がダウンロード済みであり、クラスター内の Velero バイナリーにアクセスできる。

手順

  • バックアップを削除するには、次の Velero コマンドを実行します。

    $ velero backup delete <backup_name> -n openshift-adp 
    1
    Copy to Clipboard Toggle word wrap
    1
    バックアップの名前を指定します。
4.17.7.3. Kopia リポジトリーのメンテナンスについて

Kopia リポジトリーのメンテナンスには次の 2 種類があります。

クイックメンテナンス
  • インデックス Blob の数 (n) を抑えるために 1 時間ごとに実行されます。インデックスの数が多いと、Kopia 操作のパフォーマンスに悪影響が及びます。
  • 同じメタデータの別のコピーが存在することを確認してから、リポジトリーからメタデータを削除します。
フルメンテナンス
  • 不要になったリポジトリーコンテンツのガベージコレクションを実行するために、24 時間ごとに実行されます。
  • フルメンテナンスのタスクである snapshot-gc が、スナップショットマニフェストからアクセスできなくなったすべてのファイルとディレクトリーリストを検索し、それらを削除済みとしてマークします。
  • フルメンテナンスは、クラスター内でアクティブなすべてのスナップショット内のすべてのディレクトリーをスキャンする必要があるため、リソースを大量に消費する操作です。
4.17.7.3.1. OADP における Kopia のメンテナンス

repo-maintain-job ジョブは、次の例に示すように、OADP がインストールされている namespace で実行されます。

pod/repo-maintain-job-173...2527-2nbls                             0/1     Completed   0          168m
pod/repo-maintain-job-173....536-fl9tm                             0/1     Completed   0          108m
pod/repo-maintain-job-173...2545-55ggx                             0/1     Completed   0          48m
Copy to Clipboard Toggle word wrap

repo-maintain-job のログで、バックアップオブジェクトストレージ内のクリーンアップとアーティファクトの削除に関する詳細を確認できます。次の例に示すように、repo-maintain-job では、次のフルメンテナンスサイクルの予定日時に関する情報を確認できます。

not due for full maintenance cycle until 2024-00-00 18:29:4
Copy to Clipboard Toggle word wrap
重要

バックアップオブジェクトストレージからオブジェクトを削除するには、フルメンテナンスサイクルを 3 回正常に実行する必要があります。つまり、バックアップオブジェクトストレージ内のすべてのアーティファクトが削除されるまでに、最大 72 時間かかると予想されます。

4.17.7.4. バックアップリポジトリーの削除

バックアップを削除し、関連するアーティファクトを削除する Kopia リポジトリーのメンテナンスサイクルが完了すると、そのバックアップはどのメタデータオブジェクトやマニフェストオブジェクトからも参照されなくなります。その後、backuprepository カスタムリソース (CR) を削除して、バックアップ削除プロセスを完了できます。

前提条件

  • アプリケーションのバックアップを削除した。
  • バックアップが削除されてから最大 72 時間待機した。この時間枠を確保することで、Kopia がリポジトリーのメンテナンスサイクルを実行できるようにします。

手順

  1. バックアップのバックアップリポジトリー CR の名前を取得するために、次のコマンドを実行します。

    $ oc get backuprepositories.velero.io -n openshift-adp
    Copy to Clipboard Toggle word wrap
  2. バックアップリポジトリー CR を削除するために、次のコマンドを実行します。

    $ oc delete backuprepository <backup_repository_name> -n openshift-adp 
    1
    Copy to Clipboard Toggle word wrap
    1
    前のステップのバックアップリポジトリーの名前を指定します。

4.17.8. Kopia について

Kopia は、高速かつセキュアなオープンソースのバックアップおよび復元ツールです。これを使用して、データの暗号化されたスナップショットを作成し、そのスナップショットを選択したリモートストレージまたはクラウドストレージに保存できます。

Kopia は、ネットワークおよびローカルストレージの場所、および多くのクラウドまたはリモートストレージの場所をサポートしています。以下はその一部です。

  • Amazon S3 および S3 と互換性のあるクラウドストレージ
  • Azure Blob Storage
  • Google Cloud Storage プラットフォーム

Kopia は、スナップショットにコンテンツアドレスを指定できるストレージを使用します。

  • スナップショットは常に増分されます。すでに以前のスナップショットに含まれているデータは、リポジトリーに再アップロードされません。リポジトリーに再度アップロードされるのは、ファイルが変更されたときだけです。
  • 保存されたデータは重複排除されます。同じファイルのコピーが複数存在する場合、そのうちの 1 つだけが保存されます。
  • ファイルが移動された場合、またはファイルの名前が変更された場合、Kopia はそれらが同じコンテンツであることを認識し、それらを再度アップロードしません。
4.17.8.1. OADP と Kopia の統合

OADP 1.3 は、Pod ボリュームバックアップのバックアップメカニズムとして、Restic に加えて Kopia をサポートします。インストール時に、DataProtectionApplication カスタムリソース (CR) の uploaderType フィールドを設定して、どちらかを選択する必要があります。使用できる値は、restic または kopia です。uploaderType を指定しない場合、OADP 1.3 はデフォルトで Kopia をバックアップメカニズムとして使用します。データは統合リポジトリーに書き込まれ、統合リポジトリーから読み取られます。

重要

Kopia クライアントを使用して Kopia バックアップリポジトリーを変更することはサポートされていません。変更すると、Kopia バックアップの整合性に影響が生じる可能性があります。OADP は Kopia リポジトリーへの直接接続をサポートしておらず、ベストエフォートでのみサポートを提供できます。

次の例は、Kopia を使用するように設定された DataProtectionApplication CR を示しています。

apiVersion: oadp.openshift.io/v1alpha1
kind: DataProtectionApplication
metadata:
  name: dpa-sample
spec:
  configuration:
    nodeAgent:
      enable: true
      uploaderType: kopia
# ...
Copy to Clipboard Toggle word wrap

4.18. OADP の復元

4.18.1. アプリケーションの復元

アプリケーションのバックアップを復元するには、Restore カスタムリソース (CR) を作成します。復元 CR の作成 を参照してください。

Restore CR を編集することで、Pod 内のコンテナーでコマンドを実行するための復元フックを作成できます。復元フックの作成 を参照してください。

4.18.1.1. バックアップと復元を実行する前にリソースをプレビューする

OADP は、タイプ、namespace、またはラベルに基づいてアプリケーションリソースをバックアップします。そのため、バックアップが完了した後にリソースを確認できます。同様に、復元操作が完了した後も、namespace、永続ボリューム (PV)、またはラベルに基づいて、復元されたオブジェクトを確認できます。事前にリソースをプレビューするには、バックアップおよび復元操作のドライランを実行します。

前提条件

  • OADP Operator がインストールされている。

手順

  1. 実際のバックアップを実行する前に、バックアップに含まれるリソースをプレビューするには、次のコマンドを実行します。

    $ velero backup create <backup-name> --snapshot-volumes false 
    1
    Copy to Clipboard Toggle word wrap
    1
    --snapshot-volumes パラメーターの値を false に指定します。
  2. バックアップリソースの詳細を確認するには、次のコマンドを実行します。

    $ velero describe backup <backup_name> --details 
    1
    Copy to Clipboard Toggle word wrap
    1
    バックアップの名前を指定します。
  3. 実際の復元を実行する前に、復元に含まれるリソースをプレビューするには、次のコマンドを実行します。

    $ velero restore create --from-backup <backup-name> 
    1
    Copy to Clipboard Toggle word wrap
    1
    バックアップリソースを確認するために、作成したバックアップの名前を指定します。
    重要

    velero restore create コマンドは、クラスター内に復元リソースを作成します。リソースを確認した後、復元中に作成されたリソースを削除する必要があります。

  4. 復元リソースの詳細を確認するには、次のコマンドを実行します。

    $ velero describe restore <restore_name> --details 
    1
    Copy to Clipboard Toggle word wrap
    1
    復元の名前を指定します。
4.18.1.2. Restore CR の作成

Restore CR を作成して、Backup カスタムリソース (CR) を復元します。

azurefile-csi ストレージクラスを使用するステートフルアプリケーションを復元すると、復元操作が Finalizing フェーズのままになります。

前提条件

  • OpenShift API for Data Protection (OADP) Operator をインストールしている。
  • DataProtectionApplication CR が Ready 状態である。
  • Velero Backup CR がある。
  • 永続ボリューム (PV) の容量は、バックアップ時に要求されたサイズと一致する必要があります。必要に応じて、要求されたサイズを調整します。

手順

  1. 次の例のように、Restore CR を作成します。

    apiVersion: velero.io/v1
    kind: Restore
    metadata:
      name: <restore>
      namespace: openshift-adp
    spec:
      backupName: <backup> 
    1
    
      includedResources: [] 
    2
    
      excludedResources:
      - nodes
      - events
      - events.events.k8s.io
      - backups.velero.io
      - restores.velero.io
      - resticrepositories.velero.io
      restorePVs: true 
    3
    Copy to Clipboard Toggle word wrap
    1
    Backup CR の名前
    2
    オプション: 復元プロセスに含めるリソースの配列を指定します。リソースは、短縮名 (podspo など) または完全修飾名で指定できます。指定しない場合、すべてのリソースが含まれます。
    3
    オプション: restorePVs パラメーターを false に設定すると、コンテナーストレージインターフェイス (CSI) スナップショットの VolumeSnapshot から、または VolumeSnapshotLocation が設定されている場合はネイティブスナップショットからの PersistentVolumes の復元をオフにすることができます。
  2. 次のコマンドを入力して、Restore CR のステータスが Completed であることを確認します。

    $ oc get restores.velero.io -n openshift-adp <restore> -o jsonpath='{.status.phase}'
    Copy to Clipboard Toggle word wrap
  3. 次のコマンドを入力して、バックアップリソースが復元されたことを確認します。

    $ oc get all -n <namespace> 
    1
    Copy to Clipboard Toggle word wrap
    1
    バックアップした namespace。
  4. ボリュームを使用して DeploymentConfig を復元する場合、または復元後のフックを使用する場合は、次のコマンドを入力して dc-post-restore.sh クリーンアップスクリプトを実行します。

    $ bash dc-restic-post-restore.sh -> dc-post-restore.sh
    Copy to Clipboard Toggle word wrap
    注記

    復元プロセス中に、OADP Velero プラグインは DeploymentConfig オブジェクトをスケールダウンし、Pod をスタンドアロン Pod として復元します。これは、クラスターが復元された DeploymentConfig Pod を復元時にすぐに削除することを防ぎ、復元フックと復元後のフックが復元された Pod 上でアクションを完了できるようにするために行われます。以下に示すクリーンアップスクリプトは、これらの切断された Pod を削除し、DeploymentConfig オブジェクトを適切な数のレプリカにスケールアップします。

    dc-restic-post-restore.sh → dc-post-restore.sh クリーンアップスクリプト

    #!/bin/bash
    set -e
    
    # if sha256sum exists, use it to check the integrity of the file
    if command -v sha256sum >/dev/null 2>&1; then
      CHECKSUM_CMD="sha256sum"
    else
      CHECKSUM_CMD="shasum -a 256"
    fi
    
    label_name () {
        if [ "${#1}" -le "63" ]; then
    	echo $1
    	return
        fi
        sha=$(echo -n $1|$CHECKSUM_CMD)
        echo "${1:0:57}${sha:0:6}"
    }
    
    if [[ $# -ne 1 ]]; then
        echo "usage: ${BASH_SOURCE} restore-name"
        exit 1
    fi
    
    echo "restore: $1"
    
    label=$(label_name $1)
    echo "label:   $label"
    
    echo Deleting disconnected restore pods
    oc delete pods --all-namespaces -l oadp.openshift.io/disconnected-from-dc=$label
    
    for dc in $(oc get dc --all-namespaces -l oadp.openshift.io/replicas-modified=$label -o jsonpath='{range .items[*]}{.metadata.namespace}{","}{.metadata.name}{","}{.metadata.annotations.oadp\.openshift\.io/original-replicas}{","}{.metadata.annotations.oadp\.openshift\.io/original-paused}{"\n"}')
    do
        IFS=',' read -ra dc_arr <<< "$dc"
        if [ ${#dc_arr[0]} -gt 0 ]; then
    	echo Found deployment ${dc_arr[0]}/${dc_arr[1]}, setting replicas: ${dc_arr[2]}, paused: ${dc_arr[3]}
    	cat <<EOF | oc patch dc  -n ${dc_arr[0]} ${dc_arr[1]} --patch-file /dev/stdin
    spec:
      replicas: ${dc_arr[2]}
      paused: ${dc_arr[3]}
    EOF
        fi
    done
    Copy to Clipboard Toggle word wrap

4.18.1.3. 復元フックの作成

Restore カスタムリソース (CR) を編集して、Pod 内のコンテナーでコマンドを実行する復元フックを作成します。

2 種類の復元フックを作成できます。

  • init フックは、init コンテナーを Pod に追加して、アプリケーションコンテナーが起動する前にセットアップタスクを実行します。

    Restic バックアップを復元する場合は、復元フック init コンテナーの前に restic-wait init コンテナーが追加されます。

  • exec フックは、復元された Pod のコンテナーでコマンドまたはスクリプトを実行します。

手順

  • 次の例のように、Restore CR の spec.hooks ブロックにフックを追加します。

    apiVersion: velero.io/v1
    kind: Restore
    metadata:
      name: <restore>
      namespace: openshift-adp
    spec:
      hooks:
        resources:
          - name: <hook_name>
            includedNamespaces:
            - <namespace> 
    1
    
            excludedNamespaces:
            - <namespace>
            includedResources:
            - pods 
    2
    
            excludedResources: []
            labelSelector: 
    3
    
              matchLabels:
                app: velero
                component: server
            postHooks:
            - init:
                initContainers:
                - name: restore-hook-init
                  image: alpine:latest
                  volumeMounts:
                  - mountPath: /restores/pvc1-vm
                    name: pvc1-vm
                  command:
                  - /bin/ash
                  - -c
                timeout: 
    4
    
            - exec:
                container: <container> 
    5
    
                command:
                - /bin/bash 
    6
    
                - -c
                - "psql < /backup/backup.sql"
                waitTimeout: 5m 
    7
    
                execTimeout: 1m 
    8
    
                onError: Continue 
    9
    Copy to Clipboard Toggle word wrap
    1
    オプション: フックが適用される namespace の配列。この値が指定されていない場合、フックはすべての namespace に適用されます。
    2
    現在、Pod は、フックを適用できる唯一のサポート対象リソースです。
    3
    オプション: このフックは、ラベルセレクターに一致するオブジェクトにのみ適用されます。
    4
    オプション: Timeout は、initContainers が完了するまで Velero が待機する最大時間を指定します。
    5
    オプション: コンテナーが指定されていない場合、コマンドは Pod の最初のコンテナーで実行されます。
    6
    これは、追加される init コンテナーのエントリーポイントです。
    7
    オプション: コンテナーの準備が整うまでの待機時間。これは、コンテナーが起動して同じコンテナー内の先行するフックが完了するのに十分な長さである必要があります。設定されていない場合、復元プロセスの待機時間は無期限になります。
    8
    オプション: コマンドの実行を待機する時間。デフォルトは 30s です。
    9
    エラー処理に許可される値は、Fail および Continue です。
    • Continue: コマンドの失敗のみがログに記録されます。
    • Fail: Pod 内のコンテナーで復元フックが実行されなくなりました。Restore CR のステータスは PartiallyFailed になります。
重要

File System Backup (FSB) の復元操作中に、ImageStream を参照する Deployment リソースが適切に復元されません。FSB を実行する復元された Pod と postHook が途中で終了します。

これが発生するのは、復元操作中に、OpenShift コントローラーが Deployment リソースの spec.template.spec.containers[0].image フィールドを新しい ImageStreamTag ハッシュで更新するためです。更新により、新しい Pod のロールアウトがトリガーされ、velero が FSB と復元後のフックを実行する Pod が終了します。イメージストリームトリガーの詳細は、「イメージストリームの変更時の更新のトリガー」を参照してください。

この動作を回避するには、次の 2 段階の復元プロセスを実行します。

  1. まず、Deployment リソースを除外して復元を実行します。次に例を示します。

    $ velero restore create <RESTORE_NAME> \
      --from-backup <BACKUP_NAME> \
      --exclude-resources=deployment.apps
    Copy to Clipboard Toggle word wrap
  2. 最初の復元が成功したら、次の例のように、次のリソースを含めて 2 回目の復元を実行します。

    $ velero restore create <RESTORE_NAME> \
      --from-backup <BACKUP_NAME> \
      --include-resources=deployment.apps
    Copy to Clipboard Toggle word wrap

4.19. OADP と ROSA

4.19.1. OADP を使用して ROSA クラスター上のアプリケーションをバックアップする

Red Hat OpenShift Service on AWS (ROSA) クラスターで OpenShift API for Data Protection (OADP) を使用して、アプリケーションデータをバックアップおよび復元できます。

ROSA は、フルマネージドのターンキーアプリケーションプラットフォームであり、アプリケーションを構築してデプロイすることにより、お客様に価値を提供することに集中できます。

ROSA は、幅広い Amazon Web Services (AWS) コンピュート、データベース、分析、機械学習、ネットワーク、モバイル、およびその他のサービスとのシームレスな統合を提供し、差別化されたエクスペリエンスの構築とお客様への提供をさらに高速化します。

AWS アカウントから直接サービスをサブスクライブできます。

クラスターを作成した後、OpenShift Container Platform Web コンソールを使用して、または Red Hat OpenShift Cluster Manager を介してクラスターを操作できます。ROSA では、OpenShift API やコマンドラインインターフェイス (CLI) ツールも使用できます。

ROSA のインストールの詳細は、Red Hat OpenShift Service on AWS (ROSA) のインストールのインタラクティブな説明 を参照してください。

OpenShift API for Data Protection (OADP) をインストールする前に、OADP が Amazon Web Services API を使用できるように、OADP のロールとポリシーの認証情報を設定する必要があります。

このプロセスは次の 2 段階で実行されます。

  1. AWS 認証情報を準備します。
  2. OADP Operator をインストールし、IAM ロールを付与します。
4.19.1.1. OADP 用の AWS 認証情報を準備する

Amazon Web Services アカウントは、OpenShift API for Data Protection (OADP) インストールを受け入れるように準備および設定する必要があります。

手順

  1. 次のコマンドを実行して、以下の環境変数を作成します。

    重要

    ROSA クラスターに一致するようにクラスター名を変更し、管理者としてクラスターにログインしていることを確認します。続行する前に、すべてのフィールドが正しく出力されていることを確認します。

    $ export CLUSTER_NAME=my-cluster
    Copy to Clipboard Toggle word wrap
    • my-cluster: my-cluster を クラスター名に置き換えます。
    $ export ROSA_CLUSTER_ID=$(rosa describe cluster -c ${CLUSTER_NAME} --output json | jq -r .id)
    Copy to Clipboard Toggle word wrap
    $ export REGION=$(rosa describe cluster -c ${CLUSTER_NAME} --output json | jq -r .region.id)
    Copy to Clipboard Toggle word wrap
    $ export OIDC_ENDPOINT=$(oc get authentication.config.openshift.io cluster -o jsonpath='{.spec.serviceAccountIssuer}' | sed 's|^https://||')
    Copy to Clipboard Toggle word wrap
    $ export AWS_ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text)
    Copy to Clipboard Toggle word wrap
    $ export CLUSTER_VERSION=$(rosa describe cluster -c ${CLUSTER_NAME} -o json | jq -r .version.raw_id | cut -f -2 -d '.')
    Copy to Clipboard Toggle word wrap
    $ export ROLE_NAME="${CLUSTER_NAME}-openshift-oadp-aws-cloud-credentials"
    Copy to Clipboard Toggle word wrap
    $ export SCRATCH="/tmp/${CLUSTER_NAME}/oadp"
    Copy to Clipboard Toggle word wrap
    $ mkdir -p ${SCRATCH}
    Copy to Clipboard Toggle word wrap
    $ echo "Cluster ID: ${ROSA_CLUSTER_ID}, Region: ${REGION}, OIDC Endpoint:
      ${OIDC_ENDPOINT}, AWS Account ID: ${AWS_ACCOUNT_ID}"
    Copy to Clipboard Toggle word wrap
  2. AWS アカウントで、AWS S3 へのアクセスを許可する IAM ポリシーを作成します。

    1. 以下のコマンドを実行して、ポリシーが存在するかどうかを確認します。

      $ POLICY_ARN=$(aws iam list-policies --query "Policies[?PolicyName=='RosaOadpVer1'].{ARN:Arn}" --output text)
      Copy to Clipboard Toggle word wrap
      • RosaOadp: RosaOadp を ポリシー名に置き換えます。
    2. 次のコマンドを入力してポリシー JSON ファイルを作成し、ポリシーを作成します。

      注記

      ポリシー ARN が見つからない場合、コマンドはポリシーを作成します。ポリシー ARN がすでに存在する場合、if ステートメントはポリシーの作成を意図的にスキップします。

      $ if [[ -z "${POLICY_ARN}" ]]; then
        cat << EOF > ${SCRATCH}/policy.json
        {
        "Version": "2012-10-17",
        "Statement": [
          {
            "Effect": "Allow",
            "Action": [
              "s3:CreateBucket",
              "s3:DeleteBucket",
              "s3:PutBucketTagging",
              "s3:GetBucketTagging",
              "s3:PutEncryptionConfiguration",
              "s3:GetEncryptionConfiguration",
              "s3:PutLifecycleConfiguration",
              "s3:GetLifecycleConfiguration",
              "s3:GetBucketLocation",
              "s3:ListBucket",
              "s3:GetObject",
              "s3:PutObject",
              "s3:DeleteObject",
              "s3:ListBucketMultipartUploads",
              "s3:AbortMultipartUploads",
              "s3:ListMultipartUploadParts",
              "s3:DescribeSnapshots",
              "ec2:DescribeVolumes",
              "ec2:DescribeVolumeAttribute",
              "ec2:DescribeVolumesModifications",
              "ec2:DescribeVolumeStatus",
              "ec2:CreateTags",
              "ec2:CreateVolume",
              "ec2:CreateSnapshot",
              "ec2:DeleteSnapshot"
            ],
            "Resource": "*"
          }
         ]}
      EOF
      
        POLICY_ARN=$(aws iam create-policy --policy-name "RosaOadpVer1" \
        --policy-document file:///${SCRATCH}/policy.json --query Policy.Arn \
        --tags Key=rosa_openshift_version,Value=${CLUSTER_VERSION} Key=rosa_role_prefix,Value=ManagedOpenShift Key=operator_namespace,Value=openshift-oadp Key=operator_name,Value=openshift-oadp \
        --output text)
        fi
      Copy to Clipboard Toggle word wrap
      • SCRATCH: SCRATCH は、環境変数用に作成された一時ディレクトリーの名前です。
    3. 以下のコマンドを実行してポリシー ARN を表示します。

      $ echo ${POLICY_ARN}
      Copy to Clipboard Toggle word wrap
  3. クラスターの IAM ロール信頼ポリシーを作成します。

    1. 次のコマンドを実行して、信頼ポリシーファイルを作成します。

      $ cat <<EOF > ${SCRATCH}/trust-policy.json
        {
            "Version":2012-10-17",
            "Statement": [{
              "Effect": "Allow",
              "Principal": {
                "Federated": "arn:aws:iam::${AWS_ACCOUNT_ID}:oidc-provider/${OIDC_ENDPOINT}"
              },
              "Action": "sts:AssumeRoleWithWebIdentity",
              "Condition": {
                "StringEquals": {
                  "${OIDC_ENDPOINT}:sub": [
                    "system:serviceaccount:openshift-adp:openshift-adp-controller-manager",
                    "system:serviceaccount:openshift-adp:velero"]
                }
              }
            }]
        }
      EOF
      Copy to Clipboard Toggle word wrap
    2. 以下のコマンドを実行してロールを作成します。

      $ ROLE_ARN=$(aws iam create-role --role-name \
        "${ROLE_NAME}" \
        --assume-role-policy-document file://${SCRATCH}/trust-policy.json \
      --tags Key=rosa_cluster_id,Value=${ROSA_CLUSTER_ID} Key=rosa_openshift_version,Value=${CLUSTER_VERSION} Key=rosa_role_prefix,Value=ManagedOpenShift Key=operator_namespace,Value=openshift-adp Key=operator_name,Value=openshift-oadp \
         --query Role.Arn --output text)
      Copy to Clipboard Toggle word wrap
    3. 次のコマンドを実行して、ロール ARN を表示します。

      $ echo ${ROLE_ARN}
      Copy to Clipboard Toggle word wrap
  4. 次のコマンドを実行して、IAM ポリシーを IAM ロールにアタッチします。

    $ aws iam attach-role-policy --role-name "${ROLE_NAME}" \
      --policy-arn ${POLICY_ARN}
    Copy to Clipboard Toggle word wrap
4.19.1.2. OADP Operator のインストールおよび IAM ロールの指定

AWS Security Token Service (AWS STS) は、IAM またはフェデレーションされたユーザーの短期認証情報を提供するグローバル Web サービスです。STS を使用した OpenShift Container Platform (ROSA) は、ROSA クラスターに推奨される認証情報モードです。このドキュメントでは、AWS STS を使用する ROSA に OpenShift API for Data Protection (OADP) をインストールする方法を説明します。

重要

Restic はサポートされていません。

Container Storage Interface (CSI) スナップショットをサポートしていないファイルシステムをバックアップする場合は、Kopia File System Backup (FSB) がサポートされています。

ファイルシステムの例には次のものがあります。

  • Amazon Elastic File System (EFS)
  • Network File System (NFS)
  • emptyDir ボリューム
  • ローカルボリューム

ボリュームをバックアップする場合、AWS STS を使用する ROSA の OADP は、ネイティブスナップショットと Container Storage Interface (CSI) スナップショットのみをサポートします。

STS 認証を使用する Amazon ROSA クラスターでは、別の AWS リージョンでのバックアップデータの復元はサポートされていません。

Data Mover 機能は現在、ROSA クラスターではサポートされていません。データの移動にはネイティブ AWS S3 ツールを使用できます。

前提条件

  • 必要なアクセス権とトークンを備えた OpenShift Container Platform ROSA クラスター。詳細は、前の手順である OADP 用の AWS 認証情報の準備 を参照してください。バックアップと復元に 2 つの異なるクラスターを使用する予定の場合は、ROLE_ARN を含む AWS 認証情報をクラスターごとに準備する必要があります。

手順

  1. 次のコマンドを入力して、AWS トークンファイルから OpenShift Container Platform シークレットを作成します。

    1. 認証情報ファイルを作成します。

      $ cat <<EOF > ${SCRATCH}/credentials
        [default]
        role_arn = ${ROLE_ARN}
        web_identity_token_file = /var/run/secrets/openshift/serviceaccount/token
        region = <aws_region> 
      1
      
      EOF
      Copy to Clipboard Toggle word wrap
      1
      <aws_region> は、STS エンドポイントに使用する AWS リージョンに置き換えます。
    2. OADP の namespace を作成します。

      $ oc create namespace openshift-adp
      Copy to Clipboard Toggle word wrap
    3. OpenShift Container Platform シークレットを作成します。

      $ oc -n openshift-adp create secret generic cloud-credentials \
        --from-file=${SCRATCH}/credentials
      Copy to Clipboard Toggle word wrap
      注記

      OpenShift Container Platform バージョン 4.15 以降では、OADP Operator は Operator Lifecycle Manager (OLM) および Cloud Credentials Operator (CCO) を通じて、標準化された新しい STS ワークフローをサポートします。このワークフローでは、上記シークレットの作成は必要ありません。OpenShift Container Platform Web コンソールを使用して、OLM で管理される Operator のインストール中にロール ARN のみ指定する必要があります。詳細は、Web コンソールを使用して OperatorHub からインストールする を参照してください。

      前述のシークレットは CCO によって自動的に作成されます。

  2. OADP Operator をインストールします。

    1. OpenShift Container Platform Web コンソールで、OperatorsOperatorHub ページを表示します。
    2. OADP Operator を検索します。
    3. role_ARN フィールドに、前に作成した role_arn を貼り付け、Install をクリックします。
  3. 次のコマンドを入力し、AWS 認証情報を使用して AWS クラウドストレージを作成します。

    $ cat << EOF | oc create -f -
      apiVersion: oadp.openshift.io/v1alpha1
      kind: CloudStorage
      metadata:
        name: ${CLUSTER_NAME}-oadp
        namespace: openshift-adp
      spec:
        creationSecret:
          key: credentials
          name: cloud-credentials
        enableSharedConfig: true
        name: ${CLUSTER_NAME}-oadp
        provider: aws
        region: $REGION
    EOF
    Copy to Clipboard Toggle word wrap
  4. 次のコマンドを入力して、アプリケーションのストレージのデフォルトストレージクラスを確認します。

    $ oc get pvc -n <namespace>
    Copy to Clipboard Toggle word wrap

    出力例

    NAME     STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
    applog   Bound    pvc-351791ae-b6ab-4e8b-88a4-30f73caf5ef8   1Gi        RWO            gp3-csi        4d19h
    mysql    Bound    pvc-16b8e009-a20a-4379-accc-bc81fedd0621   1Gi        RWO            gp3-csi        4d19h
    Copy to Clipboard Toggle word wrap

  5. 次のコマンドを実行してストレージクラスを取得します。

    $ oc get storageclass
    Copy to Clipboard Toggle word wrap

    出力例

    NAME                PROVISIONER             RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
    gp2                 kubernetes.io/aws-ebs   Delete          WaitForFirstConsumer   true                   4d21h
    gp2-csi             ebs.csi.aws.com         Delete          WaitForFirstConsumer   true                   4d21h
    gp3                 ebs.csi.aws.com         Delete          WaitForFirstConsumer   true                   4d21h
    gp3-csi (default)   ebs.csi.aws.com         Delete          WaitForFirstConsumer   true                   4d21h
    Copy to Clipboard Toggle word wrap

    注記

    次のストレージクラスが機能します。

    • gp3-csi
    • gp2-csi
    • gp3
    • gp2

    すべてのアプリケーション、またはバックアップされるアプリケーションが Container Storage Interface (CSI) で永続ボリューム (PV) を使用している場合は、OADP DPA 設定に CSI プラグインを含めることをお勧めします。

  6. バックアップとボリュームスナップショットが保存されるストレージへの接続を設定するために、DataProtectionApplication リソースを作成します。

    1. CSI ボリュームのみを使用している場合は、次のコマンドを入力して Data Protection Application をデプロイします。

      $ cat << EOF | oc create -f -
        apiVersion: oadp.openshift.io/v1alpha1
        kind: DataProtectionApplication
        metadata:
          name: ${CLUSTER_NAME}-dpa
          namespace: openshift-adp
        spec:
          backupImages: true 
      1
      
          features:
            dataMover:
              enable: false
          backupLocations:
          - bucket:
              cloudStorageRef:
                name: ${CLUSTER_NAME}-oadp
              credential:
                key: credentials
                name: cloud-credentials
              prefix: velero
              default: true
              config:
                region: ${REGION}
          configuration:
            velero:
              defaultPlugins:
              - openshift
              - aws
              - csi
            nodeAgent:  
      2
      
              enable: false
              uploaderType: kopia 
      3
      
      EOF
      Copy to Clipboard Toggle word wrap
      1
      ROSA は内部イメージバックアップをサポートします。イメージのバックアップを使用しない場合は、このフィールドを false に設定します。
      2
      nodeAgent 属性に関する重要な注記を参照してください。
      3
      アップローダーの種類。使用できる値は、restic または kopia です。ビルトイン Data Mover は、uploaderType フィールドの値に関係なく、デフォルトのアップローダーメカニズムとして Kopia を使用します。
    2. CSI ボリュームまたは非 CSI ボリュームを使用している場合は、次のコマンドを入力して Data Protection Application をデプロイします。

      $ cat << EOF | oc create -f -
        apiVersion: oadp.openshift.io/v1alpha1
        kind: DataProtectionApplication
        metadata:
          name: ${CLUSTER_NAME}-dpa
          namespace: openshift-adp
        spec:
          backupImages: true 
      1
      
          features:
            dataMover:
               enable: false
          backupLocations:
          - bucket:
              cloudStorageRef:
                name: ${CLUSTER_NAME}-oadp
              credential:
                key: credentials
                name: cloud-credentials
              prefix: velero
              default: true
              config:
                region: ${REGION}
          configuration:
            velero:
              defaultPlugins:
              - openshift
              - aws
            nodeAgent: 
      2
      
              enable: false
              uploaderType: restic
          snapshotLocations:
            - velero:
                config:
                  credentialsFile: /tmp/credentials/openshift-adp/cloud-credentials-credentials 
      3
      
                  enableSharedConfig: "true" 
      4
      
                  profile: default 
      5
      
                  region: ${REGION} 
      6
      
                provider: aws
      EOF
      Copy to Clipboard Toggle word wrap
      1
      ROSA は内部イメージバックアップをサポートします。イメージのバックアップを使用しない場合は、このフィールドを false に設定します。
      2
      nodeAgent 属性に関する重要な注記を参照してください。
      3
      credentialsFile フィールドは、Pod のバケット認証情報のマウント先です。
      4
      enableSharedConfig フィールドを使用すると、snapshotLocations がバケットに定義された認証情報を共有または再利用できます。
      5
      AWS 認証情報ファイルに設定されているプロファイル名を使用します。
      6
      region は、お使いの AWS リージョンに指定します。これはクラスターリージョンと同じである必要があります。

      これで、アプリケーションのバックアップ で説明されているとおり、OpenShift Container Platform アプリケーションをバックアップおよび復元する準備が整いました。

重要

OADP は ROSA 環境で Restic をサポートしていないため、resticenable パラメーターは false に設定されています。

OADP 1.2 を使用する場合は、次の設定を置き換えます。

nodeAgent:
  enable: false
  uploaderType: restic
Copy to Clipboard Toggle word wrap

次の設定に置き換えます。

restic:
  enable: false
Copy to Clipboard Toggle word wrap

バックアップと復元に 2 つの異なるクラスターを使用する場合、クラウドストレージ CR と OADP DataProtectionApplication 設定の両方で、2 つのクラスターの AWS S3 ストレージ名が同じである必要があります。

4.19.1.3. OADP Operator サブスクリプションの IAM ロール ARN の更新

ROSA Security Token Service (STS) クラスターに OADP Operator をインストールするときに、IAM ロールの Amazon Resource Name (ARN) を誤って指定すると、openshift-adp-controller Pod でエラーが発生します。生成された認証情報リクエストに間違った IAM ロール ARN が含まれています。認証情報リクエストオブジェクトを正しい IAM ロール ARN で更新するには、OADP Operator サブスクリプションを編集し、IAM ロール ARN に正しい値を適用します。OADP Operator のサブスクリプションを編集すると、IAM ロール ARN を更新するために OADP をアンインストールして再インストールする必要がなくなります。

前提条件

  • 必要なアクセスとトークンを備えた Red Hat OpenShift Service on AWS STS クラスターがある。
  • ROSA STS クラスターに OADP がインストールされている。

手順

  1. OADP サブスクリプションに間違った IAM ロール ARN 環境変数が設定されていることを確認するには、次のコマンドを実行します。

    $ oc get sub -o yaml redhat-oadp-operator
    Copy to Clipboard Toggle word wrap

    Subscription の例

    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      annotations:
      creationTimestamp: "2025-01-15T07:18:31Z"
      generation: 1
      labels:
        operators.coreos.com/redhat-oadp-operator.openshift-adp: ""
      name: redhat-oadp-operator
      namespace: openshift-adp
      resourceVersion: "77363"
      uid: 5ba00906-5ad2-4476-ae7b-ffa90986283d
    spec:
      channel: stable-1.4
      config:
        env:
        - name: ROLEARN
          value: arn:aws:iam::11111111:role/wrong-role-arn 
    1
    
      installPlanApproval: Manual
      name: redhat-oadp-operator
      source: prestage-operators
      sourceNamespace: openshift-marketplace
      startingCSV: oadp-operator.v1.4.2
    Copy to Clipboard Toggle word wrap

    1
    更新する ROLEARN の値を確認します。
  2. 次のコマンドを実行して、サブスクリプションの ROLEARN フィールドを正しいロール ARN で更新します。

    $ oc patch subscription redhat-oadp-operator -p '{"spec": {"config": {"env": [{"name": "ROLEARN", "value": "<role_arn>"}]}}}' --type='merge'
    Copy to Clipboard Toggle word wrap

    ここでは、以下のようになります。

    <role_arn>
    更新する IAM ロール ARN を指定します。たとえば、arn:aws:iam::160…..6956:role/oadprosa…..8wlf です。
  3. 次のコマンドを実行して、secret オブジェクトが正しいロール ARN 値で更新されていることを確認します。

    $ oc get secret cloud-credentials -o jsonpath='{.data.credentials}' | base64 -d
    Copy to Clipboard Toggle word wrap

    出力例

    [default]
    sts_regional_endpoints = regional
    role_arn = arn:aws:iam::160.....6956:role/oadprosa.....8wlf
    web_identity_token_file = /var/run/secrets/openshift/serviceaccount/token
    Copy to Clipboard Toggle word wrap

  4. 次の例に示すように、DataProtectionApplication カスタムリソース (CR) マニフェストファイルを設定します。

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: test-rosa-dpa
      namespace: openshift-adp
    spec:
      backupLocations:
      - bucket:
          config:
            region: us-east-1
          cloudStorageRef:
            name: <cloud_storage> 
    1
    
          credential:
            name: cloud-credentials
            key: credentials
          prefix: velero
          default: true
      configuration:
        velero:
          defaultPlugins:
          - aws
          - openshift
    Copy to Clipboard Toggle word wrap
    1
    CloudStorage CR を指定します。
  5. 次のコマンドを実行して、DataProtectionApplication CR を作成します。

    $ oc create -f <dpa_manifest_file>
    Copy to Clipboard Toggle word wrap
  6. 次のコマンドを実行して、DataProtectionApplication CR が調整され、status"True" に設定されていることを確認します。

    $  oc get dpa -n openshift-adp -o yaml
    Copy to Clipboard Toggle word wrap

    DataProtectionApplication の例

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    ...
    status:
        conditions:
        - lastTransitionTime: "2023-07-31T04:48:12Z"
          message: Reconcile complete
          reason: Complete
          status: "True"
          type: Reconciled
    Copy to Clipboard Toggle word wrap

  7. 次のコマンドを実行して、BackupStorageLocation CR が使用可能な状態であることを確認します。

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

    例: BackupStorageLocation

    NAME       PHASE       LAST VALIDATED   AGE   DEFAULT
    ts-dpa-1   Available   3s               6s    true
    Copy to Clipboard Toggle word wrap

4.19.1.4.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) 設定も機能します。

手順

  1. 次のコマンドを実行して、バックアップするワークロードを作成します。

    $ oc create namespace hello-world
    Copy to Clipboard Toggle word wrap
    $ oc new-app -n hello-world --image=docker.io/openshift/hello-openshift
    Copy to Clipboard Toggle word wrap
  2. 次のコマンドを実行してルートを公開します。

    $ oc expose service/hello-openshift -n hello-world
    Copy to Clipboard Toggle word wrap
  3. 次のコマンドを実行して、アプリケーションが動作していることを確認します。

    $ curl `oc get route/hello-openshift -n hello-world -o jsonpath='{.spec.host}'`
    Copy to Clipboard Toggle word wrap

    次の例のような出力が表示されます。

    Hello OpenShift!
    Copy to Clipboard Toggle word wrap
  4. 次のコマンドを実行して、ワークロードをバックアップします。

    $ 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 Toggle word wrap
  5. バックアップが完了するまで待ってから、次のコマンドを実行します。

    $ watch "oc -n openshift-adp get backup hello-world -o json | jq .status"
    Copy to Clipboard Toggle word wrap

    次の例のような出力が表示されます。

    {
      "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 Toggle word wrap
  6. 次のコマンドを実行して、デモワークロードを削除します。

    $ oc delete ns hello-world
    Copy to Clipboard Toggle word wrap
  7. 次のコマンドを実行して、バックアップからワークロードを復元します。

    $ 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 Toggle word wrap
  8. 次のコマンドを実行して、復元が完了するまで待ちます。

    $ watch "oc -n openshift-adp get restore hello-world -o json | jq .status"
    Copy to Clipboard Toggle word wrap

    次の例のような出力が表示されます。

    {
      "completionTimestamp": "2022-09-07T22:25:47Z",
      "phase": "Completed",
      "progress": {
        "itemsRestored": 38,
        "totalItems": 38
      },
      "startTimestamp": "2022-09-07T22:25:28Z",
      "warnings": 9
    }
    Copy to Clipboard Toggle word wrap
  9. 次のコマンドを実行して、ワークロードが復元されていることを確認します。

    $ oc -n hello-world get pods
    Copy to Clipboard Toggle word wrap

    次の例のような出力が表示されます。

    NAME                              READY   STATUS    RESTARTS   AGE
    hello-openshift-9f885f7c6-kdjpj   1/1     Running   0          90s
    Copy to Clipboard Toggle word wrap
  10. 次のコマンドを実行して JSONPath を確認します。

    $ curl `oc get route/hello-openshift -n hello-world -o jsonpath='{.spec.host}'`
    Copy to Clipboard Toggle word wrap

    次の例のような出力が表示されます。

    Hello OpenShift!
    Copy to Clipboard Toggle word wrap
注記

トラブルシューティングのヒントについては、トラブルシューティングのドキュメント を参照してください。

4.19.1.4.2. OADP と ROSA STS を使用してバックアップ後のクラスターをクリーンアップする

この例のバックアップおよび S3 バケットと OpenShift API for Data Protection (OADP) Operator をアンインストールする必要がある場合は、次の手順を実行します。

手順

  1. 次のコマンドを実行して、ワークロードを削除します。

    $ oc delete ns hello-world
    Copy to Clipboard Toggle word wrap
  2. 次のコマンドを実行して、Data Protection Application (DPA) を削除します。

    $ oc -n openshift-adp delete dpa ${CLUSTER_NAME}-dpa
    Copy to Clipboard Toggle word wrap
  3. 次のコマンドを実行して、クラウドストレージを削除します。

    $ oc -n openshift-adp delete cloudstorage ${CLUSTER_NAME}-oadp
    Copy to Clipboard Toggle word wrap
    警告

    このコマンドがハングした場合は、次のコマンドを実行してファイナライザーを削除する必要がある場合があります。

    $ oc -n openshift-adp patch cloudstorage ${CLUSTER_NAME}-oadp -p '{"metadata":{"finalizers":null}}' --type=merge
    Copy to Clipboard Toggle word wrap
  4. Operator が不要になった場合は、次のコマンドを実行して削除します。

    $ oc -n openshift-adp delete subscription oadp-operator
    Copy to Clipboard Toggle word wrap
  5. Operator から namespace を削除します。

    $ oc delete ns openshift-adp
    Copy to Clipboard Toggle word wrap
  6. バックアップおよび復元リソースが不要になった場合は、次のコマンドを実行してクラスターからリソースを削除します。

    $ oc delete backups.velero.io hello-world
    Copy to Clipboard Toggle word wrap
  7. AWS S3 のバックアップ、復元、およびリモートオブジェクトを削除するには、次のコマンドを実行します。

    $ velero backup delete hello-world
    Copy to Clipboard Toggle word wrap
  8. カスタムリソース定義 (CRD) が不要になった場合は、次のコマンドを実行してクラスターから削除します。

    $ for CRD in `oc get crds | grep velero | awk '{print $1}'`; do oc delete crd $CRD; done
    Copy to Clipboard Toggle word wrap
  9. 次のコマンドを実行して、AWS S3 バケットを削除します。

    $ aws s3 rm s3://${CLUSTER_NAME}-oadp --recursive
    Copy to Clipboard Toggle word wrap
    $ aws s3api delete-bucket --bucket ${CLUSTER_NAME}-oadp
    Copy to Clipboard Toggle word wrap
  10. 次のコマンドを実行して、ロールからポリシーを切り離します。

    $ aws iam detach-role-policy --role-name "${ROLE_NAME}"  --policy-arn "${POLICY_ARN}"
    Copy to Clipboard Toggle word wrap
  11. 以下のコマンドを実行してロールを削除します。

    $ aws iam delete-role --role-name "${ROLE_NAME}"
    Copy to Clipboard Toggle word wrap

4.20. OADP と AWS STS

4.20.1. OADP を使用して AWS STS クラスター上のアプリケーションをバックアップする

OADP Operator をインストールすることで、Amazon Web Services (AWS) を使用して OpenShift API for Data Protection (OADP) をインストールします。Operator は Velero 1.14 をインストールします。

注記

OADP 1.0.4 以降、すべての OADP 1.0.z バージョンは Migration Toolkit for Containers Operator の依存関係としてのみ使用でき、スタンドアロン Operator として使用することはできません。

Velero 用に AWS を設定し、デフォルトの Secret を作成してから、Data Protection Application をインストールします。詳細は、OADP Operator のインストール を参照してください。

制限されたネットワーク環境に OADP Operator をインストールするには、最初にデフォルトの OperatorHub ソースを無効にして、Operator カタログをミラーリングする必要があります。詳細は、ネットワークが制限された環境での Operator Lifecycle Manager の使用 を参照してください。

OADP は、AWS Security Token Service (STS) (AWS STS) クラスターに手動でインストールできます。Amazon AWS は、ユーザーのために権限が限られた一時的な認証情報を要求できる AWS STS を Web サービスとして提供しています。STS を使用すると、API 呼び出し、AWS コンソール、または AWS コマンドラインインターフェイス (CLI) を介してリソースへの一時的なアクセスを信頼できるユーザーに提供できます。

OpenShift API for Data Protection (OADP) をインストールする前に、OADP が Amazon Web Services API を使用できるように、OADP のロールとポリシーの認証情報を設定する必要があります。

このプロセスは次の 2 段階で実行されます。

  1. AWS 認証情報を準備します。
  2. OADP Operator をインストールし、IAM ロールを付与します。
4.20.1.1. OADP 用の AWS STS 認証情報を準備する

Amazon Web Services アカウントは、OpenShift API for Data Protection (OADP) インストールを受け入れるように準備および設定する必要があります。次の手順に従って AWS 認証情報を準備します。

手順

  1. 次のコマンドを実行して、cluster_name 環境変数を定義します。

    $ export CLUSTER_NAME= <AWS_cluster_name> 
    1
    Copy to Clipboard Toggle word wrap
    1
    変数は任意の値に設定できます。
  2. 次のコマンドを実行して、AWS_ACCOUNT_ID, OIDC_ENDPOINT などの cluster の詳細をすべて取得します。

    $ export CLUSTER_VERSION=$(oc get clusterversion version -o jsonpath='{.status.desired.version}{"\n"}')
    Copy to Clipboard Toggle word wrap
    $ export AWS_CLUSTER_ID=$(oc get clusterversion version -o jsonpath='{.spec.clusterID}{"\n"}')
    Copy to Clipboard Toggle word wrap
    $ export OIDC_ENDPOINT=$(oc get authentication.config.openshift.io cluster -o jsonpath='{.spec.serviceAccountIssuer}' | sed 's|^https://||')
    Copy to Clipboard Toggle word wrap
    $ export REGION=$(oc get infrastructures cluster -o jsonpath='{.status.platformStatus.aws.region}' --allow-missing-template-keys=false || echo us-east-2)
    Copy to Clipboard Toggle word wrap
    $ export AWS_ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text)
    Copy to Clipboard Toggle word wrap
    $ export ROLE_NAME="${CLUSTER_NAME}-openshift-oadp-aws-cloud-credentials"
    Copy to Clipboard Toggle word wrap
  3. 次のコマンドを実行して、すべてのファイルを保存するための一時ディレクトリーを作成します。

    $ export SCRATCH="/tmp/${CLUSTER_NAME}/oadp"
    mkdir -p ${SCRATCH}
    Copy to Clipboard Toggle word wrap
  4. 次のコマンドを実行して、収集したすべての詳細を表示します。

    $ echo "Cluster ID: ${AWS_CLUSTER_ID}, Region: ${REGION}, OIDC Endpoint:
    ${OIDC_ENDPOINT}, AWS Account ID: ${AWS_ACCOUNT_ID}"
    Copy to Clipboard Toggle word wrap
  5. AWS アカウントで、AWS S3 へのアクセスを許可する IAM ポリシーを作成します。

    1. 次のコマンドを実行して、ポリシーが存在するかどうかを確認します。

      $ export POLICY_NAME="OadpVer1"
      Copy to Clipboard Toggle word wrap
      • POLICY_NAME: 変数は任意の値に設定できます。
      $ POLICY_ARN=$(aws iam list-policies --query "Policies[?PolicyName=='$POLICY_NAME'].{ARN:Arn}" --output text)
      Copy to Clipboard Toggle word wrap
    2. 次のコマンドを入力してポリシー JSON ファイルを作成し、ポリシーを作成します。

      注記

      ポリシー ARN が見つからない場合、コマンドはポリシーを作成します。ポリシー ARN がすでに存在する場合、if ステートメントはポリシーの作成を意図的にスキップします。

      $ if [[ -z "${POLICY_ARN}" ]]; then
      cat << EOF > ${SCRATCH}/policy.json
      {
      "Version": "2012-10-17",
      "Statement": [
       {
         "Effect": "Allow",
         "Action": [
           "s3:CreateBucket",
           "s3:DeleteBucket",
           "s3:PutBucketTagging",
           "s3:GetBucketTagging",
           "s3:PutEncryptionConfiguration",
           "s3:GetEncryptionConfiguration",
           "s3:PutLifecycleConfiguration",
           "s3:GetLifecycleConfiguration",
           "s3:GetBucketLocation",
           "s3:ListBucket",
           "s3:GetObject",
           "s3:PutObject",
           "s3:DeleteObject",
           "s3:ListBucketMultipartUploads",
           "s3:AbortMultipartUpload",
           "s3:ListMultipartUploadParts",
           "ec2:DescribeSnapshots",
           "ec2:DescribeVolumes",
           "ec2:DescribeVolumeAttribute",
           "ec2:DescribeVolumesModifications",
           "ec2:DescribeVolumeStatus",
           "ec2:CreateTags",
           "ec2:CreateVolume",
           "ec2:CreateSnapshot",
           "ec2:DeleteSnapshot"
         ],
         "Resource": "*"
       }
      ]}
      EOF
      
      POLICY_ARN=$(aws iam create-policy --policy-name $POLICY_NAME \
      --policy-document file:///${SCRATCH}/policy.json --query Policy.Arn \
      --tags Key=openshift_version,Value=${CLUSTER_VERSION} Key=operator_namespace,Value=openshift-adp Key=operator_name,Value=oadp \
      --output text)
      fi
      Copy to Clipboard Toggle word wrap
      • SCRATCH: ファイルを保存するために作成された一時ディレクトリーの名前。
    3. 以下のコマンドを実行してポリシー ARN を表示します。

      $ echo ${POLICY_ARN}
      Copy to Clipboard Toggle word wrap
  6. クラスターの IAM ロール信頼ポリシーを作成します。

    1. 次のコマンドを実行して、信頼ポリシーファイルを作成します。

      $ cat <<EOF > ${SCRATCH}/trust-policy.json
      {
          "Version": "2012-10-17",
          "Statement": [{
            "Effect": "Allow",
            "Principal": {
              "Federated": "arn:aws:iam::${AWS_ACCOUNT_ID}:oidc-provider/${OIDC_ENDPOINT}"
            },
            "Action": "sts:AssumeRoleWithWebIdentity",
            "Condition": {
              "StringEquals": {
                "${OIDC_ENDPOINT}:sub": [
                  "system:serviceaccount:openshift-adp:openshift-adp-controller-manager",
                  "system:serviceaccount:openshift-adp:velero"]
              }
            }
          }]
      }
      EOF
      Copy to Clipboard Toggle word wrap
    2. 次のコマンドを実行して、クラスターの IAM ロール信頼ポリシーを作成します。

      $ ROLE_ARN=$(aws iam create-role --role-name \
        "${ROLE_NAME}" \
        --assume-role-policy-document file://${SCRATCH}/trust-policy.json \
        --tags Key=cluster_id,Value=${AWS_CLUSTER_ID}  Key=openshift_version,Value=${CLUSTER_VERSION} Key=operator_namespace,Value=openshift-adp Key=operator_name,Value=oadp --query Role.Arn --output text)
      Copy to Clipboard Toggle word wrap
    3. 次のコマンドを実行して、ロール ARN を表示します。

      $ echo ${ROLE_ARN}
      Copy to Clipboard Toggle word wrap
  7. 次のコマンドを実行して、IAM ポリシーを IAM ロールにアタッチします。

    $ aws iam attach-role-policy --role-name "${ROLE_NAME}" --policy-arn ${POLICY_ARN}
    Copy to Clipboard Toggle word wrap
4.20.1.1.1. Velero の CPU とメモリーのリソース割り当てを設定

DataProtectionApplication カスタムリソース (CR) マニフェストを編集して、Velero Pod の CPU およびメモリーリソースの割り当てを設定します。

前提条件

  • OpenShift API for Data Protection (OADP) Operator がインストールされている必要があります。

手順

  • 次の例のように、DataProtectionApplication CR マニフェストの spec.configuration.velero.podConfig.ResourceAllocations ブロックの値を編集します。

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: <dpa_sample>
    spec:
    # ...
      configuration:
        velero:
          podConfig:
            nodeSelector: <node_selector> 
    1
    
            resourceAllocations: 
    2
    
              limits:
                cpu: "1"
                memory: 1024Mi
              requests:
                cpu: 200m
                memory: 256Mi
    Copy to Clipboard Toggle word wrap
    1
    Velero podSpec に提供されるノードセレクターを指定します。
    2
    リストされている resourceAllocations は、平均使用量です。
    注記

    Kopia は OADP 1.3 以降のリリースで選択できます。Kopia はファイルシステムのバックアップに使用できます。組み込みの Data Mover を使用する Data Mover の場合は、Kopia が唯一の選択肢になります。

    Kopia は Restic よりも多くのリソースを消費するため、それに応じて CPU とメモリーの要件を調整しなければならない場合があります。

4.20.1.2. OADP Operator のインストールおよび IAM ロールの指定

AWS Security Token Service (AWS STS) は、IAM またはフェデレーションされたユーザーの短期認証情報を提供するグローバル Web サービスです。このドキュメントでは、OpenShift API for Data Protection (OADP) を AWS STS クラスターに手動でインストールする方法を説明します。

重要

Restic と Kopia は、OADP AWS STS 環境ではサポートされていません。Restic および Kopia のノードエージェントが無効になっていることを確認してください。ボリュームをバックアップする場合、AWS STS 上の OADP は、ネイティブスナップショットと Container Storage Interface (CSI) スナップショットのみをサポートします。

STS 認証を使用する AWS クラスターでは、バックアップデータを別の AWS リージョンに復元することはサポートされていません。

Data Mover 機能は現在、AWS STS クラスターではサポートされていません。データの移動にはネイティブ AWS S3 ツールを使用できます。

前提条件

  • 必要なアクセス権とトークンを備えた OpenShift Container Platform AWS STS クラスター。詳細は、前の手順である OADP 用の AWS 認証情報の準備 を参照してください。バックアップと復元に 2 つの異なるクラスターを使用する予定の場合は、ROLE_ARN を含む AWS 認証情報をクラスターごとに準備する必要があります。

手順

  1. 次のコマンドを入力して、AWS トークンファイルから OpenShift Container Platform シークレットを作成します。

    1. 認証情報ファイルを作成します。

      $ cat <<EOF > ${SCRATCH}/credentials
        [default]
        role_arn = ${ROLE_ARN}
        web_identity_token_file = /var/run/secrets/openshift/serviceaccount/token
      EOF
      Copy to Clipboard Toggle word wrap
    2. OADP の namespace を作成します。

      $ oc create namespace openshift-adp
      Copy to Clipboard Toggle word wrap
    3. OpenShift Container Platform シークレットを作成します。

      $ oc -n openshift-adp create secret generic cloud-credentials \
        --from-file=${SCRATCH}/credentials
      Copy to Clipboard Toggle word wrap
      注記

      OpenShift Container Platform バージョン 4.14 以降では、OADP Operator は Operator Lifecycle Manager (OLM) および Cloud Credentials Operator (CCO) を通じて、標準化された新しい STS ワークフローをサポートします。このワークフローでは、上記シークレットの作成は必要ありません。OpenShift Container Platform Web コンソールを使用して、OLM で管理される Operator のインストール中にロール ARN のみ指定する必要があります。詳細は、Web コンソールを使用して OperatorHub からインストールする を参照してください。

      前述のシークレットは CCO によって自動的に作成されます。

  2. OADP Operator をインストールします。

    1. OpenShift Container Platform Web コンソールで、OperatorsOperatorHub ページを表示します。
    2. OADP Operator を検索します。
    3. role_ARN フィールドに、前に作成した role_arn を貼り付け、Install をクリックします。
  3. 次のコマンドを入力し、AWS 認証情報を使用して AWS クラウドストレージを作成します。

    $ cat << EOF | oc create -f -
      apiVersion: oadp.openshift.io/v1alpha1
      kind: CloudStorage
      metadata:
        name: ${CLUSTER_NAME}-oadp
        namespace: openshift-adp
      spec:
        creationSecret:
          key: credentials
          name: cloud-credentials
        enableSharedConfig: true
        name: ${CLUSTER_NAME}-oadp
        provider: aws
        region: $REGION
    EOF
    Copy to Clipboard Toggle word wrap
  4. 次のコマンドを入力して、アプリケーションのストレージのデフォルトストレージクラスを確認します。

    $ oc get pvc -n <namespace>
    Copy to Clipboard Toggle word wrap

    出力例

    NAME     STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
    applog   Bound    pvc-351791ae-b6ab-4e8b-88a4-30f73caf5ef8   1Gi        RWO            gp3-csi        4d19h
    mysql    Bound    pvc-16b8e009-a20a-4379-accc-bc81fedd0621   1Gi        RWO            gp3-csi        4d19h
    Copy to Clipboard Toggle word wrap

  5. 次のコマンドを実行してストレージクラスを取得します。

    $ oc get storageclass
    Copy to Clipboard Toggle word wrap

    出力例

    NAME                PROVISIONER             RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
    gp2                 kubernetes.io/aws-ebs   Delete          WaitForFirstConsumer   true                   4d21h
    gp2-csi             ebs.csi.aws.com         Delete          WaitForFirstConsumer   true                   4d21h
    gp3                 ebs.csi.aws.com         Delete          WaitForFirstConsumer   true                   4d21h
    gp3-csi (default)   ebs.csi.aws.com         Delete          WaitForFirstConsumer   true                   4d21h
    Copy to Clipboard Toggle word wrap

    注記

    次のストレージクラスが機能します。

    • gp3-csi
    • gp2-csi
    • gp3
    • gp2

    すべてのアプリケーション、またはバックアップされるアプリケーションが Container Storage Interface (CSI) で永続ボリューム (PV) を使用している場合は、OADP DPA 設定に CSI プラグインを含めることをお勧めします。

  6. バックアップとボリュームスナップショットが保存されるストレージへの接続を設定するために、DataProtectionApplication リソースを作成します。

    1. CSI ボリュームのみを使用している場合は、次のコマンドを入力して Data Protection Application をデプロイします。

      $ cat << EOF | oc create -f -
        apiVersion: oadp.openshift.io/v1alpha1
        kind: DataProtectionApplication
        metadata:
          name: ${CLUSTER_NAME}-dpa
          namespace: openshift-adp
        spec:
          backupImages: true 
      1
      
          features:
            dataMover:
              enable: false
          backupLocations:
          - bucket:
              cloudStorageRef:
                name: ${CLUSTER_NAME}-oadp
              credential:
                key: credentials
                name: cloud-credentials
              prefix: velero
              default: true
              config:
                region: ${REGION}
          configuration:
            velero:
              defaultPlugins:
              - openshift
              - aws
              - csi
            restic:
              enable: false
      EOF
      Copy to Clipboard Toggle word wrap
      1
      イメージのバックアップを使用しない場合は、このフィールドを false に設定します。
  1. CSI ボリュームまたは非 CSI ボリュームを使用している場合は、次のコマンドを入力して Data Protection Application をデプロイします。

    $ cat << EOF | oc create -f -
      apiVersion: oadp.openshift.io/v1alpha1
      kind: DataProtectionApplication
      metadata:
        name: ${CLUSTER_NAME}-dpa
        namespace: openshift-adp
      spec:
        backupImages: true 
    1
    
        features:
          dataMover:
             enable: false
        backupLocations:
        - bucket:
            cloudStorageRef:
              name: ${CLUSTER_NAME}-oadp
            credential:
              key: credentials
              name: cloud-credentials
            prefix: velero
            default: true
            config:
              region: ${REGION}
        configuration:
          velero:
            defaultPlugins:
            - openshift
            - aws
          nodeAgent: 
    2
    
            enable: false
            uploaderType: restic
        snapshotLocations:
          - velero:
              config:
                credentialsFile: /tmp/credentials/openshift-adp/cloud-credentials-credentials 
    3
    
                enableSharedConfig: "true" 
    4
    
                profile: default 
    5
    
                region: ${REGION} 
    6
    
              provider: aws
    EOF
    Copy to Clipboard Toggle word wrap
    1
    イメージのバックアップを使用しない場合は、このフィールドを false に設定します。
    2
    nodeAgent 属性に関する重要な注記を参照してください。
    3
    credentialsFile フィールドは、Pod のバケット認証情報のマウント先です。
    4
    enableSharedConfig フィールドを使用すると、snapshotLocations がバケットに定義された認証情報を共有または再利用できます。
    5
    AWS 認証情報ファイルに設定されているプロファイル名を使用します。
    6
    region は、お使いの AWS リージョンに指定します。これはクラスターリージョンと同じである必要があります。

    これで、アプリケーションのバックアップ で説明されているとおり、OpenShift Container Platform アプリケーションをバックアップおよび復元する準備が整いました。

重要

OADP 1.2 を使用する場合は、次の設定を置き換えます。

nodeAgent:
  enable: false
  uploaderType: restic
Copy to Clipboard Toggle word wrap

次の設定に置き換えます。

restic:
  enable: false
Copy to Clipboard Toggle word wrap

バックアップと復元に 2 つの異なるクラスターを使用する場合、クラウドストレージ CR と OADP DataProtectionApplication 設定の両方で、2 つのクラスターの AWS S3 ストレージ名が同じである必要があります。

4.20.1.3.1. OADP と AWS STS を使用したバックアップの実行

次の hello-world アプリケーションの例では、永続ボリューム (PV) がアタッチされていません。OpenShift API for Data Protection (OADP) と Amazon Web Services (AWS) (AWS STS) を使用してバックアップを実行します。

どちらの Data Protection Application (DPA) 設定も機能します。

  1. 次のコマンドを実行して、バックアップするワークロードを作成します。

    $ oc create namespace hello-world
    Copy to Clipboard Toggle word wrap
    $ oc new-app -n hello-world --image=docker.io/openshift/hello-openshift
    Copy to Clipboard Toggle word wrap
  2. 次のコマンドを実行してルートを公開します。

    $ oc expose service/hello-openshift -n hello-world
    Copy to Clipboard Toggle word wrap
  3. 次のコマンドを実行して、アプリケーションが動作していることを確認します。

    $ curl `oc get route/hello-openshift -n hello-world -o jsonpath='{.spec.host}'`
    Copy to Clipboard Toggle word wrap

    出力例

    Hello OpenShift!
    Copy to Clipboard Toggle word wrap

  4. 次のコマンドを実行して、ワークロードをバックアップします。

    $ 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 Toggle word wrap
  5. バックアップが完了するまで待ってから、次のコマンドを実行します。

    $ watch "oc -n openshift-adp get backup hello-world -o json | jq .status"
    Copy to Clipboard Toggle word wrap

    出力例

    {
      "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 Toggle word wrap

  6. 次のコマンドを実行して、デモワークロードを削除します。

    $ oc delete ns hello-world
    Copy to Clipboard Toggle word wrap
  7. 次のコマンドを実行して、バックアップからワークロードを復元します。

    $ 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 Toggle word wrap
  8. 次のコマンドを実行して、復元が完了するまで待ちます。

    $ watch "oc -n openshift-adp get restore hello-world -o json | jq .status"
    Copy to Clipboard Toggle word wrap

    出力例

    {
      "completionTimestamp": "2022-09-07T22:25:47Z",
      "phase": "Completed",
      "progress": {
        "itemsRestored": 38,
        "totalItems": 38
      },
      "startTimestamp": "2022-09-07T22:25:28Z",
      "warnings": 9
    }
    Copy to Clipboard Toggle word wrap

  9. 次のコマンドを実行して、ワークロードが復元されていることを確認します。

    $ oc -n hello-world get pods
    Copy to Clipboard Toggle word wrap

    出力例

    NAME                              READY   STATUS    RESTARTS   AGE
    hello-openshift-9f885f7c6-kdjpj   1/1     Running   0          90s
    Copy to Clipboard Toggle word wrap

  10. 次のコマンドを実行して JSONPath を確認します。

    $ curl `oc get route/hello-openshift -n hello-world -o jsonpath='{.spec.host}'`
    Copy to Clipboard Toggle word wrap

    出力例

    Hello OpenShift!
    Copy to Clipboard Toggle word wrap

注記

トラブルシューティングのヒントは、OADP チームの トラブルシューティングドキュメント を参照してください。