4.3. OADP features and plugins
OpenShift API for Data Protection (OADP) 機能は、アプリケーションをバックアップおよび復元するためのオプションを提供します。
デフォルトのプラグインにより、Velero は特定のクラウドプロバイダーと統合し、OpenShift Container Platform リソースをバックアップおよび復元できます。
4.3.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.3.2. OADP プラグイン
OpenShift API for Data Protection (OADP) は、バックアップおよびスナップショット操作をサポートするためにストレージプロバイダーと統合されたデフォルトの Velero プラグインを提供します。Velero プラグインに基づき、カスタムプラグイン を作成できます。
OADP は、OpenShift Container Platform リソースバックアップ、OpenShift Virtualization リソースバックアップ、および Container Storage Interface (CSI) スナップショット用のプラグインも提供します。
OADP プラグイン | 機能 | ストレージの場所 |
---|---|---|
| Kubernetes オブジェクトをバックアップし、復元します。 | AWS S3 |
スナップショットを使用してボリュームをバックアップおよび復元します。 | AWS EBS | |
| Kubernetes オブジェクトをバックアップし、復元します。 | Microsoft Azure Blob ストレージ |
スナップショットを使用してボリュームをバックアップおよび復元します。 | Microsoft Azure マネージドディスク | |
| Kubernetes オブジェクトをバックアップし、復元します。 | Google Cloud Storage |
スナップショットを使用してボリュームをバックアップおよび復元します。 | Google Compute Engine ディスク | |
| OpenShift Container Platform リソースをバックアップおよび復元します。[1] | オブジェクトストア |
| OpenShift Virtualization リソースをバックアップおよび復元します。[2] | オブジェクトストア |
| CSI スナップショットを使用して、ボリュームをバックアップおよび復元します。[3] | CSI スナップショットをサポートするクラウドストレージ |
| VolumeSnapshotMover は、クラスターの削除などの状況で、ステートフルアプリケーションを回復するための復元プロセス中に使用されるスナップショットをクラスターからオブジェクトストアに再配置します。[4] | オブジェクトストア |
- 必須。
- 仮想マシンディスクは CSI スナップショットまたは Restic でバックアップされます。
csi
プラグインは、Kubernetes CSI スナップショット API を使用します。-
OADP 1.1 以降は
snapshot.storage.k8s.io/v1
を使用します。 -
OADP 1.0 は
snapshot.storage.k8s.io/v1beta1
を使用します。
-
OADP 1.1 以降は
- OADP 1.2 のみ。
4.3.3. OADP Velero プラグインについて
Velero のインストール時に、次の 2 種類のプラグインを設定できます。
- デフォルトのクラウドプロバイダープラグイン
- カスタムプラグイン
どちらのタイプのプラグインもオプションですが、ほとんどのユーザーは少なくとも 1 つのクラウドプロバイダープラグインを設定します。
4.3.3.1. デフォルトの Velero クラウドプロバイダープラグイン
デプロイメント中に oadp_v1alpha1_dpa.yaml
ファイルを設定するときに、次のデフォルトの Velero クラウドプロバイダープラグインのいずれかをインストールできます。
-
aws
(Amazon Web Services) -
gcp
(Google Cloud Platform) -
azure
(Microsoft Azure) -
openshift
(OpenShift Velero プラグイン) -
csi
(Container Storage Interface) -
kubevirt
(KubeVirt)
デプロイメント中に oadp_v1alpha1_dpa.yaml
ファイルで目的のデフォルトプラグインを指定します。
ファイルの例:
次の .yaml
ファイルは、openshift
、aws
、azure
、および gcp
プラグインをインストールします。
apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication metadata: name: dpa-sample spec: configuration: velero: defaultPlugins: - openshift - aws - azure - gcp
4.3.3.2. カスタム Velero プラグイン
デプロイメント中に oadp_v1alpha1_dpa.yaml
ファイルを設定するときに、プラグインの image
と name
を指定することにより、カスタム Velero プラグインをインストールできます。
デプロイメント中に oadp_v1alpha1_dpa.yaml
ファイルで目的のカスタムプラグインを指定します。
ファイルの例:
次の .yaml
ファイルは、デフォルトの openshift
、azure
、および 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
4.3.3.3. Velero プラグインがメッセージ "received EOF, stopping recv loop" を返す
Velero プラグインは、別のプロセスとして開始されます。Velero 操作が完了すると、成功したかどうかにかかわらず終了します。デバッグログの received EOF, stopping recv loop
メッセージは、プラグイン操作が完了したことを示します。エラーが発生したわけではありません。
4.3.4. OADP でサポートされるアーキテクチャー
OpenShift API for Data Protection (OADP) は、次のアーキテクチャーをサポートします。
- AMD64
- ARM64
- PPC64le
- s390x
OADP 1.2.0 以降のバージョンは、ARM64 アーキテクチャーをサポートします。
4.3.5. IBM Power および IBM Z の OADP サポート
OpenShift API for Data Protection (OADP) はプラットフォームに依存しません。以下の情報は、IBM Power および IBM Z のみに関連しています。
- OADP 1.1.7 は、IBM Power® および IBM Z® 上の OpenShift Container Platform 4.11 に対して正常にテストされました。以下のセクションでは、これらのシステムのバックアップ場所に関する OADP 1.1.7 のテストおよびサポート情報を提供します。
- OADP 1.2.3 は、IBM Power® および IBM Z® 上の OpenShift Container Platform 4.12、4.13、4.14、4.15 に対して正常にテストされました。以下のセクションでは、これらのシステムのバックアップロケーションに関する OADP 1.2.3 のテストおよびサポート情報を提供します。
- OADP 1.3.3 は、IBM Power® および IBM Z® 上の OpenShift Container Platform 4.12、4.13、4.14、4.15 に対して正常にテストされました。以下のセクションでは、これらのシステムのバックアップロケーションに関する OADP 1.3.3 のテストおよびサポート情報を提供します。
4.3.5.1. IBM Power を使用したターゲットバックアップロケーションの OADP サポート
- OpenShift Container Platform 4.11、4.12、および OpenShift API for Data Protection (OADP) 1.1.7 で実行される IBM Power® は、AWS S3 バックアップロケーションターゲットに対して正常にテストされました。テストには AWS S3 ターゲットのみが含まれていましたが、Red Hat は、AWS ではないすべての S3 バックアップロケーションターゲットに対しても、OpenShift Container Platform 4.11 と 4.12、および OADP 1.1.7 に対応する IBM Power の実行をサポートしています。
- OpenShift Container Platform 4.12、4.13、4.14、4.15、および OADP 1.2.3 で実行される IBM Power® は、AWS S3 バックアップロケーションターゲットに対して正常にテストされました。テストには AWS S3 ターゲットのみが含まれていましたが、Red Hat は、AWS ではないすべての S3 バックアップロケーションターゲットに対しても、OpenShift Container Platform 4.12、4.13、4.14、4.15、および OADP 1.2.3 に対応する IBM Power の実行をサポートしています。
- OpenShift Container Platform 4.12、4.13、4.14、4.15、および OADP 1.3.3 で実行される IBM Power® は、AWS S3 バックアップロケーションターゲットに対して正常にテストされました。テストには AWS S3 ターゲットのみが含まれていましたが、Red Hat は、AWS ではないすべての S3 バックアップロケーションターゲットに対しても、OpenShift Container Platform 4.12、4.13、4.14、4.15、および OADP 1.2.3 に対応する IBM Power の実行をサポートしています。
4.3.5.2. IBM Z を使用したターゲットバックアップロケーションの OADP テストとサポート
- OpenShift Container Platform 4.11、4.12、および OpenShift API for Data Protection (OADP) 1.1.7 で実行される IBM Z® は、AWS S3 バックアップロケーションターゲットに対して正常にテストされました。テストには AWS S3 ターゲットのみが含まれていましたが、Red Hat は、AWS ではないすべての S3 バックアップロケーションターゲットに対しても、OpenShift Container Platform 4.11 と 4.12、および OADP 1.1.7 に対応する IBM Z® の実行をサポートしています。
- OpenShift Container Platform 4.12、4.13、4.14、4.15、および OADP 1.2.3 で実行されている IBM Z® は、AWS S3 バックアップロケーションターゲットに対して正常にテストされました。テストには AWS S3 ターゲットのみが含まれていましたが、Red Hat は、AWS ではないすべての S3 バックアップロケーションターゲットに対しても、OpenShift Container Platform 4.11、4.12、4.13、4.14、4.15、および OADP 1.2.3 に対応する IBM Z® の実行をサポートしています。
- OpenShift Container Platform 4.12、4.13、4.14、4.15、および 1.3.3 で実行される IBM Z® は、AWS S3 バックアップロケーションターゲットに対して正常にテストされました。テストには AWS S3 ターゲットのみが含まれていましたが、Red Hat は、AWS ではないすべての S3 バックアップロケーションターゲットに対しても、OpenShift Container Platform 4.14、4.15、4.16、および OADP 1.4.1 に対応する IBM Z® の実行をサポートしています。
4.3.6. OADP プラグインの既知の問題
次のセクションでは、OpenShift API for Data Protection (OADP) プラグインの既知の問題を説明します。
4.3.6.1. シークレットがないことで、イメージストリームのバックアップ中に Velero プラグインでパニックが発生する
バックアップとバックアップ保存場所 (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…
4.3.6.1.1. パニックエラーを回避するための回避策
Velero プラグインのパニックエラーを回避するには、次の手順を実行します。
カスタム BSL に適切なラベルを付けます。
$ oc label BackupStorageLocation <bsl_name> app.kubernetes.io/component=bsl
BSL にラベルを付けた後、DPA の調整を待ちます。
注記DPA 自体に軽微な変更を加えることで、強制的に調整を行うことができます。
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'
4.3.6.2. OpenShift ADP Controller のセグメンテーション違反
cloudstorage
と restic
の両方を有効にして DPA を設定すると、openshift-adp-controller-manager
Pod がクラッシュし、Pod がクラッシュループのセグメンテーション違反で失敗するまで無期限に再起動します。
velero
または cloudstorage
は相互に排他的なフィールドであるため、どちらか一方だけ定義できます。
-
velero
とcloudstorage
の両方が定義されている場合、openshift-adp-controller-manager
は失敗します。 -
velero
とcloudstorage
のいずれも定義されていない場合、openshift-adp-controller-manager
は失敗します。
この問題の詳細は、OADP-1054 を参照してください。
4.3.6.2.1. OpenShift ADP Controller のセグメンテーション違反の回避策
DPA の設定時に、velero
または cloudstorage
のいずれかを定義する必要があります。DPA で両方の API を定義すると、openshift-adp-controller-manager
Pod がクラッシュループのセグメンテーション違反で失敗します。