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 リソースと内部イメージをバックアップするには、次のいずれかのストレージタイプなど、バックアップロケーションとしてオブジェクトストレージが必要です。
- Amazon Web Services
- Microsoft Azure
- Google Cloud Platform
- Multicloud Object Gateway
- IBM Cloud® Object Storage S3
- AWS S3 互換オブジェクトストレージ (Multicloud Object Gateway、MinIO など)
個々の OADP デプロイメントごとに、同じ namespace 内に複数のバックアップ保存場所を設定できます。
特に指定のない限り、"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 ストレージに対してのみ有効です。
スナップショットまたはファイルシステムバックアップ (FSB) を使用して、永続ボリューム (PV) をバックアップできます。
スナップショットを使用して PV をバックアップするには、ネイティブスナップショット API または Container Storage Interface (CSI) スナップショットのいずれかをサポートするクラウドプロバイダー (次のいずれかのクラウドプロバイダーなど) が必要です。
- Amazon Web Services
- Microsoft Azure
- Google Cloud Platform
- OpenShift Data Foundation などの 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 である場合は、オブジェクトストレージ上の ファイルシステムバックアップによるアプリケーションのバックアップ: Kopia または Restic を使用してアプリケーションをバックアップできます。
デフォルトの Secret
を作成し、次に、Data Protection Application をインストールします。
4.6.1.1. AWS S3 互換のバックアップストレージプロバイダー
OADP は、さまざまなバックアップおよびスナップショット操作で使用できる多数のオブジェクトストレージプロバイダーと互換性があります。いくつかのオブジェクトストレージプロバイダーは完全にサポートされていますが、いくつかはサポートされていないものの動作することがわかっており、一部には既知の制限があります。
4.6.1.1.1. サポートされているバックアップストレージプロバイダー
次の AWS S3 互換オブジェクトストレージプロバイダーは、AWS プラグインを介して OADP によって完全にサポートされており、バックアップ保存場所として使用できます。
- 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
- Google Cloud Platform (GCP)
- Microsoft Azure
Google Cloud Platform (GCP)と Microsoft Azure には、独自の Velero オブジェクトストアプラグインがあります。
4.6.1.1.2. サポートされていないバックアップストレージプロバイダー
次の AWS S3 互換オブジェクトストレージプロバイダーは、AWS プラグインを介して Velero と連携し、バックアップストレージの場所として使用できることがわかっています。ただし、Red Hat ではサポートされておらず、テストも行われていません。
- Oracle Cloud
- DigitalOcean
- NooBaa (Multicloud Object Gateway (MCG) を使用してインストールされていない場合)
- Tencent Cloud
- Ceph RADOS v12.2.7
- 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 - バックアップストレージのバックアップ保存場所として使用できますが、ファイルシステムベースのボリュームバックアップおよび復元については 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 にアクセスする を参照してください。
手順
- ハイブリッドまたはマルチクラウドのストレージリソースの追加 の説明に従って、MCG を外部オブジェクトストアとして設定します。
4.6.1.3. OADP 更新チャネルについて
OADP Operator をインストールするときに、更新チャネル を選択します。このチャネルにより、OADP Operator と Velero のどちらのアップグレードを受け取るかが決まります。いつでもチャンネルを切り替えることができます。
次の更新チャネルを利用できます。
-
stable チャネルは非推奨になりました。stable チャネルには、
OADP.v1.1.z
およびOADP.v1.0.z
の古いバージョン用の OADPClusterServiceVersion
のパッチ (z-stream 更新) が含まれています。 - stable-1.0 チャネルは非推奨であり、サポートされていません。
- stable-1.1 チャネルは非推奨であり、サポートされていません。
- stable-1.2 チャネルは非推奨であり、サポートされていません。
-
stable-1.3 チャネルには、最新の OADP 1.3
ClusterServiceVersion
のOADP.v1.3.z
が含まれています。 -
stable-1.4 チャネルには、最新の OADP 1.4
ClusterServiceVersion
のOADP.v1.4.z
が含まれています。
詳細は、OpenShift Operator のライフサイクル を参照してください。
適切な更新チャネルはどれですか?
-
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 (OADP) を同じクラスター上の複数の namespace にインストールすると、複数のプロジェクト所有者が独自の OADP インスタンスを管理できるようになります。このユースケースは、ファイルシステムバックアップ (FSB) と Container Storage Interface (CSI) を使用して検証されています。
このドキュメントに含まれるプラットフォームごとの手順で指定されている OADP の各インスタンスを、以下の追加要件とともにインストールします。
- 同じクラスター上のすべての OADP デプロイメントは、同じバージョン (1.1.4 など) である必要があります。同じクラスターに異なるバージョンの OADP をインストールすることはサポートされていません。
-
OADP の個々のデプロイメントには、一意の認証情報セットと一意の
BackupStorageLocation
設定が必要です。同じ namespace 内で、複数のBackupStorageLocation
設定を使用することもできます。 - デフォルトでは、各 OADP デプロイメントには namespace 全体でクラスターレベルのアクセス権があります。OpenShift Container Platform 管理者は、セキュリティーおよび RBAC 設定を注意深く確認し、必要な変更を加えて、各 OADP インスタンスに正しい権限があることを確認する必要があります。
関連情報
4.6.1.5. 収集したデータに基づく Velero CPU およびメモリーの要件
以下の推奨事項は、スケールおよびパフォーマンスのラボで観察したパフォーマンスに基づいています。バックアップおよび復元リソースは、プラグインのタイプ、そのバックアップまたは復元に必要なリソースの量、そのリソースに関連する永続ボリューム (PV) に含まれるデータの影響を受けます。
4.6.1.5.1. 設定に必要な CPU とメモリー
設定タイプ | [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 - 大量使用時 |
- 平均使用量 - ほとんどの状況下でこの設定を使用します。
- 大量使用時 - 大規模な PV (使用量 500 GB)、複数の namespace (100 以上)、または 1 つの namespace に多数の Pod (2000 Pod 以上) があるなどして使用量が大きくなる状況下では、大規模なデータセットを含む場合のバックアップと復元で最適なパフォーマンスを実現するために、この設定を使用します。
- Restic リソースの使用量は、データの量とデータタイプに対応します。たとえば、多数の小さなファイルや大量のデータがある場合は、Restic が大量のリソースを使用する可能性があります。Velero のドキュメントでは、指定されたデフォルト値である 500 m を参照していますが、ほとんどのテストではリクエスト 200 m、制限 1000 m が適切でした。Velero のドキュメントに記載されているとおり、正確な CPU とメモリー使用量は、環境の制限に加えて、ファイルとディレクトリーの規模に依存します。
- CPU を増やすと、バックアップと復元の時間を大幅に短縮できます。
- Data Mover - Data Mover のデフォルトの resourceTimeout は 10 m です。テストでは、大規模な PV (使用量 500 GB) を復元するには、resourceTimeout を 60m に増やす必要があることがわかりました。
このガイド全体に記載されているリソース要件は、平均的な使用量に限定されています。大量に使用する場合は、上の表の説明に従って設定を調整してください。
4.6.1.5.2. 大量使用のための NodeAgent CPU
テストの結果、NodeAgent
CPU を増やすと、OpenShift API for Data Protection (OADP) を使用する際のバックアップと復元の時間が大幅に短縮されることがわかりました。
Kopia はリソースを積極的に消費するため、実稼働環境で実稼働ワークロードを実行しているノードで Kopia を制限なく使用することは推奨されません。ただし、Kopia を実行する際の制限が低すぎると、CPU が制限され、バックアップと復元が遅くなります。テストの結果、20 コアと 32 Gi メモリーで Kopia を実行した場合、100 GB 超のデータ、複数の namespace、または単一 namespace 内の 2000 超の Pod のバックアップと復元操作がサポートされることが判明しました。
テストでは、これらのリソース仕様では CPU の制限やメモリーの飽和は検出されませんでした。
これらの制限を Ceph MDS Pod に設定するには、rook-ceph Pod の CPU およびメモリーリソースの変更 に記載された手順に従ってください。
制限を設定するには、ストレージクラスターのカスタムリソース (CR) に次の行を追加する必要があります。
resources: mds: limits: cpu: "3" memory: 128Gi requests: cpu: "3" memory: 8Gi
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 をインストールします。
前提条件
-
cluster-admin
権限を持つユーザーとしてログインしている。
手順
-
OpenShift Container Platform Web コンソールで、Operators
OperatorHub をクリックします。 - Filter by keyword フィールドを使用して、OADP Operator を検索します。
- OADP Operator を選択し、Install をクリックします。
-
Install をクリックして、
openshift-adp
プロジェクトに Operator をインストールします。 -
Operators
Installed Operators をクリックして、インストールを確認します。
4.6.2.1. OADP-Velero-OpenShift Container Platform バージョンの関係
OADP のバージョン | Velero のバージョン | OpenShift Container Platform バージョン |
---|---|---|
1.1.0 | 4.9 以降 | |
1.1.1 | 4.9 以降 | |
1.1.2 | 4.9 以降 | |
1.1.3 | 4.9 以降 | |
1.1.4 | 4.9 以降 | |
1.1.5 | 4.9 以降 | |
1.1.6 | 4.11 以降 | |
1.1.7 | 4.11 以降 | |
1.2.0 | 4.11 以降 | |
1.2.1 | 4.11 以降 | |
1.2.2 | 4.11 以降 | |
1.2.3 | 4.11 以降 | |
1.3.0 | 4.10 - 4.15 | |
1.3.1 | 4.10 - 4.15 | |
1.3.2 | 4.10 - 4.15 | |
1.4.0 | 4.14 以降 | |
1.4.1 | 4.14 以降 |
4.6.3. 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.6.3.1. Amazon Web Services の設定
OpenShift API for Data Protection (OADP) 用に Amazon Web Services (AWS) を設定します。
前提条件
- AWS CLI がインストールされていること。
手順
BUCKET
変数を設定します。$ BUCKET=<your_bucket>
REGION
変数を設定します。$ REGION=<your_region>
AWS S3 バケットを作成します。
$ aws s3api create-bucket \ --bucket $BUCKET \ --region $REGION \ --create-bucket-configuration LocationConstraint=$REGION 1
- 1
us-east-1
はLocationConstraint
をサポートしていません。お住まいの地域がus-east-1
の場合は、--create-bucket-configuration LocationConstraint=$REGION
を省略してください。
IAM ユーザーを作成します。
$ aws iam create-user --user-name velero 1
- 1
- Velero を使用して複数の S3 バケットを持つ複数のクラスターをバックアップする場合は、クラスターごとに一意のユーザー名を作成します。
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
ポリシーを添付して、
velero
ユーザーに必要最小限の権限を付与します。$ aws iam put-user-policy \ --user-name velero \ --policy-name velero \ --policy-document file://velero-policy.json
velero
ユーザーのアクセスキーを作成します。$ aws iam create-access-key --user-name velero
出力例
{ "AccessKey": { "UserName": "velero", "Status": "Active", "CreateDate": "2017-07-31T22:24:41.576Z", "SecretAccessKey": <AWS_SECRET_ACCESS_KEY>, "AccessKeyId": <AWS_ACCESS_KEY_ID> } }
credentials-velero
ファイルを作成します。$ cat << EOF > ./credentials-velero [default] aws_access_key_id=<AWS_ACCESS_KEY_ID> aws_secret_access_key=<AWS_SECRET_ACCESS_KEY> EOF
Data Protection Application をインストールする前に、
credentials-velero
ファイルを使用して AWS のSecret
オブジェクトを作成します。
4.6.3.2. バックアップおよびスナップショットの場所、ならびにそのシークレットについて
DataProtectionApplication
カスタムリソース (CR) で、バックアップおよびスナップショットの場所、ならびにそのシークレットを指定します。
バックアップの場所
バックアップの場所として、Multicloud Object Gateway、Red Hat Container Storage、Ceph RADOS Gateway (Ceph Object Gateway とも呼ばれます)、Red Hat OpenShift Data Foundation、MinIO などの AWS S3 互換オブジェクトストレージを指定します。
Velero は、オブジェクトストレージのアーカイブファイルとして、OpenShift Container Platform リソース、Kubernetes オブジェクト、および内部イメージをバックアップします。
スナップショットの場所
クラウドプロバイダーのネイティブスナップショット API を使用して永続ボリュームをバックアップする場合、クラウドプロバイダーをスナップショットの場所として指定する必要があります。
Container Storage Interface (CSI) スナップショットを使用する場合、CSI ドライバーを登録するために VolumeSnapshotClass
CR を作成するため、スナップショットの場所を指定する必要はありません。
File System Backup (FSB) を使用する場合、FSB がオブジェクトストレージ上にファイルシステムをバックアップするため、スナップショットの場所を指定する必要はありません。
シークレット
バックアップとスナップショットの場所が同じ認証情報を使用する場合、またはスナップショットの場所が必要ない場合は、デフォルトの Secret
を作成します。
バックアップとスナップショットの場所で異なる認証情報を使用する場合は、次の 2 つの secret オブジェクトを作成します。
-
DataProtectionApplication
CR で指定する、バックアップの場所用のカスタムSecret
。 -
DataProtectionApplication
CR で参照されない、スナップショットの場所用のデフォルトSecret
。
Data Protection Application には、デフォルトの Secret
が必要です。作成しないと、インストールは失敗します。
インストール中にバックアップまたはスナップショットの場所を指定したくない場合は、空の credentials-velero
ファイルを使用してデフォルトの Secret
を作成できます。
4.6.3.2.1. デフォルト Secret の作成
バックアップとスナップショットの場所が同じ認証情報を使用する場合、またはスナップショットの場所が必要ない場合は、デフォルトの Secret
を作成します。
Secret
のデフォルト名は cloud-credentials
です。
DataProtectionApplication
カスタムリソース (CR) にはデフォルトの Secret
が必要です。作成しないと、インストールは失敗します。バックアップの場所の Secret
の名前が指定されていない場合は、デフォルトの名前が使用されます。
インストール時にバックアップの場所の認証情報を使用しない場合は、空の credentials-velero
ファイルを使用してデフォルト名前で Secret
を作成できます。
前提条件
- オブジェクトストレージとクラウドストレージがある場合は、同じ認証情報を使用する必要があります。
- Velero のオブジェクトストレージを設定する必要があります。
-
オブジェクトストレージ用の
credentials-velero
ファイルを適切な形式で作成する必要があります。
手順
デフォルト名で
Secret
を作成します。$ oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-velero
Secret
は、Data Protection Application をインストールするときに、DataProtectionApplication
CR の spec.backupLocations.credential
ブロックで参照されます。
4.6.3.2.2. 異なる認証情報のプロファイルの作成
バックアップとスナップショットの場所で異なる認証情報を使用する場合は、credentials-velero
ファイルに個別のプロファイルを作成します。
次に、Secret
オブジェクトを作成し、DataProtectionApplication
カスタムリソース (CR) でプロファイルを指定します。
手順
次の例のように、バックアップとスナップショットの場所に別々のプロファイルを持つ
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>
credentials-velero
ファイルを使用してSecret
オブジェクトを作成します。$ oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-velero 1
次の例のように、プロファイルを
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"
4.6.3.2.3. AWS を使用したバックアップ保存場所の設定
次の例の手順に示すように、AWS のバックアップ保存場所 (BSL) を設定できます。
前提条件
- AWS を使用してオブジェクトストレージバケットを作成した。
- OADP Operator がインストールされている。
手順
ユースケースに応じて、BSL カスタムリソース (CR) に適切な値を設定します。
バックアップ保存場所
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
- 1 1
- オブジェクトストアプラグインの名前。この例では、プラグインは
aws
です。このフィールドは必須です。 - 2
- バックアップを保存するバケットの名前。このフィールドは必須です。
- 3
- バックアップを保存するバケット内の接頭辞。このフィールドは任意です。
- 4
- バックアップ保存場所の認証情報。カスタムの認証情報を設定できます。カスタムの認証情報が設定されていない場合は、デフォルトの認証情報のシークレットが使用されます。
- 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 は、バックアップのダウンロードやログの取得に使用します。有効な値は
1
と4
です。デフォルトのバージョンは4
です。これは任意のフィールドです。 - 15
- 認証情報ファイル内の AWS プロファイルの名前。デフォルト値は
default
です。これは任意のフィールドです。 - 16
- オブジェクトストアに接続するときに TLS 証明書を検証しない場合 (たとえば、MinIO を使用した自己署名証明書の場合)、
insecureSkipTLSVerify
フィールドをtrue
に設定します。true
に設定すると、中間者攻撃の影響を受けやすくなります。この設定は実稼働ワークロードには推奨されません。デフォルト値はfalse
です。これは任意のフィールドです。 - 17
- 認証情報ファイルを共有設定ファイルとして読み込む場合は、
enableSharedConfig
フィールドをtrue
に設定します。デフォルト値はfalse
です。これは任意のフィールドです。 - 18
- AWS S3 オブジェクトにアノテーションを付けるタグを指定します。キーと値のペアでタグを指定します。デフォルト値は空の文字列 (
""
) です。これは任意のフィールドです。 - 19
- S3 にオブジェクトをアップロードするときに使用するチェックサムアルゴリズムを指定します。サポートされている値は、
CRC32
、CRC32C
、SHA1
、およびSHA256
です。フィールドを空の文字列 (""
) に設定すると、チェックサムチェックがスキップされます。デフォルト値はCRC32
です。これは任意のフィールドです。
4.6.3.2.4. データセキュリティーを強化するための 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 つを空のままにします。-
dpa.spec.backupLocations[].velero.credential
dpa.spec.snapshotLocations[].velero.credential
これは既知の問題 (https://issues.redhat.com/browse/OADP-3971) に対する回避策です。
-
次の手順には、認証情報を指定しない spec:backupLocations
ブロックの例が含まれています。この例では、OADP シークレットのマウントがトリガーされます。
-
バックアップの場所に
cloud-credentials
とは異なる名前の認証情報が必要な場合は、次の例のように、認証情報名を含まないスナップショットの場所を追加する必要があります。この例には認証情報名が含まれていないため、スナップショットの場所では、スナップショットを作成するためのシークレットとしてcloud-credentials
が使用されています。
認証情報が指定されていない DPA 内のスナップショットの場所を示す例
snapshotLocations: - velero: config: profile: default region: <region> provider: aws # ...
手順
SSE-C 暗号鍵を作成します。
次のコマンドを実行して乱数を生成し、
sse.key
という名前のファイルとして保存します。$ dd if=/dev/urandom bs=1 count=32 > sse.key
次のコマンドを実行して、Base64 を使用して
sse.key
をエンコードし、結果をsse_encoded.key
という名前のファイルとして保存します。$ cat sse.key | base64 > sse_encoded.key
次のコマンドを実行して、
sse_encoded.key
という名前のファイルを、customer-key
という名前の新しいファイルにリンクします。$ ln -s sse_encoded.key customer-key
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_encoded.key
既存のインストールを更新する場合は、次の例のように、
DataProtectionApplication
CR マニフェストのcloud-credential
secret
ブロックの値を編集します。apiVersion: v1 data: cloud: W2Rfa2V5X2lkPSJBS0lBVkJRWUIyRkQ0TlFHRFFPQiIKYXdzX3NlY3JldF9hY2Nlc3Nfa2V5P<snip>rUE1mNWVSbTN5K2FpeWhUTUQyQk1WZHBOIgo= customer-key: v+<snip>TFIiq6aaXPbj8dhos= kind: Secret # ...
次の例のように、
DataProtectionApplication
CR マニフェストのbackupLocations
ブロックにあるcustomerKeyEncryptionFile
属性の値を編集します。spec: backupLocations: - velero: config: customerKeyEncryptionFile: /credentials/customer-key profile: default # ...
警告既存のインストール環境でシークレットの認証情報を適切に再マウントするには、Velero Pod を再起動する必要があります。
インストールが完了すると、OpenShift Container Platform リソースをバックアップおよび復元できるようになります。AWS S3 ストレージに保存されるデータは、新しい鍵で暗号化されます。追加の暗号鍵がないと、AWS S3 コンソールまたは API からデータをダウンロードすることはできません。
検証
追加の鍵を含めずに暗号化したファイルをダウンロードできないことを確認するために、テストファイルを作成し、アップロードしてからダウンロードしてみます。
次のコマンドを実行してテストファイルを作成します。
$ echo "encrypt me please" > test.txt
次のコマンドを実行してテストファイルをアップロードします。
$ aws s3api put-object \ --bucket <bucket> \ --key test.txt \ --body test.txt \ --sse-customer-key fileb://sse.key \ --sse-customer-algorithm AES256
ファイルのダウンロードを試みます。Amazon Web コンソールまたはターミナルで、次のコマンドを実行します。
$ s3cmd get s3://<bucket>/test.txt test.txt
ファイルが追加の鍵で暗号化されているため、ダウンロードは失敗します。
次のコマンドを実行して、追加の暗号鍵を含むファイルをダウンロードします。
$ aws s3api get-object \ --bucket <bucket> \ --key test.txt \ --sse-customer-key fileb://sse.key \ --sse-customer-algorithm AES256 \ downloaded.txt
次のコマンドを実行してファイルの内容を読み取ります。
$ cat downloaded.txt
出力例
encrypt me please
関連情報
別のコマンドを実行して、Velcro でバックアップされた追加の暗号鍵を含むファイルをダウンロードすることもできます。Velero によってバックアップされたファイルの SSE-C 暗号鍵を使用してファイルをダウンロードする を参照してください。
4.6.3.2.4.1. Velero によってバックアップされたファイルの SSE-C 暗号鍵を使用してファイルをダウンロードする
SSE-C 暗号鍵を検証するときに、Velcro によってバックアップされたファイルの追加の暗号鍵を含むファイルをダウンロードすることもできます。
手順
- 次のコマンドを実行して、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
4.6.3.3. Data Protection Application の設定
Velero リソースの割り当てを設定するか、自己署名 CA 証明書を有効にして、Data Protection Application を設定できます。
4.6.3.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
Kopia は OADP 1.3 以降のリリースで選択できます。Kopia はファイルシステムのバックアップに使用できます。組み込みの Data Mover を使用する Data Mover の場合は、Kopia が唯一の選択肢になります。
Kopia は Restic よりも多くのリソースを消費するため、それに応じて CPU とメモリーの要件を調整しなければならない場合があります。
nodeSelector
フィールドを使用して、ノードエージェントを実行できるノードを選択します。nodeSelector
フィールドは、推奨される最も単純な形式のノード選択制約です。指定したラベルが、各ノードのラベルと一致する必要があります。
詳細は、ノードエージェントとノードラベルの設定 を参照してください。
4.6.3.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 # ...
4.6.3.3.2.1. Velero デプロイメント用のエイリアス化した velero コマンドで CA 証明書を使用する
Velero CLI のエイリアスを作成することで、システムにローカルにインストールせずに Velero CLI を使用できます。
前提条件
-
cluster-admin
ロールを持つユーザーとして OpenShift Container Platform クラスターにログインしている。 OpenShift CLI (
oc
) がインストールされている。エイリアス化した Velero コマンドを使用するには、次のコマンドを実行します。
$ alias velero='oc -n openshift-adp exec deployment/velero -c velero -it -- ./velero'
次のコマンドを実行して、エイリアスが機能していることを確認します。
例
$ velero version Client: Version: v1.12.1-OADP Git commit: - Server: Version: v1.12.1-OADP
このコマンドで CA 証明書を使用するには、次のコマンドを実行して証明書を Velero デプロイメントに追加できます。
$ CA_CERT=$(oc -n openshift-adp get dataprotectionapplications.oadp.openshift.io <dpa-name> -o jsonpath='{.spec.backupLocations[0].velero.objectStorage.caCert}') $ [[ -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"
$ velero describe backup <backup_name> --details --cacert /tmp/<your_cacert>.txt
バックアップログを取得するために、次のコマンドを実行します。
$ velero backup logs <backup_name> --cacert /tmp/<your_cacert.txt>
このログを使用して、バックアップできないリソースの障害と警告を表示できます。
-
Velero Pod が再起動すると、
/tmp/your-cacert.txt
ファイルが消去されます。そのため、前の手順のコマンドを再実行して/tmp/your-cacert.txt
ファイルを再作成する必要があります。 次のコマンドを実行すると、
/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
OpenShift API for Data Protection (OADP) の今後のリリースでは、この手順が不要になるように証明書を Velero Pod にマウントする予定です。
4.6.3.4. 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
がない場合、インストールは失敗します。
手順
-
Operators
Installed Operators をクリックして、OADP Operator を選択します。 - Provided APIs で、DataProtectionApplication ボックスの Create instance をクリックします。
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
- 1
- OADP のデフォルトの namespace は
openshift-adp
です。namespace は変数であり、設定可能です。 - 2
openshift
プラグインは必須です。- 3
- Velero CRD の可用性、volumeSnapshot の削除、バックアップリポジトリーの可用性など、タイムアウトが発生するまでに複数の Velero リソースを待機する時間を分単位で指定します。デフォルトは 10m です。
- 4
- 管理要求をサーバーにルーティングする管理エージェント。
- 5
nodeAgent
を有効にしてファイルシステムバックアップを実行する場合は、この値をtrue
に設定します。- 6
- アップローダーとして
kopia
またはrestic
と入力します。インストール後に選択を変更することはできません。組み込み DataMover の場合は、Kopia を使用する必要があります。nodeAgent
はデーモンセットをデプロイします。これは、nodeAgent
Pod が各ワーキングノード上で実行されることを意味します。ファイルシステムバックアップを設定するには、spec.defaultVolumesToFsBackup: true
をBackup
CR に追加します。 - 7
- Kopia または Restic が使用可能なノードを指定します。デフォルトでは、Kopia または Restic はすべてのノードで実行されます。
- 8
- バックアップ保存場所としてバケットを指定します。バケットが Velero バックアップ専用のバケットでない場合は、接頭辞を指定する必要があります。
- 9
- バケットが複数の目的で使用される場合は、Velero バックアップの接頭辞を指定します (例:
velero
)。 - 10
- S3 オブジェクトにパススタイルの URL を強制するかどうかを指定します (ブール値)。AWS S3 では必要ありません。S3 互換ストレージにのみ必要です。
- 11
- バックアップを保存するために使用しているオブジェクトストアの URL を指定します。AWS S3 では必要ありません。S3 互換ストレージにのみ必要です。
- 12
- 作成した
Secret
オブジェクトの名前を指定します。この値を指定しない場合は、デフォルト名のcloud-credentials
が使用されます。カスタム名を指定すると、バックアップの場所にカスタム名が使用されます。 - 13
- CSI スナップショットまたはファイルシステムバックアップ (FSB) を使用して PV をバックアップする場合を除き、スナップショットの場所を指定します。
- 14
- スナップショットの場所は、PV と同じリージョンにある必要があります。
- 15
- 作成した
Secret
オブジェクトの名前を指定します。この値を指定しない場合は、デフォルト名のcloud-credentials
が使用されます。カスタム名を指定すると、スナップショットの場所にカスタム名が使用されます。バックアップとスナップショットの場所で異なる認証情報を使用する場合は、credentials-velero
ファイルに個別のプロファイルを作成します。
- Create をクリックします。
検証
次のコマンドを実行して OpenShift API for Data Protection (OADP) リソースを表示し、インストールを検証します。
$ oc get all -n openshift-adp
出力例
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
次のコマンドを実行して、
DataProtectionApplication
(DPA) が調整されていることを確認します。$ oc get dpa dpa-sample -n openshift-adp -o jsonpath='{.status}'
出力例
{"conditions":[{"lastTransitionTime":"2023-10-27T01:23:57Z","message":"Reconcile complete","reason":"Complete","status":"True","type":"Reconciled"}]}
-
type
がReconciled
に設定されていることを確認します。 次のコマンドを実行して、バックアップ保存場所を確認し、
PHASE
がAvailable
であることを確認します。$ oc get backupStorageLocation -n openshift-adp
出力例
NAME PHASE LAST VALIDATED AGE DEFAULT dpa-sample-1 Available 1s 3d16h true
4.6.3.4.1. ノードエージェントとノードラベルの設定
OADP の DPA は、nodeSelector
フィールドを使用して、ノードエージェントを実行できるノードを選択します。nodeSelector
フィールドは、推奨される最も単純な形式のノード選択制約です。
指定したラベルが、各ノードのラベルと一致する必要があります。
選択した任意のノードでノードエージェントを実行する正しい方法は、ノードにカスタムラベルを付けることです。
$ oc label node/<node_name> node-role.kubernetes.io/nodeAgent=""
ノードのラベル付けに使用したのと同じカスタムラベルを DPA.spec.configuration.nodeAgent.podConfig.nodeSelector
で使用します。以下に例を示します。
configuration: nodeAgent: enable: true podConfig: nodeSelector: node-role.kubernetes.io/nodeAgent: ""
次の例は 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: ""
4.6.3.5. 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
- 1
checksumAlgorithm
を指定します。この例では、checksumAlgorithm
フィールドは空の値に設定されています。CRC32
、CRC32C
、SHA1
、SHA256
から選択できます。
Noobaa をオブジェクトストレージプロバイダーとして使用しており、DPA で spec.backupLocations.velero.config.checksumAlgorithm
フィールドを設定していない場合、checksumAlgorithm
の空の値が BSL 設定に追加されます。
空の値は、DPA を使用して作成された BSL に対してのみ追加されます。他の方法で BSL を作成した場合、この値は追加されません。
4.6.3.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
4.6.3.7. 複数の BSL を使用した DPA の設定
複数の BSL を使用して DPA を設定し、クラウドプロバイダーによって提供される認証情報を指定できます。
前提条件
- OADP Operator をインストールする。
- クラウドプロバイダーによって提供される認証情報を使用してシークレットを作成する。
手順
複数の BSL を使用して DPA を設定します。以下の例を参照してください。
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 #...
- 1
- 最初の BSL の名前を指定します。
- 2
- このパラメーターは、この BSL がデフォルトの BSL であることを示します。
Backup CR
に BSL が設定されていない場合は、デフォルトの BSL が使用されます。デフォルトとして設定できる BSL は 1 つだけです。 - 3
- バケット名を指定します。
- 4
- Velero バックアップの接頭辞を指定します (例:
velero
)。 - 5
- バケットの AWS リージョンを指定します。
- 6
- 作成したデフォルトの
Secret
オブジェクトの名前を指定します。 - 7
- 2 番目の BSL の名前を指定します。
- 8
- S3 エンドポイントの URL を指定します。
- 9
Secret
の正しい名前を指定します。たとえば、custom_secret_name_odf
です。Secret
名を指定しない場合は、デフォルトの名前が使用されます。
バックアップ CR で使用する BSL を指定します。以下の例を参照してください。
バックアップ CR の例
apiVersion: velero.io/v1 kind: Backup # ... spec: includedNamespaces: - <namespace> 1 storageLocation: <backup_storage_location> 2 defaultVolumesToFsBackup: true
4.6.3.7.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
- 1
csi
デフォルトプラグインを追加します。
4.6.3.7.2. DataProtectionApplication でノードエージェントを無効にする
バックアップに Restic
、Kopia
、または DataMover
を使用していない場合は、DataProtectionApplication
カスタムリソース (CR) の nodeAgent
フィールドを無効にすることができます。nodeAgent
を無効にする前に、OADP Operator がアイドル状態であり、バックアップを実行していないことを確認してください。
手順
nodeAgent
を無効にするには、enable
フラグをfalse
に設定します。以下の例を参照してください。DataProtectionApplication
CR の例# ... configuration: nodeAgent: enable: false 1 uploaderType: kopia # ...
- 1
- ノードエージェントを無効にします。
nodeAgent
を有効にするには、enable
フラグをtrue
に設定します。以下の例を参照してください。DataProtectionApplication
CR の例# ... configuration: nodeAgent: enable: true 1 uploaderType: kopia # ...
- 1
- ノードエージェントを有効にします。
ジョブをセットアップして、DataProtectionApplication
CR の nodeAgent
フィールドを有効または無効にすることができます。詳細は、「ジョブの使用による Pod でのタスクの実行」を参照してください。
4.6.4. IBM Cloud を使用した OpenShift API for Data Protection の設定
クラスター上のアプリケーションをバックアップおよび復元するには、IBM Cloud クラスターに OpenShift API for Data Protection (OADP) Operator をインストールします。バックアップを保存するには、IBM Cloud Object Storage (COS) を設定します。
4.6.4.1. COS インスタンスの設定
OADP バックアップデータを保存するために、IBM Cloud Object Storage (COS) インスタンスを作成します。COS インスタンスを作成したら、HMAC
サービス認証情報を設定します。
前提条件
- IBM Cloud Platform アカウントをもっている。
- IBM Cloud CLI をインストールしている。
- IBM Cloud にログインしている。
手順
次のコマンドを実行して、IBM Cloud Object Storage (COS) プラグインをインストールします。
$ ibmcloud plugin install cos -f
次のコマンドを実行してバケット名を設定します。
$ BUCKET=<bucket_name>
次のコマンドを実行してバケットリージョンを設定します。
$ REGION=<bucket_region> 1
- 1
- バケットのリージョンを指定します (例:
eu-gb
)。
次のコマンドを実行してリソースグループを作成します。
$ ibmcloud resource group-create <resource_group_name>
次のコマンドを実行して、ターゲットリソースグループを設定します。
$ ibmcloud target -g <resource_group_name>
次のコマンドを実行して、ターゲットリソースグループが正しく設定されていることを確認します。
$ ibmcloud target
出力例
API endpoint: https://cloud.ibm.com Region: User: test-user Account: Test Account (fb6......e95) <-> 2...122 Resource group: Default
出力例では、リソースグループは
Default
に設定されています。次のコマンドを実行してリソースグループ名を設定します。
$ RESOURCE_GROUP=<resource_group> 1
- 1
- リソースグループ名を指定します (例:
"default"
)。
次のコマンドを実行して、IBM Cloud
service-instance
リソースを作成します。$ ibmcloud resource service-instance-create \ <service_instance_name> \1 <service_name> \2 <service_plan> \3 <region_name> 4
コマンドの例
$ ibmcloud resource service-instance-create test-service-instance cloud-object-storage \ 1 standard \ global \ -d premium-global-deployment 2
次のコマンドを実行して、サービスインスタンス ID を抽出します。
$ SERVICE_INSTANCE_ID=$(ibmcloud resource service-instance test-service-instance --output json | jq -r '.[0].id')
次のコマンドを実行して COS バケットを作成します。
$ ibmcloud cos bucket-create \// --bucket $BUCKET \// --ibm-service-instance-id $SERVICE_INSTANCE_ID \// --region $REGION
$BUCKET
、$SERVICE_INSTANCE_ID
、$REGION
などの変数は、以前に設定した値に置き換えられます。次のコマンドを実行して
HMAC
認証情報を作成します。$ ibmcloud resource service-key-create test-key Writer --instance-name test-service-instance --parameters {\"HMAC\":true}
HMAC
認証情報からアクセスキー ID とシークレットアクセスキーを抽出し、credentials-velero
ファイルに保存します。credentials-velero
ファイルを使用して、バックアップ保存場所の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__
4.6.4.2. デフォルト Secret の作成
バックアップとスナップショットの場所が同じ認証情報を使用する場合、またはスナップショットの場所が必要ない場合は、デフォルトの Secret
を作成します。
DataProtectionApplication
カスタムリソース (CR) にはデフォルトの Secret
が必要です。作成しないと、インストールは失敗します。バックアップの場所の Secret
の名前が指定されていない場合は、デフォルトの名前が使用されます。
インストール時にバックアップの場所の認証情報を使用しない場合は、空の credentials-velero
ファイルを使用してデフォルト名前で Secret
を作成できます。
前提条件
- オブジェクトストレージとクラウドストレージがある場合は、同じ認証情報を使用する必要があります。
- Velero のオブジェクトストレージを設定する必要があります。
-
オブジェクトストレージ用の
credentials-velero
ファイルを適切な形式で作成する必要があります。
手順
デフォルト名で
Secret
を作成します。$ oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-velero
Secret
は、Data Protection Application をインストールするときに、DataProtectionApplication
CR の spec.backupLocations.credential
ブロックで参照されます。
4.6.4.3. 異なる認証情報のシークレットの作成
バックアップとスナップショットの場所で異なる認証情報を使用する場合は、次の 2 つの Secret
オブジェクトを作成する必要があります。
-
カスタム名を持つバックアップロケーションの
Secret
。カスタム名は、DataProtectionApplication
カスタムリソース (CR) のspec.backupLocations
ブロックで指定されます。 -
スナップショットの場所
Secret
(デフォルト名はcloud-credentials
)。このSecret
は、DataProtectionApplication
で指定されていません。
手順
-
スナップショットの場所の
credentials-velero
ファイルをクラウドプロバイダーに適した形式で作成します。 デフォルト名でスナップショットの場所の
Secret
を作成します。$ oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-velero
-
オブジェクトストレージに適した形式で、バックアップロケーションの
credentials-velero
ファイルを作成します。 カスタム名を使用してバックアップロケーションの
Secret
を作成します。$ oc create secret generic <custom_secret> -n openshift-adp --from-file cloud=credentials-velero
次の例のように、カスタム名の
Secret
をDataProtectionApplication
に追加します。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>
- 1
- カスタム名を持つバックアップロケーションの
Secret
。
4.6.4.4. Data Protection Application のインストール
DataProtectionApplication
API のインスタンスを作成して、Data Protection Application (DPA) をインストールします。
前提条件
- OADP Operator をインストールする。
- オブジェクトストレージをバックアップロケーションとして設定する必要がある。
- スナップショットを使用して PV をバックアップする場合、クラウドプロバイダーはネイティブスナップショット API または Container Storage Interface (CSI) スナップショットのいずれかをサポートする必要がある。
バックアップとスナップショットの場所で同じ認証情報を使用する場合は、デフォルトの名前である
cloud-credentials
を使用してSecret
を作成する必要がある。注記インストール中にバックアップまたはスナップショットの場所を指定したくない場合は、空の
credentials-velero
ファイルを使用してデフォルトのSecret
を作成できます。デフォルトのSecret
がない場合、インストールは失敗します。
手順
-
Operators
Installed Operators をクリックして、OADP Operator を選択します。 - Provided APIs で、DataProtectionApplication ボックスの Create instance をクリックします。
YAML View をクリックして、
DataProtectionApplication
マニフェストのパラメーターを更新します。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
- 1
- バックアップストレージの場所として IBM Cloud を使用する場合、プロバイダーは
aws
になります。 - 2
- IBM Cloud Object Storage (COS) バケット名を指定します。
- 3
- COS リージョン名を指定します (例:
eu-gb
)。 - 4
- COS バケットの S3 URL を指定します。たとえば、
http://s3.eu-gb.cloud-object-storage.appdomain.cloud
です。ここで、eu-gb
はリージョン名です。バケットのリージョンに応じてリージョン名を置き換えます。 - 5
HMAC
認証情報からのアクセスキーとシークレットアクセスキーを使用して作成したシークレットの名前を定義します。
- Create をクリックします。
検証
次のコマンドを実行して OpenShift API for Data Protection (OADP) リソースを表示し、インストールを検証します。
$ oc get all -n openshift-adp
出力例
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
次のコマンドを実行して、
DataProtectionApplication
(DPA) が調整されていることを確認します。$ oc get dpa dpa-sample -n openshift-adp -o jsonpath='{.status}'
出力例
{"conditions":[{"lastTransitionTime":"2023-10-27T01:23:57Z","message":"Reconcile complete","reason":"Complete","status":"True","type":"Reconciled"}]}
-
type
がReconciled
に設定されていることを確認します。 次のコマンドを実行して、バックアップ保存場所を確認し、
PHASE
がAvailable
であることを確認します。$ oc get backupStorageLocation -n openshift-adp
出力例
NAME PHASE LAST VALIDATED AGE DEFAULT dpa-sample-1 Available 1s 3d16h true
4.6.4.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
Kopia は OADP 1.3 以降のリリースで選択できます。Kopia はファイルシステムのバックアップに使用できます。組み込みの Data Mover を使用する Data Mover の場合は、Kopia が唯一の選択肢になります。
Kopia は Restic よりも多くのリソースを消費するため、それに応じて CPU とメモリーの要件を調整しなければならない場合があります。
4.6.4.6. ノードエージェントとノードラベルの設定
OADP の DPA は、nodeSelector
フィールドを使用して、ノードエージェントを実行できるノードを選択します。nodeSelector
フィールドは、推奨される最も単純な形式のノード選択制約です。
指定したラベルが、各ノードのラベルと一致する必要があります。
選択した任意のノードでノードエージェントを実行する正しい方法は、ノードにカスタムラベルを付けることです。
$ oc label node/<node_name> node-role.kubernetes.io/nodeAgent=""
ノードのラベル付けに使用したのと同じカスタムラベルを DPA.spec.configuration.nodeAgent.podConfig.nodeSelector
で使用します。以下に例を示します。
configuration: nodeAgent: enable: true podConfig: nodeSelector: node-role.kubernetes.io/nodeAgent: ""
次の例は 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: ""
4.6.4.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
4.6.4.8. 複数の BSL を使用した DPA の設定
複数の BSL を使用して DPA を設定し、クラウドプロバイダーによって提供される認証情報を指定できます。
前提条件
- OADP Operator をインストールする。
- クラウドプロバイダーによって提供される認証情報を使用してシークレットを作成する。
手順
複数の BSL を使用して DPA を設定します。以下の例を参照してください。
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 #...
- 1
- 最初の BSL の名前を指定します。
- 2
- このパラメーターは、この BSL がデフォルトの BSL であることを示します。
Backup CR
に BSL が設定されていない場合は、デフォルトの BSL が使用されます。デフォルトとして設定できる BSL は 1 つだけです。 - 3
- バケット名を指定します。
- 4
- Velero バックアップの接頭辞を指定します (例:
velero
)。 - 5
- バケットの AWS リージョンを指定します。
- 6
- 作成したデフォルトの
Secret
オブジェクトの名前を指定します。 - 7
- 2 番目の BSL の名前を指定します。
- 8
- S3 エンドポイントの URL を指定します。
- 9
Secret
の正しい名前を指定します。たとえば、custom_secret_name_odf
です。Secret
名を指定しない場合は、デフォルトの名前が使用されます。
バックアップ CR で使用する BSL を指定します。以下の例を参照してください。
バックアップ CR の例
apiVersion: velero.io/v1 kind: Backup # ... spec: includedNamespaces: - <namespace> 1 storageLocation: <backup_storage_location> 2 defaultVolumesToFsBackup: true
4.6.4.9. DataProtectionApplication でノードエージェントを無効にする
バックアップに Restic
、Kopia
、または DataMover
を使用していない場合は、DataProtectionApplication
カスタムリソース (CR) の nodeAgent
フィールドを無効にすることができます。nodeAgent
を無効にする前に、OADP Operator がアイドル状態であり、バックアップを実行していないことを確認してください。
手順
nodeAgent
を無効にするには、enable
フラグをfalse
に設定します。以下の例を参照してください。DataProtectionApplication
CR の例# ... configuration: nodeAgent: enable: false 1 uploaderType: kopia # ...
- 1
- ノードエージェントを無効にします。
nodeAgent
を有効にするには、enable
フラグをtrue
に設定します。以下の例を参照してください。DataProtectionApplication
CR の例# ... configuration: nodeAgent: enable: true 1 uploaderType: kopia # ...
- 1
- ノードエージェントを有効にします。
ジョブをセットアップして、DataProtectionApplication
CR の nodeAgent
フィールドを有効または無効にすることができます。詳細は、「ジョブの使用による Pod でのタスクの実行」を参照してください。
4.6.5. 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.6.5.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.6.5.2. バックアップおよびスナップショットの場所、ならびにそのシークレットについて
DataProtectionApplication
カスタムリソース (CR) で、バックアップおよびスナップショットの場所、ならびにそのシークレットを指定します。
バックアップの場所
バックアップの場所として、Multicloud Object Gateway、Red Hat Container Storage、Ceph RADOS Gateway (Ceph Object Gateway とも呼ばれます)、Red Hat OpenShift Data Foundation、MinIO などの AWS S3 互換オブジェクトストレージを指定します。
Velero は、オブジェクトストレージのアーカイブファイルとして、OpenShift Container Platform リソース、Kubernetes オブジェクト、および内部イメージをバックアップします。
スナップショットの場所
クラウドプロバイダーのネイティブスナップショット API を使用して永続ボリュームをバックアップする場合、クラウドプロバイダーをスナップショットの場所として指定する必要があります。
Container Storage Interface (CSI) スナップショットを使用する場合、CSI ドライバーを登録するために VolumeSnapshotClass
CR を作成するため、スナップショットの場所を指定する必要はありません。
File System Backup (FSB) を使用する場合、FSB がオブジェクトストレージ上にファイルシステムをバックアップするため、スナップショットの場所を指定する必要はありません。
シークレット
バックアップとスナップショットの場所が同じ認証情報を使用する場合、またはスナップショットの場所が必要ない場合は、デフォルトの Secret
を作成します。
バックアップとスナップショットの場所で異なる認証情報を使用する場合は、次の 2 つの secret オブジェクトを作成します。
-
DataProtectionApplication
CR で指定する、バックアップの場所用のカスタムSecret
。 -
DataProtectionApplication
CR で参照されない、スナップショットの場所用のデフォルトSecret
。
Data Protection Application には、デフォルトの Secret
が必要です。作成しないと、インストールは失敗します。
インストール中にバックアップまたはスナップショットの場所を指定したくない場合は、空の credentials-velero
ファイルを使用してデフォルトの Secret
を作成できます。
4.6.5.2.1. デフォルト Secret の作成
バックアップとスナップショットの場所が同じ認証情報を使用する場合、またはスナップショットの場所が必要ない場合は、デフォルトの Secret
を作成します。
Secret
のデフォルト名は cloud-credentials-azure
です。
DataProtectionApplication
カスタムリソース (CR) にはデフォルトの Secret
が必要です。作成しないと、インストールは失敗します。バックアップの場所の Secret
の名前が指定されていない場合は、デフォルトの名前が使用されます。
インストール時にバックアップの場所の認証情報を使用しない場合は、空の credentials-velero
ファイルを使用してデフォルト名前で Secret
を作成できます。
前提条件
- オブジェクトストレージとクラウドストレージがある場合は、同じ認証情報を使用する必要があります。
- Velero のオブジェクトストレージを設定する必要があります。
-
オブジェクトストレージ用の
credentials-velero
ファイルを適切な形式で作成する必要があります。
手順
デフォルト名で
Secret
を作成します。$ oc create secret generic cloud-credentials-azure -n openshift-adp --from-file cloud=credentials-velero
Secret
は、Data Protection Application をインストールするときに、DataProtectionApplication
CR の spec.backupLocations.credential
ブロックで参照されます。
4.6.5.2.2. 異なる認証情報のシークレットの作成
バックアップとスナップショットの場所で異なる認証情報を使用する場合は、次の 2 つの Secret
オブジェクトを作成する必要があります。
-
カスタム名を持つバックアップロケーションの
Secret
。カスタム名は、DataProtectionApplication
カスタムリソース (CR) のspec.backupLocations
ブロックで指定されます。 -
スナップショットの場所
Secret
(デフォルト名はcloud-credentials-azure
)。このSecret
は、DataProtectionApplication
で指定されていません。
手順
-
スナップショットの場所の
credentials-velero
ファイルをクラウドプロバイダーに適した形式で作成します。 デフォルト名でスナップショットの場所の
Secret
を作成します。$ oc create secret generic cloud-credentials-azure -n openshift-adp --from-file cloud=credentials-velero
-
オブジェクトストレージに適した形式で、バックアップロケーションの
credentials-velero
ファイルを作成します。 カスタム名を使用してバックアップロケーションの
Secret
を作成します。$ oc create secret generic <custom_secret> -n openshift-adp --from-file cloud=credentials-velero
次の例のように、カスタム名の
Secret
をDataProtectionApplication
に追加します。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> storageAccountKeyEnvVar: AZURE_STORAGE_ACCOUNT_ACCESS_KEY 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
- 1
- カスタム名を持つバックアップロケーションの
Secret
。
4.6.5.3. Data Protection Application の設定
Velero リソースの割り当てを設定するか、自己署名 CA 証明書を有効にして、Data Protection Application を設定できます。
4.6.5.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
Kopia は OADP 1.3 以降のリリースで選択できます。Kopia はファイルシステムのバックアップに使用できます。組み込みの Data Mover を使用する Data Mover の場合は、Kopia が唯一の選択肢になります。
Kopia は Restic よりも多くのリソースを消費するため、それに応じて CPU とメモリーの要件を調整しなければならない場合があります。
nodeSelector
フィールドを使用して、ノードエージェントを実行できるノードを選択します。nodeSelector
フィールドは、推奨される最も単純な形式のノード選択制約です。指定したラベルが、各ノードのラベルと一致する必要があります。
詳細は、ノードエージェントとノードラベルの設定 を参照してください。
4.6.5.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 # ...
4.6.5.3.2.1. Velero デプロイメント用のエイリアス化した velero コマンドで CA 証明書を使用する
Velero CLI のエイリアスを作成することで、システムにローカルにインストールせずに Velero CLI を使用できます。
前提条件
-
cluster-admin
ロールを持つユーザーとして OpenShift Container Platform クラスターにログインしている。 OpenShift CLI (
oc
) がインストールされている。エイリアス化した Velero コマンドを使用するには、次のコマンドを実行します。
$ alias velero='oc -n openshift-adp exec deployment/velero -c velero -it -- ./velero'
次のコマンドを実行して、エイリアスが機能していることを確認します。
例
$ velero version Client: Version: v1.12.1-OADP Git commit: - Server: Version: v1.12.1-OADP
このコマンドで CA 証明書を使用するには、次のコマンドを実行して証明書を Velero デプロイメントに追加できます。
$ CA_CERT=$(oc -n openshift-adp get dataprotectionapplications.oadp.openshift.io <dpa-name> -o jsonpath='{.spec.backupLocations[0].velero.objectStorage.caCert}') $ [[ -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"
$ velero describe backup <backup_name> --details --cacert /tmp/<your_cacert>.txt
バックアップログを取得するために、次のコマンドを実行します。
$ velero backup logs <backup_name> --cacert /tmp/<your_cacert.txt>
このログを使用して、バックアップできないリソースの障害と警告を表示できます。
-
Velero Pod が再起動すると、
/tmp/your-cacert.txt
ファイルが消去されます。そのため、前の手順のコマンドを再実行して/tmp/your-cacert.txt
ファイルを再作成する必要があります。 次のコマンドを実行すると、
/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
OpenShift API for Data Protection (OADP) の今後のリリースでは、この手順が不要になるように証明書を Velero Pod にマウントする予定です。
4.6.5.4. 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
がない場合、インストールは失敗します。
手順
-
Operators
Installed Operators をクリックして、OADP Operator を選択します。 - Provided APIs で、DataProtectionApplication ボックスの Create instance をクリックします。
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 storageAccountKeyEnvVar: AZURE_STORAGE_ACCOUNT_ACCESS_KEY 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
- 1
- OADP のデフォルトの namespace は
openshift-adp
です。namespace は変数であり、設定可能です。 - 2
openshift
プラグインは必須です。- 3
- Velero CRD の可用性、volumeSnapshot の削除、バックアップリポジトリーの可用性など、タイムアウトが発生するまでに複数の Velero リソースを待機する時間を分単位で指定します。デフォルトは 10m です。
- 4
- 管理要求をサーバーにルーティングする管理エージェント。
- 5
nodeAgent
を有効にしてファイルシステムバックアップを実行する場合は、この値をtrue
に設定します。- 6
- アップローダーとして
kopia
またはrestic
と入力します。インストール後に選択を変更することはできません。組み込み DataMover の場合は、Kopia を使用する必要があります。nodeAgent
はデーモンセットをデプロイします。これは、nodeAgent
Pod が各ワーキングノード上で実行されることを意味します。ファイルシステムバックアップを設定するには、spec.defaultVolumesToFsBackup: true
をBackup
CR に追加します。 - 7
- Kopia または Restic が使用可能なノードを指定します。デフォルトでは、Kopia または Restic はすべてのノードで実行されます。
- 8
- Azure リソースグループを指定します。
- 9
- Azure ストレージアカウント ID を指定します。
- 10
- Azure サブスクリプション ID を指定します。
- 11
- この値を指定しない場合は、デフォルト名の
cloud-credentials-azure
が使用されます。カスタム名を指定すると、バックアップの場所にカスタム名が使用されます。 - 12
- バックアップ保存場所としてバケットを指定します。バケットが Velero バックアップ専用のバケットでない場合は、接頭辞を指定する必要があります。
- 13
- バケットが複数の目的で使用される場合は、Velero バックアップの接頭辞を指定します (例:
velero
)。 - 14
- CSI スナップショットまたは Restic を使用して PV をバックアップする場合は、スナップショットの場所を指定する必要はありません。
- 15
- 作成した
Secret
オブジェクトの名前を指定します。この値を指定しない場合は、デフォルト名のcloud-credentials-azure
が使用されます。カスタム名を指定すると、バックアップの場所にカスタム名が使用されます。
- Create をクリックします。
検証
次のコマンドを実行して OpenShift API for Data Protection (OADP) リソースを表示し、インストールを検証します。
$ oc get all -n openshift-adp
出力例
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
次のコマンドを実行して、
DataProtectionApplication
(DPA) が調整されていることを確認します。$ oc get dpa dpa-sample -n openshift-adp -o jsonpath='{.status}'
出力例
{"conditions":[{"lastTransitionTime":"2023-10-27T01:23:57Z","message":"Reconcile complete","reason":"Complete","status":"True","type":"Reconciled"}]}
-
type
がReconciled
に設定されていることを確認します。 次のコマンドを実行して、バックアップ保存場所を確認し、
PHASE
がAvailable
であることを確認します。$ oc get backupStorageLocation -n openshift-adp
出力例
NAME PHASE LAST VALIDATED AGE DEFAULT dpa-sample-1 Available 1s 3d16h true
4.6.5.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
4.6.5.5.1. ノードエージェントとノードラベルの設定
OADP の DPA は、nodeSelector
フィールドを使用して、ノードエージェントを実行できるノードを選択します。nodeSelector
フィールドは、推奨される最も単純な形式のノード選択制約です。
指定したラベルが、各ノードのラベルと一致する必要があります。
選択した任意のノードでノードエージェントを実行する正しい方法は、ノードにカスタムラベルを付けることです。
$ oc label node/<node_name> node-role.kubernetes.io/nodeAgent=""
ノードのラベル付けに使用したのと同じカスタムラベルを DPA.spec.configuration.nodeAgent.podConfig.nodeSelector
で使用します。以下に例を示します。
configuration: nodeAgent: enable: true podConfig: nodeSelector: node-role.kubernetes.io/nodeAgent: ""
次の例は 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: ""
4.6.5.5.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
- 1
csi
デフォルトプラグインを追加します。
4.6.5.5.3. DataProtectionApplication でノードエージェントを無効にする
バックアップに Restic
、Kopia
、または DataMover
を使用していない場合は、DataProtectionApplication
カスタムリソース (CR) の nodeAgent
フィールドを無効にすることができます。nodeAgent
を無効にする前に、OADP Operator がアイドル状態であり、バックアップを実行していないことを確認してください。
手順
nodeAgent
を無効にするには、enable
フラグをfalse
に設定します。以下の例を参照してください。DataProtectionApplication
CR の例# ... configuration: nodeAgent: enable: false 1 uploaderType: kopia # ...
- 1
- ノードエージェントを無効にします。
nodeAgent
を有効にするには、enable
フラグをtrue
に設定します。以下の例を参照してください。DataProtectionApplication
CR の例# ... configuration: nodeAgent: enable: true 1 uploaderType: kopia # ...
- 1
- ノードエージェントを有効にします。
ジョブをセットアップして、DataProtectionApplication
CR の nodeAgent
フィールドを有効または無効にすることができます。詳細は、「ジョブの使用による Pod でのタスクの実行」を参照してください。
4.6.6. Google Cloud Platform を使用した OpenShift API for Data Protection の設定
OADP Operator をインストールすることで、Google Cloud Platform (GCP) を使用して 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 向けに GCP を設定し、デフォルトの Secret
を作成し、次に、Data Protection Application をインストールします。詳細は、OADP Operator のインストール を参照してください。
制限されたネットワーク環境に OADP Operator をインストールするには、最初にデフォルトの OperatorHub ソースを無効にして、Operator カタログをミラーリングする必要があります。詳細は、ネットワークが制限された環境での Operator Lifecycle Manager の使用 を参照してください。
4.6.6.1. Google Cloud Platform の設定
OpenShift API for Data Protection (OADP) 用に Google Cloud Platform (GCP) を設定します。
前提条件
-
gcloud
およびgsutil
CLI ツールがインストールされている必要があります。詳細は、Google Cloud のドキュメント をご覧ください。
手順
GCP にログインします。
$ gcloud auth login
BUCKET
変数を設定します。$ BUCKET=<bucket> 1
- 1
- バケット名を指定します。
ストレージバケットを作成します。
$ gsutil mb gs://$BUCKET/
PROJECT_ID
変数をアクティブなプロジェクトに設定します。$ PROJECT_ID=$(gcloud config get-value project)
サービスアカウントを作成します。
$ gcloud iam service-accounts create velero \ --display-name "Velero service account"
サービスアカウントをリスト表示します。
$ gcloud iam service-accounts list
email
の値と一致するようにSERVICE_ACCOUNT_EMAIL
変数を設定します。$ SERVICE_ACCOUNT_EMAIL=$(gcloud iam service-accounts list \ --filter="displayName:Velero service account" \ --format 'value(email)')
ポリシーを添付して、
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 )
velero.server
カスタムロールを作成します。$ gcloud iam roles create velero.server \ --project $PROJECT_ID \ --title "Velero Server" \ --permissions "$(IFS=","; echo "${ROLE_PERMISSIONS[*]}")"
IAM ポリシーバインディングをプロジェクトに追加します。
$ gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$SERVICE_ACCOUNT_EMAIL \ --role projects/$PROJECT_ID/roles/velero.server
IAM サービスアカウントを更新します。
$ gsutil iam ch serviceAccount:$SERVICE_ACCOUNT_EMAIL:objectAdmin gs://${BUCKET}
IAM サービスアカウントのキーを現在のディレクトリーにある
credentials-velero
ファイルに保存します。$ gcloud iam service-accounts keys create credentials-velero \ --iam-account $SERVICE_ACCOUNT_EMAIL
Data Protection Application をインストールする前に、
credentials-velero
ファイルを使用して GCP のSecret
オブジェクトを作成します。
4.6.6.2. バックアップおよびスナップショットの場所、ならびにそのシークレットについて
DataProtectionApplication
カスタムリソース (CR) で、バックアップおよびスナップショットの場所、ならびにそのシークレットを指定します。
バックアップの場所
バックアップの場所として、Multicloud Object Gateway、Red Hat Container Storage、Ceph RADOS Gateway (Ceph Object Gateway とも呼ばれます)、Red Hat OpenShift Data Foundation、MinIO などの AWS S3 互換オブジェクトストレージを指定します。
Velero は、オブジェクトストレージのアーカイブファイルとして、OpenShift Container Platform リソース、Kubernetes オブジェクト、および内部イメージをバックアップします。
スナップショットの場所
クラウドプロバイダーのネイティブスナップショット API を使用して永続ボリュームをバックアップする場合、クラウドプロバイダーをスナップショットの場所として指定する必要があります。
Container Storage Interface (CSI) スナップショットを使用する場合、CSI ドライバーを登録するために VolumeSnapshotClass
CR を作成するため、スナップショットの場所を指定する必要はありません。
File System Backup (FSB) を使用する場合、FSB がオブジェクトストレージ上にファイルシステムをバックアップするため、スナップショットの場所を指定する必要はありません。
シークレット
バックアップとスナップショットの場所が同じ認証情報を使用する場合、またはスナップショットの場所が必要ない場合は、デフォルトの Secret
を作成します。
バックアップとスナップショットの場所で異なる認証情報を使用する場合は、次の 2 つの secret オブジェクトを作成します。
-
DataProtectionApplication
CR で指定する、バックアップの場所用のカスタムSecret
。 -
DataProtectionApplication
CR で参照されない、スナップショットの場所用のデフォルトSecret
。
Data Protection Application には、デフォルトの Secret
が必要です。作成しないと、インストールは失敗します。
インストール中にバックアップまたはスナップショットの場所を指定したくない場合は、空の credentials-velero
ファイルを使用してデフォルトの Secret
を作成できます。
4.6.6.2.1. デフォルト Secret の作成
バックアップとスナップショットの場所が同じ認証情報を使用する場合、またはスナップショットの場所が必要ない場合は、デフォルトの Secret
を作成します。
Secret
のデフォルト名は cloud-credentials-gcp
です。
DataProtectionApplication
カスタムリソース (CR) にはデフォルトの Secret
が必要です。作成しないと、インストールは失敗します。バックアップの場所の Secret
の名前が指定されていない場合は、デフォルトの名前が使用されます。
インストール時にバックアップの場所の認証情報を使用しない場合は、空の credentials-velero
ファイルを使用してデフォルト名前で Secret
を作成できます。
前提条件
- オブジェクトストレージとクラウドストレージがある場合は、同じ認証情報を使用する必要があります。
- Velero のオブジェクトストレージを設定する必要があります。
-
オブジェクトストレージ用の
credentials-velero
ファイルを適切な形式で作成する必要があります。
手順
デフォルト名で
Secret
を作成します。$ oc create secret generic cloud-credentials-gcp -n openshift-adp --from-file cloud=credentials-velero
Secret
は、Data Protection Application をインストールするときに、DataProtectionApplication
CR の spec.backupLocations.credential
ブロックで参照されます。
4.6.6.2.2. 異なる認証情報のシークレットの作成
バックアップとスナップショットの場所で異なる認証情報を使用する場合は、次の 2 つの Secret
オブジェクトを作成する必要があります。
-
カスタム名を持つバックアップロケーションの
Secret
。カスタム名は、DataProtectionApplication
カスタムリソース (CR) のspec.backupLocations
ブロックで指定されます。 -
スナップショットの場所
Secret
(デフォルト名はcloud-credentials-gcp
)。このSecret
は、DataProtectionApplication
で指定されていません。
手順
-
スナップショットの場所の
credentials-velero
ファイルをクラウドプロバイダーに適した形式で作成します。 デフォルト名でスナップショットの場所の
Secret
を作成します。$ oc create secret generic cloud-credentials-gcp -n openshift-adp --from-file cloud=credentials-velero
-
オブジェクトストレージに適した形式で、バックアップロケーションの
credentials-velero
ファイルを作成します。 カスタム名を使用してバックアップロケーションの
Secret
を作成します。$ oc create secret generic <custom_secret> -n openshift-adp --from-file cloud=credentials-velero
次の例のように、カスタム名の
Secret
をDataProtectionApplication
に追加します。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
- 1
- カスタム名を持つバックアップロケーションの
Secret
。
4.6.6.3. Data Protection Application の設定
Velero リソースの割り当てを設定するか、自己署名 CA 証明書を有効にして、Data Protection Application を設定できます。
4.6.6.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
Kopia は OADP 1.3 以降のリリースで選択できます。Kopia はファイルシステムのバックアップに使用できます。組み込みの Data Mover を使用する Data Mover の場合は、Kopia が唯一の選択肢になります。
Kopia は Restic よりも多くのリソースを消費するため、それに応じて CPU とメモリーの要件を調整しなければならない場合があります。
nodeSelector
フィールドを使用して、ノードエージェントを実行できるノードを選択します。nodeSelector
フィールドは、推奨される最も単純な形式のノード選択制約です。指定したラベルが、各ノードのラベルと一致する必要があります。
詳細は、ノードエージェントとノードラベルの設定 を参照してください。
4.6.6.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 # ...
4.6.6.3.2.1. Velero デプロイメント用のエイリアス化した velero コマンドで CA 証明書を使用する
Velero CLI のエイリアスを作成することで、システムにローカルにインストールせずに Velero CLI を使用できます。
前提条件
-
cluster-admin
ロールを持つユーザーとして OpenShift Container Platform クラスターにログインしている。 OpenShift CLI (
oc
) がインストールされている。エイリアス化した Velero コマンドを使用するには、次のコマンドを実行します。
$ alias velero='oc -n openshift-adp exec deployment/velero -c velero -it -- ./velero'
次のコマンドを実行して、エイリアスが機能していることを確認します。
例
$ velero version Client: Version: v1.12.1-OADP Git commit: - Server: Version: v1.12.1-OADP
このコマンドで CA 証明書を使用するには、次のコマンドを実行して証明書を Velero デプロイメントに追加できます。
$ CA_CERT=$(oc -n openshift-adp get dataprotectionapplications.oadp.openshift.io <dpa-name> -o jsonpath='{.spec.backupLocations[0].velero.objectStorage.caCert}') $ [[ -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"
$ velero describe backup <backup_name> --details --cacert /tmp/<your_cacert>.txt
バックアップログを取得するために、次のコマンドを実行します。
$ velero backup logs <backup_name> --cacert /tmp/<your_cacert.txt>
このログを使用して、バックアップできないリソースの障害と警告を表示できます。
-
Velero Pod が再起動すると、
/tmp/your-cacert.txt
ファイルが消去されます。そのため、前の手順のコマンドを再実行して/tmp/your-cacert.txt
ファイルを再作成する必要があります。 次のコマンドを実行すると、
/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
OpenShift API for Data Protection (OADP) の今後のリリースでは、この手順が不要になるように証明書を Velero Pod にマウントする予定です。
4.6.6.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 連携認証を使用した GCP 上の OADP は、CSI スナップショットのみをサポートします。
Google Workload Identity 連携認証を使用した GCP 上の OADP は、Volume Snapshot Locations (VSL) バックアップをサポートしません。詳細は、Google Workload Identity 連携の既知の問題 を参照してください。
Google Workload Identity 連携クラウド認証を使用しない場合は、Data Protection Application のインストール に進みます。
前提条件
- GCP Workload Identity を設定 して、クラスターを主導モードでインストールしている。
-
Cloud Credential Operator ユーティリティー (
ccoctl
) と、関連する Workload Identity プールにアクセスできる。
手順
次のコマンドを実行して、
oadp-credrequest
ディレクトリーを作成します。$ mkdir -p oadp-credrequest
次のように、
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
次のコマンドを実行し、
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>
これで、次のステップで
manifests/openshift-adp-cloud-credentials-gcp-credentials.yaml
ファイルを使用できるようになりました。次のコマンドを実行して、namespace を作成します。
$ oc create namespace <OPERATOR_INSTALL_NS>
次のコマンドを実行して、認証情報を namespace に適用します。
$ oc apply -f manifests/openshift-adp-cloud-credentials-gcp-credentials.yaml
4.6.6.4.1. Google Workload Identity 連携の既知の問題
-
GCP Workload Identity 連携が設定されている場合、Volume Snapshot Location (VSL) バックアップは
PartiallyFailed
フェーズで終了します。Google Workload Identity 連携認証は、VSL バックアップをサポートしません。
4.6.6.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
がない場合、インストールは失敗します。
手順
-
Operators
Installed Operators をクリックして、OADP Operator を選択します。 - Provided APIs で、DataProtectionApplication ボックスの Create instance をクリックします。
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
- 1
- OADP のデフォルトの namespace は
openshift-adp
です。namespace は変数であり、設定可能です。 - 2
openshift
プラグインは必須です。- 3
- Velero CRD の可用性、volumeSnapshot の削除、バックアップリポジトリーの可用性など、タイムアウトが発生するまでに複数の Velero リソースを待機する時間を分単位で指定します。デフォルトは 10m です。
- 4
- 管理要求をサーバーにルーティングする管理エージェント。
- 5
nodeAgent
を有効にしてファイルシステムバックアップを実行する場合は、この値をtrue
に設定します。- 6
- アップローダーとして
kopia
またはrestic
と入力します。インストール後に選択を変更することはできません。組み込み DataMover の場合は、Kopia を使用する必要があります。nodeAgent
はデーモンセットをデプロイします。これは、nodeAgent
Pod が各ワーキングノード上で実行されることを意味します。ファイルシステムバックアップを設定するには、spec.defaultVolumesToFsBackup: true
をBackup
CR に追加します。 - 7
- Kopia または Restic が使用可能なノードを指定します。デフォルトでは、Kopia または Restic はすべてのノードで実行されます。
- 8
- 認証情報を含む秘密鍵。Google Workload Identity 連携クラウド認証の場合は、
service_account.json
を使用します。 - 9
- 認証情報を含むシークレットの名前。この値を指定しない場合は、デフォルトの名前である
cloud-credentials-gcp
が使用されます。 - 10
- バックアップ保存場所としてバケットを指定します。バケットが Velero バックアップ専用のバケットでない場合は、接頭辞を指定する必要があります。
- 11
- バケットが複数の目的で使用される場合は、Velero バックアップの接頭辞を指定します (例:
velero
)。 - 12
- CSI スナップショットまたは Restic を使用して PV をバックアップする場合を除き、スナップショットの場所を指定します。
- 13
- スナップショットの場所は、PV と同じリージョンにある必要があります。
- 14
- 作成した
Secret
オブジェクトの名前を指定します。この値を指定しない場合は、デフォルトの名前であるcloud-credentials-gcp
が使用されます。カスタム名を指定すると、バックアップの場所にカスタム名が使用されます。 - 15
- Google Workload Identity 連携は、内部イメージのバックアップをサポートしています。イメージのバックアップを使用しない場合は、このフィールドを
false
に設定します。
- Create をクリックします。
検証
次のコマンドを実行して OpenShift API for Data Protection (OADP) リソースを表示し、インストールを検証します。
$ oc get all -n openshift-adp
出力例
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
次のコマンドを実行して、
DataProtectionApplication
(DPA) が調整されていることを確認します。$ oc get dpa dpa-sample -n openshift-adp -o jsonpath='{.status}'
出力例
{"conditions":[{"lastTransitionTime":"2023-10-27T01:23:57Z","message":"Reconcile complete","reason":"Complete","status":"True","type":"Reconciled"}]}
-
type
がReconciled
に設定されていることを確認します。 次のコマンドを実行して、バックアップ保存場所を確認し、
PHASE
がAvailable
であることを確認します。$ oc get backupStorageLocation -n openshift-adp
出力例
NAME PHASE LAST VALIDATED AGE DEFAULT dpa-sample-1 Available 1s 3d16h true
4.6.6.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
4.6.6.6.1. ノードエージェントとノードラベルの設定
OADP の DPA は、nodeSelector
フィールドを使用して、ノードエージェントを実行できるノードを選択します。nodeSelector
フィールドは、推奨される最も単純な形式のノード選択制約です。
指定したラベルが、各ノードのラベルと一致する必要があります。
選択した任意のノードでノードエージェントを実行する正しい方法は、ノードにカスタムラベルを付けることです。
$ oc label node/<node_name> node-role.kubernetes.io/nodeAgent=""
ノードのラベル付けに使用したのと同じカスタムラベルを DPA.spec.configuration.nodeAgent.podConfig.nodeSelector
で使用します。以下に例を示します。
configuration: nodeAgent: enable: true podConfig: nodeSelector: node-role.kubernetes.io/nodeAgent: ""
次の例は 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: ""
4.6.6.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
- 1
csi
デフォルトプラグインを追加します。
4.6.6.6.3. DataProtectionApplication でノードエージェントを無効にする
バックアップに Restic
、Kopia
、または DataMover
を使用していない場合は、DataProtectionApplication
カスタムリソース (CR) の nodeAgent
フィールドを無効にすることができます。nodeAgent
を無効にする前に、OADP Operator がアイドル状態であり、バックアップを実行していないことを確認してください。
手順
nodeAgent
を無効にするには、enable
フラグをfalse
に設定します。以下の例を参照してください。DataProtectionApplication
CR の例# ... configuration: nodeAgent: enable: false 1 uploaderType: kopia # ...
- 1
- ノードエージェントを無効にします。
nodeAgent
を有効にするには、enable
フラグをtrue
に設定します。以下の例を参照してください。DataProtectionApplication
CR の例# ... configuration: nodeAgent: enable: true 1 uploaderType: kopia # ...
- 1
- ノードエージェントを有効にします。
ジョブをセットアップして、DataProtectionApplication
CR の nodeAgent
フィールドを有効または無効にすることができます。詳細は、「ジョブの使用による Pod でのタスクの実行」を参照してください。
4.6.7. Multicloud Object Gateway を使用した OpenShift API for Data Protection の設定
OADP Operator をインストールすることで、Multicloud Object Gateway (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 として使用することはできません。
Multicloud Object Gateway をバックアップの場所として設定します。MCG は、OpenShift Data Foundation のコンポーネントです。MCG は、DataProtectionApplication
カスタムリソース (CR) のバックアップロケーションとして設定します。
オブジェクトストレージのバケット作成を自動化する CloudStorage
API は、テクノロジープレビュー機能のみです。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
バックアップの場所の Secret
を作成し、次に、Data Protection Application をインストールします。詳細は、OADP Operator のインストール を参照してください。
制限されたネットワーク環境に OADP Operator をインストールするには、最初にデフォルトの OperatorHub ソースを無効にして、Operator カタログをミラーリングする必要があります。詳細は、ネットワークが制限された環境での Operator Lifecycle Manager の使用 を参照してください。
4.6.7.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 プラグインをダウンロードします。
前提条件
- 適切な Red Hat OpenShift Data Foundation デプロイメントガイド を使用して、OpenShift Data Foundation をデプロイする必要があります。
手順
-
NooBaa
カスタムリソースでdescribe
コマンドを実行して、S3 エンドポイントであるAWS_ACCESS_KEY_ID
およびAWS_SECRET_ACCESS_KEY
を取得します。 credentials-velero
ファイルを作成します。$ cat << EOF > ./credentials-velero [default] aws_access_key_id=<AWS_ACCESS_KEY_ID> aws_secret_access_key=<AWS_SECRET_ACCESS_KEY> EOF
Data Protection Application をインストールする際に、
credentials-velero
ファイルを使用してSecret
オブジェクトを作成します。
4.6.7.2. バックアップおよびスナップショットの場所、ならびにそのシークレットについて
DataProtectionApplication
カスタムリソース (CR) で、バックアップおよびスナップショットの場所、ならびにそのシークレットを指定します。
バックアップの場所
バックアップの場所として、Multicloud Object Gateway、Red Hat Container Storage、Ceph RADOS Gateway (Ceph Object Gateway とも呼ばれます)、Red Hat OpenShift Data Foundation、MinIO などの AWS S3 互換オブジェクトストレージを指定します。
Velero は、オブジェクトストレージのアーカイブファイルとして、OpenShift Container Platform リソース、Kubernetes オブジェクト、および内部イメージをバックアップします。
スナップショットの場所
クラウドプロバイダーのネイティブスナップショット API を使用して永続ボリュームをバックアップする場合、クラウドプロバイダーをスナップショットの場所として指定する必要があります。
Container Storage Interface (CSI) スナップショットを使用する場合、CSI ドライバーを登録するために VolumeSnapshotClass
CR を作成するため、スナップショットの場所を指定する必要はありません。
File System Backup (FSB) を使用する場合、FSB がオブジェクトストレージ上にファイルシステムをバックアップするため、スナップショットの場所を指定する必要はありません。
シークレット
バックアップとスナップショットの場所が同じ認証情報を使用する場合、またはスナップショットの場所が必要ない場合は、デフォルトの Secret
を作成します。
バックアップとスナップショットの場所で異なる認証情報を使用する場合は、次の 2 つの secret オブジェクトを作成します。
-
DataProtectionApplication
CR で指定する、バックアップの場所用のカスタムSecret
。 -
DataProtectionApplication
CR で参照されない、スナップショットの場所用のデフォルトSecret
。
Data Protection Application には、デフォルトの Secret
が必要です。作成しないと、インストールは失敗します。
インストール中にバックアップまたはスナップショットの場所を指定したくない場合は、空の credentials-velero
ファイルを使用してデフォルトの Secret
を作成できます。
4.6.7.2.1. デフォルト Secret の作成
バックアップとスナップショットの場所が同じ認証情報を使用する場合、またはスナップショットの場所が必要ない場合は、デフォルトの Secret
を作成します。
Secret
のデフォルト名は cloud-credentials
です。
DataProtectionApplication
カスタムリソース (CR) にはデフォルトの Secret
が必要です。作成しないと、インストールは失敗します。バックアップの場所の Secret
の名前が指定されていない場合は、デフォルトの名前が使用されます。
インストール時にバックアップの場所の認証情報を使用しない場合は、空の credentials-velero
ファイルを使用してデフォルト名前で Secret
を作成できます。
前提条件
- オブジェクトストレージとクラウドストレージがある場合は、同じ認証情報を使用する必要があります。
- Velero のオブジェクトストレージを設定する必要があります。
-
オブジェクトストレージ用の
credentials-velero
ファイルを適切な形式で作成する必要があります。
手順
デフォルト名で
Secret
を作成します。$ oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-velero
Secret
は、Data Protection Application をインストールするときに、DataProtectionApplication
CR の spec.backupLocations.credential
ブロックで参照されます。
4.6.7.2.2. 異なる認証情報のシークレットの作成
バックアップとスナップショットの場所で異なる認証情報を使用する場合は、次の 2 つの Secret
オブジェクトを作成する必要があります。
-
カスタム名を持つバックアップロケーションの
Secret
。カスタム名は、DataProtectionApplication
カスタムリソース (CR) のspec.backupLocations
ブロックで指定されます。 -
スナップショットの場所
Secret
(デフォルト名はcloud-credentials
)。このSecret
は、DataProtectionApplication
で指定されていません。
手順
-
スナップショットの場所の
credentials-velero
ファイルをクラウドプロバイダーに適した形式で作成します。 デフォルト名でスナップショットの場所の
Secret
を作成します。$ oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-velero
-
オブジェクトストレージに適した形式で、バックアップロケーションの
credentials-velero
ファイルを作成します。 カスタム名を使用してバックアップロケーションの
Secret
を作成します。$ oc create secret generic <custom_secret> -n openshift-adp --from-file cloud=credentials-velero
次の例のように、カスタム名の
Secret
をDataProtectionApplication
に追加します。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>
4.6.7.3. Data Protection Application の設定
Velero リソースの割り当てを設定するか、自己署名 CA 証明書を有効にして、Data Protection Application を設定できます。
4.6.7.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
Kopia は OADP 1.3 以降のリリースで選択できます。Kopia はファイルシステムのバックアップに使用できます。組み込みの Data Mover を使用する Data Mover の場合は、Kopia が唯一の選択肢になります。
Kopia は Restic よりも多くのリソースを消費するため、それに応じて CPU とメモリーの要件を調整しなければならない場合があります。
nodeSelector
フィールドを使用して、ノードエージェントを実行できるノードを選択します。nodeSelector
フィールドは、推奨される最も単純な形式のノード選択制約です。指定したラベルが、各ノードのラベルと一致する必要があります。
詳細は、ノードエージェントとノードラベルの設定 を参照してください。
4.6.7.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 # ...
4.6.7.3.2.1. Velero デプロイメント用のエイリアス化した velero コマンドで CA 証明書を使用する
Velero CLI のエイリアスを作成することで、システムにローカルにインストールせずに Velero CLI を使用できます。
前提条件
-
cluster-admin
ロールを持つユーザーとして OpenShift Container Platform クラスターにログインしている。 OpenShift CLI (
oc
) がインストールされている。エイリアス化した Velero コマンドを使用するには、次のコマンドを実行します。
$ alias velero='oc -n openshift-adp exec deployment/velero -c velero -it -- ./velero'
次のコマンドを実行して、エイリアスが機能していることを確認します。
例
$ velero version Client: Version: v1.12.1-OADP Git commit: - Server: Version: v1.12.1-OADP
このコマンドで CA 証明書を使用するには、次のコマンドを実行して証明書を Velero デプロイメントに追加できます。
$ CA_CERT=$(oc -n openshift-adp get dataprotectionapplications.oadp.openshift.io <dpa-name> -o jsonpath='{.spec.backupLocations[0].velero.objectStorage.caCert}') $ [[ -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"
$ velero describe backup <backup_name> --details --cacert /tmp/<your_cacert>.txt
バックアップログを取得するために、次のコマンドを実行します。
$ velero backup logs <backup_name> --cacert /tmp/<your_cacert.txt>
このログを使用して、バックアップできないリソースの障害と警告を表示できます。
-
Velero Pod が再起動すると、
/tmp/your-cacert.txt
ファイルが消去されます。そのため、前の手順のコマンドを再実行して/tmp/your-cacert.txt
ファイルを再作成する必要があります。 次のコマンドを実行すると、
/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
OpenShift API for Data Protection (OADP) の今後のリリースでは、この手順が不要になるように証明書を Velero Pod にマウントする予定です。
4.6.7.4. Data Protection Application のインストール
DataProtectionApplication
API のインスタンスを作成して、Data Protection Application (DPA) をインストールします。
前提条件
- OADP Operator をインストールする。
- オブジェクトストレージをバックアップロケーションとして設定する必要がある。
- スナップショットを使用して PV をバックアップする場合、クラウドプロバイダーはネイティブスナップショット API または Container Storage Interface (CSI) スナップショットのいずれかをサポートする必要がある。
バックアップとスナップショットの場所で同じ認証情報を使用する場合は、デフォルトの名前である
cloud-credentials
を使用してSecret
を作成する必要がある。注記インストール中にバックアップまたはスナップショットの場所を指定したくない場合は、空の
credentials-velero
ファイルを使用してデフォルトのSecret
を作成できます。デフォルトのSecret
がない場合、インストールは失敗します。
手順
-
Operators
Installed Operators をクリックして、OADP Operator を選択します。 - Provided APIs で、DataProtectionApplication ボックスの Create instance をクリックします。
YAML View をクリックして、
DataProtectionApplication
マニフェストのパラメーターを更新します。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
- 1
- OADP のデフォルトの namespace は
openshift-adp
です。namespace は変数であり、設定可能です。 - 2
- ストレージの場所に対応したオブジェクトストアプラグインが必要です。すべての S3 プロバイダーで、
aws
プラグインが必要です。Azure および GCP オブジェクトストアの場合、azure
またはgcp
プラグインが必要です。 - 3
openshift
プラグインは必須です。- 4
- Velero CRD の可用性、volumeSnapshot の削除、バックアップリポジトリーの可用性など、タイムアウトが発生するまでに複数の Velero リソースを待機する時間を分単位で指定します。デフォルトは 10m です。
- 5
- 管理要求をサーバーにルーティングする管理エージェント。
- 6
nodeAgent
を有効にしてファイルシステムバックアップを実行する場合は、この値をtrue
に設定します。- 7
- アップローダーとして
kopia
またはrestic
と入力します。インストール後に選択を変更することはできません。組み込み DataMover の場合は、Kopia を使用する必要があります。nodeAgent
はデーモンセットをデプロイします。これは、nodeAgent
Pod が各ワーキングノード上で実行されることを意味します。ファイルシステムバックアップを設定するには、spec.defaultVolumesToFsBackup: true
をBackup
CR に追加します。 - 8
- Kopia または Restic が使用可能なノードを指定します。デフォルトでは、Kopia または Restic はすべてのノードで実行されます。
- 9
- オブジェクトストレージサーバーのドキュメントの命名規則に従って、リージョンを指定します。
- 10
- S3 エンドポイントの URL を指定します。
- 11
- 作成した
Secret
オブジェクトの名前を指定します。この値を指定しない場合は、デフォルト名のcloud-credentials
が使用されます。カスタム名を指定すると、バックアップの場所にカスタム名が使用されます。 - 12
- バックアップ保存場所としてバケットを指定します。バケットが Velero バックアップ専用のバケットでない場合は、接頭辞を指定する必要があります。
- 13
- バケットが複数の目的で使用される場合は、Velero バックアップの接頭辞を指定します (例:
velero
)。
- Create をクリックします。
検証
次のコマンドを実行して OpenShift API for Data Protection (OADP) リソースを表示し、インストールを検証します。
$ oc get all -n openshift-adp
出力例
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
次のコマンドを実行して、
DataProtectionApplication
(DPA) が調整されていることを確認します。$ oc get dpa dpa-sample -n openshift-adp -o jsonpath='{.status}'
出力例
{"conditions":[{"lastTransitionTime":"2023-10-27T01:23:57Z","message":"Reconcile complete","reason":"Complete","status":"True","type":"Reconciled"}]}
-
type
がReconciled
に設定されていることを確認します。 次のコマンドを実行して、バックアップ保存場所を確認し、
PHASE
がAvailable
であることを確認します。$ oc get backupStorageLocation -n openshift-adp
出力例
NAME PHASE LAST VALIDATED AGE DEFAULT dpa-sample-1 Available 1s 3d16h true
4.6.7.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
4.6.7.5.1. ノードエージェントとノードラベルの設定
OADP の DPA は、nodeSelector
フィールドを使用して、ノードエージェントを実行できるノードを選択します。nodeSelector
フィールドは、推奨される最も単純な形式のノード選択制約です。
指定したラベルが、各ノードのラベルと一致する必要があります。
選択した任意のノードでノードエージェントを実行する正しい方法は、ノードにカスタムラベルを付けることです。
$ oc label node/<node_name> node-role.kubernetes.io/nodeAgent=""
ノードのラベル付けに使用したのと同じカスタムラベルを DPA.spec.configuration.nodeAgent.podConfig.nodeSelector
で使用します。以下に例を示します。
configuration: nodeAgent: enable: true podConfig: nodeSelector: node-role.kubernetes.io/nodeAgent: ""
次の例は 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: ""
4.6.7.5.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
- 1
csi
デフォルトプラグインを追加します。
4.6.7.5.3. DataProtectionApplication でノードエージェントを無効にする
バックアップに Restic
、Kopia
、または DataMover
を使用していない場合は、DataProtectionApplication
カスタムリソース (CR) の nodeAgent
フィールドを無効にすることができます。nodeAgent
を無効にする前に、OADP Operator がアイドル状態であり、バックアップを実行していないことを確認してください。
手順
nodeAgent
を無効にするには、enable
フラグをfalse
に設定します。以下の例を参照してください。DataProtectionApplication
CR の例# ... configuration: nodeAgent: enable: false 1 uploaderType: kopia # ...
- 1
- ノードエージェントを無効にします。
nodeAgent
を有効にするには、enable
フラグをtrue
に設定します。以下の例を参照してください。DataProtectionApplication
CR の例# ... configuration: nodeAgent: enable: true 1 uploaderType: kopia # ...
- 1
- ノードエージェントを有効にします。
ジョブをセットアップして、DataProtectionApplication
CR の nodeAgent
フィールドを有効または無効にすることができます。詳細は、「ジョブの使用による Pod でのタスクの実行」を参照してください。
4.6.8. 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
を作成し、次に、Data Protection Application をインストールします。詳細は、OADP Operator のインストール を参照してください。
制限されたネットワーク環境に OADP Operator をインストールするには、最初にデフォルトの OperatorHub ソースを無効にして、Operator カタログをミラーリングする必要があります。詳細は、ネットワークが制限された環境での Operator Lifecycle Manager の使用 を参照してください。
4.6.8.1. バックアップおよびスナップショットの場所、ならびにそのシークレットについて
DataProtectionApplication
カスタムリソース (CR) で、バックアップおよびスナップショットの場所、ならびにそのシークレットを指定します。
バックアップの場所
バックアップの場所として、Multicloud Object Gateway、Red Hat Container Storage、Ceph RADOS Gateway (Ceph Object Gateway とも呼ばれます)、Red Hat OpenShift Data Foundation、MinIO などの AWS S3 互換オブジェクトストレージを指定します。
Velero は、オブジェクトストレージのアーカイブファイルとして、OpenShift Container Platform リソース、Kubernetes オブジェクト、および内部イメージをバックアップします。
スナップショットの場所
クラウドプロバイダーのネイティブスナップショット API を使用して永続ボリュームをバックアップする場合、クラウドプロバイダーをスナップショットの場所として指定する必要があります。
Container Storage Interface (CSI) スナップショットを使用する場合、CSI ドライバーを登録するために VolumeSnapshotClass
CR を作成するため、スナップショットの場所を指定する必要はありません。
File System Backup (FSB) を使用する場合、FSB がオブジェクトストレージ上にファイルシステムをバックアップするため、スナップショットの場所を指定する必要はありません。
シークレット
バックアップとスナップショットの場所が同じ認証情報を使用する場合、またはスナップショットの場所が必要ない場合は、デフォルトの Secret
を作成します。
バックアップとスナップショットの場所で異なる認証情報を使用する場合は、次の 2 つの secret オブジェクトを作成します。
-
DataProtectionApplication
CR で指定する、バックアップの場所用のカスタムSecret
。 -
DataProtectionApplication
CR で参照されない、スナップショットの場所用のデフォルトSecret
。
Data Protection Application には、デフォルトの Secret
が必要です。作成しないと、インストールは失敗します。
インストール中にバックアップまたはスナップショットの場所を指定したくない場合は、空の credentials-velero
ファイルを使用してデフォルトの Secret
を作成できます。
4.6.8.1.1. デフォルト Secret の作成
バックアップとスナップショットの場所が同じ認証情報を使用する場合、またはスナップショットの場所が必要ない場合は、デフォルトの Secret
を作成します。
バックアップストレージプロバイダーに aws
、azure
、または gcp
などのデフォルトのプラグインがない限り、Secret
のデフォルト名は cloud-credentials
です。その場合、プロバイダー固有の OADP インストール手順でデフォルト名が指定されています。
DataProtectionApplication
カスタムリソース (CR) にはデフォルトの Secret
が必要です。作成しないと、インストールは失敗します。バックアップの場所の Secret
の名前が指定されていない場合は、デフォルトの名前が使用されます。
インストール時にバックアップの場所の認証情報を使用しない場合は、空の credentials-velero
ファイルを使用してデフォルト名前で Secret
を作成できます。
前提条件
- オブジェクトストレージとクラウドストレージがある場合は、同じ認証情報を使用する必要があります。
- Velero のオブジェクトストレージを設定する必要があります。
-
オブジェクトストレージ用の
credentials-velero
ファイルを適切な形式で作成する必要があります。
手順
デフォルト名で
Secret
を作成します。$ oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-velero
Secret
は、Data Protection Application をインストールするときに、DataProtectionApplication
CR の spec.backupLocations.credential
ブロックで参照されます。
4.6.8.1.2. 異なる認証情報のシークレットの作成
バックアップとスナップショットの場所で異なる認証情報を使用する場合は、次の 2 つの Secret
オブジェクトを作成する必要があります。
-
カスタム名を持つバックアップロケーションの
Secret
。カスタム名は、DataProtectionApplication
カスタムリソース (CR) のspec.backupLocations
ブロックで指定されます。 -
スナップショットの場所
Secret
(デフォルト名はcloud-credentials
)。このSecret
は、DataProtectionApplication
で指定されていません。
手順
-
スナップショットの場所の
credentials-velero
ファイルをクラウドプロバイダーに適した形式で作成します。 デフォルト名でスナップショットの場所の
Secret
を作成します。$ oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-velero
-
オブジェクトストレージに適した形式で、バックアップロケーションの
credentials-velero
ファイルを作成します。 カスタム名を使用してバックアップロケーションの
Secret
を作成します。$ oc create secret generic <custom_secret> -n openshift-adp --from-file cloud=credentials-velero
次の例のように、カスタム名の
Secret
をDataProtectionApplication
に追加します。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>
- 1
- カスタム名を持つバックアップロケーションの
Secret
。
4.6.8.2. Data Protection Application の設定
Velero リソースの割り当てを設定するか、自己署名 CA 証明書を有効にして、Data Protection Application を設定できます。
4.6.8.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
Kopia は OADP 1.3 以降のリリースで選択できます。Kopia はファイルシステムのバックアップに使用できます。組み込みの Data Mover を使用する Data Mover の場合は、Kopia が唯一の選択肢になります。
Kopia は Restic よりも多くのリソースを消費するため、それに応じて CPU とメモリーの要件を調整しなければならない場合があります。
nodeSelector
フィールドを使用して、ノードエージェントを実行できるノードを選択します。nodeSelector
フィールドは、推奨される最も単純な形式のノード選択制約です。指定したラベルが、各ノードのラベルと一致する必要があります。
詳細は、ノードエージェントとノードラベルの設定 を参照してください。
4.6.8.2.1.1. 収集したデータに基づき Ceph の CPU およびメモリー要件を調整する
以下の推奨事項は、スケールおよびパフォーマンスのラボで観察したパフォーマンスに基づいています。この変更は、特に Red Hat OpenShift Data Foundation (ODF) に関連しています。ODF を使用する場合は、適切なチューニングガイドで公式の推奨事項を確認してください。
4.6.8.2.1.1.1. 設定に必要な CPU とメモリー
バックアップおよび復元操作には、大量の CephFS PersistentVolumes
(PV) が必要です。out-of-memory
(OOM) エラーによる Ceph MDS Pod の再起動を回避するためには、次の設定が推奨されます。
設定タイプ | 要求 | 上限 |
---|---|---|
CPU | 要求が 3 に変更されました | 上限は 3 |
メモリー | 要求が 8 Gi に変更されました | 上限は 128 Gi |
4.6.8.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 # ...
4.6.8.2.2.1. Velero デプロイメント用のエイリアス化した velero コマンドで CA 証明書を使用する
Velero CLI のエイリアスを作成することで、システムにローカルにインストールせずに Velero CLI を使用できます。
前提条件
-
cluster-admin
ロールを持つユーザーとして OpenShift Container Platform クラスターにログインしている。 OpenShift CLI (
oc
) がインストールされている。エイリアス化した Velero コマンドを使用するには、次のコマンドを実行します。
$ alias velero='oc -n openshift-adp exec deployment/velero -c velero -it -- ./velero'
次のコマンドを実行して、エイリアスが機能していることを確認します。
例
$ velero version Client: Version: v1.12.1-OADP Git commit: - Server: Version: v1.12.1-OADP
このコマンドで CA 証明書を使用するには、次のコマンドを実行して証明書を Velero デプロイメントに追加できます。
$ CA_CERT=$(oc -n openshift-adp get dataprotectionapplications.oadp.openshift.io <dpa-name> -o jsonpath='{.spec.backupLocations[0].velero.objectStorage.caCert}') $ [[ -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"
$ velero describe backup <backup_name> --details --cacert /tmp/<your_cacert>.txt
バックアップログを取得するために、次のコマンドを実行します。
$ velero backup logs <backup_name> --cacert /tmp/<your_cacert.txt>
このログを使用して、バックアップできないリソースの障害と警告を表示できます。
-
Velero Pod が再起動すると、
/tmp/your-cacert.txt
ファイルが消去されます。そのため、前の手順のコマンドを再実行して/tmp/your-cacert.txt
ファイルを再作成する必要があります。 次のコマンドを実行すると、
/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
OpenShift API for Data Protection (OADP) の今後のリリースでは、この手順が不要になるように証明書を Velero Pod にマウントする予定です。
4.6.8.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
がない場合、インストールは失敗します。
手順
-
Operators
Installed Operators をクリックして、OADP Operator を選択します。 - Provided APIs で、DataProtectionApplication ボックスの Create instance をクリックします。
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
- 1
- OADP のデフォルトの namespace は
openshift-adp
です。namespace は変数であり、設定可能です。 - 2
- ストレージの場所に対応したオブジェクトストアプラグインが必要です。すべての S3 プロバイダーで、
aws
プラグインが必要です。Azure および GCP オブジェクトストアの場合、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
を有効にしてファイルシステムバックアップを実行する場合は、この値をtrue
に設定します。- 9
- アップローダーとして
kopia
またはrestic
と入力します。インストール後に選択を変更することはできません。組み込み DataMover の場合は、Kopia を使用する必要があります。nodeAgent
はデーモンセットをデプロイします。これは、nodeAgent
Pod が各ワーキングノード上で実行されることを意味します。ファイルシステムバックアップを設定するには、spec.defaultVolumesToFsBackup: true
をBackup
CR に追加します。 - 10
- Kopia または Restic が使用可能なノードを指定します。デフォルトでは、Kopia または Restic はすべてのノードで実行されます。
- 11
- バックアッププロバイダーを指定します。
- 12
- バックアッププロバイダーにデフォルトのプラグインを使用する場合は、
Secret
の正しいデフォルト名を指定します (例:cloud-credentials-gcp
)。カスタム名を指定すると、そのカスタム名がバックアップの場所に使用されます。Secret
名を指定しない場合は、デフォルトの名前が使用されます。 - 13
- バックアップ保存場所としてバケットを指定します。バケットが Velero バックアップ専用のバケットでない場合は、接頭辞を指定する必要があります。
- 14
- バケットが複数の目的で使用される場合は、Velero バックアップの接頭辞を指定します (例:
velero
)。
- Create をクリックします。
検証
次のコマンドを実行して OpenShift API for Data Protection (OADP) リソースを表示し、インストールを検証します。
$ oc get all -n openshift-adp
出力例
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
次のコマンドを実行して、
DataProtectionApplication
(DPA) が調整されていることを確認します。$ oc get dpa dpa-sample -n openshift-adp -o jsonpath='{.status}'
出力例
{"conditions":[{"lastTransitionTime":"2023-10-27T01:23:57Z","message":"Reconcile complete","reason":"Complete","status":"True","type":"Reconciled"}]}
-
type
がReconciled
に設定されていることを確認します。 次のコマンドを実行して、バックアップ保存場所を確認し、
PHASE
がAvailable
であることを確認します。$ oc get backupStorageLocation -n openshift-adp
出力例
NAME PHASE LAST VALIDATED AGE DEFAULT dpa-sample-1 Available 1s 3d16h true
4.6.8.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
4.6.8.4.1. ノードエージェントとノードラベルの設定
OADP の DPA は、nodeSelector
フィールドを使用して、ノードエージェントを実行できるノードを選択します。nodeSelector
フィールドは、推奨される最も単純な形式のノード選択制約です。
指定したラベルが、各ノードのラベルと一致する必要があります。
選択した任意のノードでノードエージェントを実行する正しい方法は、ノードにカスタムラベルを付けることです。
$ oc label node/<node_name> node-role.kubernetes.io/nodeAgent=""
ノードのラベル付けに使用したのと同じカスタムラベルを DPA.spec.configuration.nodeAgent.podConfig.nodeSelector
で使用します。以下に例を示します。
configuration: nodeAgent: enable: true podConfig: nodeSelector: node-role.kubernetes.io/nodeAgent: ""
次の例は 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: ""
4.6.8.4.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 にアクセスする を参照してください。
手順
- OpenShift Web コンソールを使用した Object Bucket Claim の作成 に記載されているとおり、OpenShift Web コンソールを使用して Object Bucket Claim (OBC) を作成します。
4.6.8.4.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
- 1
csi
デフォルトプラグインを追加します。
4.6.8.4.4. DataProtectionApplication でノードエージェントを無効にする
バックアップに Restic
、Kopia
、または DataMover
を使用していない場合は、DataProtectionApplication
カスタムリソース (CR) の nodeAgent
フィールドを無効にすることができます。nodeAgent
を無効にする前に、OADP Operator がアイドル状態であり、バックアップを実行していないことを確認してください。
手順
nodeAgent
を無効にするには、enable
フラグをfalse
に設定します。以下の例を参照してください。DataProtectionApplication
CR の例# ... configuration: nodeAgent: enable: false 1 uploaderType: kopia # ...
- 1
- ノードエージェントを無効にします。
nodeAgent
を有効にするには、enable
フラグをtrue
に設定します。以下の例を参照してください。DataProtectionApplication
CR の例# ... configuration: nodeAgent: enable: true 1 uploaderType: kopia # ...
- 1
- ノードエージェントを有効にします。
ジョブをセットアップして、DataProtectionApplication
CR の nodeAgent
フィールドを有効または無効にすることができます。詳細は、「ジョブの使用による Pod でのタスクの実行」を参照してください。
4.6.9. 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) バックアップ
次のストレージオプションは対象外です。
- ファイルシステムのバックアップと復元
- ボリュームスナップショットのバックアップと復元
詳細は、ファイルシステムバックアップを使用してアプリケーションをバックアップする: Kopia または Restic を参照してください。
制限されたネットワーク環境に OADP Operator をインストールするには、最初にデフォルトの OperatorHub ソースを無効にして、Operator カタログをミラーリングする必要があります。詳細は、ネットワークが制限された環境での Operator Lifecycle Manager の使用 を参照してください。
4.6.9.1. OpenShift Virtualization を使用した OADP のインストールと設定
クラスター管理者は、OADP Operator をインストールして OADP をインストールします。
最新バージョンの OADP Operator は、Velero 1.14 をインストールします。
前提条件
-
cluster-admin
ロールを持つユーザーとしてクラスターにアクセスできる。
手順
- ストレージプロバイダーの指示に従って、OADP Operator をインストールします。
-
kubevirt
およびopenshift
OADP プラグインを使用して Data Protection Application (DPA) をインストールします。 Backup
カスタムリソース (CR) を作成して、仮想マシンをバックアップします。警告Red Hat のサポート対象は、次のオプションに限られています。
- CSI バックアップ
- DataMover による CSI バックアップ
Restore
CR を作成して Backup
CR を復元します。
4.6.9.2. Data Protection Application のインストール
DataProtectionApplication
API のインスタンスを作成して、Data Protection Application (DPA) をインストールします。
前提条件
- OADP Operator をインストールする。
- オブジェクトストレージをバックアップロケーションとして設定する必要がある。
- スナップショットを使用して PV をバックアップする場合、クラウドプロバイダーはネイティブスナップショット API または Container Storage Interface (CSI) スナップショットのいずれかをサポートする必要がある。
-
バックアップとスナップショットの場所で同じ認証情報を使用する場合は、デフォルトの名前である
cloud-credentials
を使用してSecret
を作成する必要がある。 バックアップとスナップショットの場所で異なる認証情報を使用する場合は、以下のように 2 つの
Secrets
を作成する必要がある。-
バックアップの場所用のカスタム名を持つ
Secret
。このSecret
をDataProtectionApplication
CR に追加します。 -
スナップショットの場所用の別のカスタム名を持つ
Secret
。このSecret
をDataProtectionApplication
CR に追加します。
注記インストール中にバックアップまたはスナップショットの場所を指定したくない場合は、空の
credentials-velero
ファイルを使用してデフォルトのSecret
を作成できます。デフォルトのSecret
がない場合、インストールは失敗します。-
バックアップの場所用のカスタム名を持つ
手順
-
Operators
Installed Operators をクリックして、OADP Operator を選択します。 - Provided APIs で、DataProtectionApplication ボックスの Create instance をクリックします。
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
- 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
を有効にしてファイルシステムバックアップを実行する場合は、この値をtrue
に設定します。- 9
- 組み込み DataMover を使用するには、アップローダーとして
kopia
と入力します。nodeAgent
はデーモンセットをデプロイします。これは、nodeAgent
Pod が各ワーキングノード上で実行されることを意味します。ファイルシステムバックアップを設定するには、spec.defaultVolumesToFsBackup: true
をBackup
CR に追加します。 - 10
- Kopia が利用可能なノードを指定します。デフォルトでは、Kopia はすべてのノードで実行されます。
- 11
- バックアッププロバイダーを指定します。
- 12
- バックアッププロバイダーにデフォルトのプラグインを使用する場合は、
Secret
の正しいデフォルト名を指定します (例:cloud-credentials-gcp
)。カスタム名を指定すると、そのカスタム名がバックアップの場所に使用されます。Secret
名を指定しない場合は、デフォルトの名前が使用されます。 - 13
- バックアップ保存場所としてバケットを指定します。バケットが Velero バックアップ専用のバケットでない場合は、接頭辞を指定する必要があります。
- 14
- バケットが複数の目的で使用される場合は、Velero バックアップの接頭辞を指定します (例:
velero
)。
- Create をクリックします。
検証
次のコマンドを実行して OpenShift API for Data Protection (OADP) リソースを表示し、インストールを検証します。
$ oc get all -n openshift-adp
出力例
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
次のコマンドを実行して、
DataProtectionApplication
(DPA) が調整されていることを確認します。$ oc get dpa dpa-sample -n openshift-adp -o jsonpath='{.status}'
出力例
{"conditions":[{"lastTransitionTime":"2023-10-27T01:23:57Z","message":"Reconcile complete","reason":"Complete","status":"True","type":"Reconciled"}]}
-
type
がReconciled
に設定されていることを確認します。 次のコマンドを実行して、バックアップ保存場所を確認し、
PHASE
がAvailable
であることを確認します。$ oc get backupStorageLocation -n openshift-adp
出力例
NAME PHASE LAST VALIDATED AGE DEFAULT dpa-sample-1 Available 1s 3d16h true
Microsoft Windows 仮想マシン (VM) の再起動直後に仮想マシンのバックアップを実行すると、PartiallyFailed
エラーが発生してバックアップが失敗する可能性があります。これは、仮想マシンの起動直後は、Microsoft Windows Volume Shadow Copy Service (VSS) と Guest Agent (GA) サービスが準備されていないためです。VSS および GA サービスが準備されていないため、バックアップは失敗します。このような場合は、仮想マシンの起動後数分後にバックアップを再試行してください。
4.6.9.3. クライアントバースト設定と 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
4.6.9.3.1. ノードエージェントとノードラベルの設定
OADP の DPA は、nodeSelector
フィールドを使用して、ノードエージェントを実行できるノードを選択します。nodeSelector
フィールドは、推奨される最も単純な形式のノード選択制約です。
指定したラベルが、各ノードのラベルと一致する必要があります。
選択した任意のノードでノードエージェントを実行する正しい方法は、ノードにカスタムラベルを付けることです。
$ oc label node/<node_name> node-role.kubernetes.io/nodeAgent=""
ノードのラベル付けに使用したのと同じカスタムラベルを DPA.spec.configuration.nodeAgent.podConfig.nodeSelector
で使用します。以下に例を示します。
configuration: nodeAgent: enable: true podConfig: nodeSelector: node-role.kubernetes.io/nodeAgent: ""
次の例は 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: ""
4.6.9.4. 増分バックアップのサポートについて
OADP は、コンテナー化されたワークロードと OpenShift Virtualization ワークロードの両方で、block
および Filesystem
の永続ボリュームの増分バックアップをサポートしています。次の表は、File System Backup (FSB)、Container Storage Interface (CSI)、および CSI Data Mover のサポート状況をまとめたものです。
ボリュームモード | FSB - Restic | FSB - Kopia | CSI | CSI 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] |
ボリュームモード | FSB - Restic | FSB - Kopia | CSI | CSI Data Mover |
---|---|---|---|---|
ファイルシステム | N [3] | N [3] | S [1] | S [1]、I [2] |
ブロック | N [3] | N [3] | S [1] | S [1]、I [2] |
- バックアップをサポート
- 増分バックアップをサポート
- サポート対象外
CSI Data Mover バックアップでは、uploaderType
に関係なく Kopia が使用されます。
Red Hat は、OADP バージョン 1.3.0 以降と OpenShift Virtualization バージョン 4.14 以降の組み合わせのみをサポートします。
バージョン 1.3.0 より前の OADP は、OpenShift Virtualization のバックアップと復元ではサポートされていません。
4.6.10. 複数の Backup Storage Location を使用した OpenShift API for Data Protection (OADP) の設定
Data Protection Application (DPA) では、1 つ以上の Backup Storage Location (BSL) を設定できます。また、バックアップを作成するときに、バックアップを保存する場所を選択できます。この設定では、次の方法でバックアップを保存できます。
- さまざまなリージョンへのバックアップ
- 別のストレージプロバイダーへのバックアップ
OADP は、複数の BSL を設定できるように、複数の認証情報をサポートしています。そのため、どの BSL でも使用する認証情報を指定できます。
4.6.10.1. 複数の BSL を使用した DPA の設定
複数の BSL を使用して DPA を設定し、クラウドプロバイダーによって提供される認証情報を指定できます。
前提条件
- OADP Operator をインストールする。
- クラウドプロバイダーによって提供される認証情報を使用してシークレットを作成する。
手順
複数の BSL を使用して DPA を設定します。以下の例を参照してください。
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 #...
- 1
- 最初の BSL の名前を指定します。
- 2
- このパラメーターは、この BSL がデフォルトの BSL であることを示します。
Backup CR
に BSL が設定されていない場合は、デフォルトの BSL が使用されます。デフォルトとして設定できる BSL は 1 つだけです。 - 3
- バケット名を指定します。
- 4
- Velero バックアップの接頭辞を指定します (例:
velero
)。 - 5
- バケットの AWS リージョンを指定します。
- 6
- 作成したデフォルトの
Secret
オブジェクトの名前を指定します。 - 7
- 2 番目の BSL の名前を指定します。
- 8
- S3 エンドポイントの URL を指定します。
- 9
Secret
の正しい名前を指定します。たとえば、custom_secret_name_odf
です。Secret
名を指定しない場合は、デフォルトの名前が使用されます。
バックアップ CR で使用する BSL を指定します。以下の例を参照してください。
バックアップ CR の例
apiVersion: velero.io/v1 kind: Backup # ... spec: includedNamespaces: - <namespace> 1 storageLocation: <backup_storage_location> 2 defaultVolumesToFsBackup: true
4.6.10.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 クラスターにデータベースがデプロイされたアプリケーションがある。
手順
次のコマンドを実行して、AWS S3 ストレージプロバイダー用の最初の
Secret
をデフォルト名で作成します。$ oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=<aws_credentials_file_name> 1
- 1
- AWS S3 のクラウド認証情報ファイルの名前を指定します。
次のコマンドを実行して、カスタム名を持つ MCG 用の 2 番目の
Secret
を作成します。$ oc create secret generic mcg-secret -n openshift-adp --from-file cloud=<MCG_credentials_file_name> 1
- 1
- MCG のクラウド認証情報ファイルの名前を指定します。
mcg-secret
カスタムシークレットの名前をメモします。
次の例に示すように、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
次のコマンドを実行して DPA を作成します。
$ oc create -f <dpa_file_name> 1
- 1
- 設定した DPA のファイル名を指定します。
次のコマンドを実行して、DPA が調整されたことを確認します。
$ oc get dpa -o yaml
次のコマンドを実行して、BSL が使用可能であることを確認します。
$ oc get bsl
出力例
NAME PHASE LAST VALIDATED AGE DEFAULT aws Available 5s 3m28s true mcg Available 5s 3m28s
デフォルトの 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
- 1
- クラスターにインストールされているアプリケーションの namespace を指定します。
次のコマンドを実行してバックアップを作成します。
$ oc apply -f <backup_file_name> 1
- 1
- バックアップ CR ファイルの名前を指定します。
次のコマンドを実行して、デフォルトの BSL を使用したバックアップが完了したことを確認します。
$ oc get backup <backup_name> -o yaml 1
- 1
- バックアップの名前を指定します。
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
次のコマンドを実行して、2 番目のバックアップを作成します。
$ oc apply -f <backup_file_name> 1
- 1
- バックアップ CR ファイルの名前を指定します。
次のコマンドを実行して、保存場所が MCG であるバックアップが完了したことを確認します。
$ oc get backup <backup_name> -o yaml 1
- 1
- バックアップの名前を指定します。
関連情報
4.6.11. 複数の Volume Snapshot Location を使用した OpenShift API for Data Protection (OADP) を設定
1 つ以上の Volume Snapshot Location (VSL) を設定して、クラウドプロバイダーの別々のリージョンにスナップショットを保存できます。
4.6.11.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 #...