8.6. OADP を使用したホストされたクラスターの障害復旧
OpenShift API for Data Protection (OADP) Operator を使用して、Amazon Web Services (AWS) およびベアメタルで障害復旧を実行できます。
OpenShift API for Data Protection (OADP) を使用した障害復旧プロセスには、次の手順が含まれます。
- OADP を使用するために Amazon Web Services やベアメタルなどのプラットフォームを準備
- データプレーンのワークロードのバックアップ
- コントロールプレーンのワークロードのバックアップ
- OADP を使用してホストされたクラスターの復元
8.6.1. 前提条件
管理クラスターで次の前提条件を満たす必要があります。
- OADP Operator をインストールしている。
- ストレージクラスを作成した。
-
cluster-admin
権限でクラスターにアクセスできる。 - カタログソースを通じて OADP サブスクリプションにアクセスできる。
- S3、Microsoft Azure、Google Cloud Platform、MinIO など、OADP と互換性のあるクラウドストレージプロバイダーにアクセスできる。
- 非接続環境では、OADP と互換性のある Red Hat OpenShift Data Foundation や MinIO などのセルフホスト型ストレージプロバイダーにアクセスできる。
- Hosted Control Plane の Pod が稼働している。
8.6.2. OADP を使用するための AWS の準備
ホストされたクラスターの障害復旧を実行するには、Amazon Web Services (AWS) S3 互換ストレージで OpenShift API for Data Protection (OADP) を使用できます。DataProtectionApplication
オブジェクトを作成すると、openshift-adp
namespace に新しい velero
デプロイメントと node-agent
Pod が作成されます。
OADP を使用するために AWS を準備するには、「Multicloud Object Gateway を使用したデータ保護における OpenShift API の設定」を参照してください。
次のステップ
- データプレーンのワークロードのバックアップ
- コントロールプレーンのワークロードのバックアップ
8.6.3. OADP を使用するためのベアメタルの準備
ホストされたクラスターの障害復旧を実行するには、ベアメタル上で OpenShift API for Data Protection (OADP) を使用できます。DataProtectionApplication
オブジェクトを作成すると、openshift-adp
namespace に新しい velero
デプロイメントと node-agent
Pod が作成されます。
OADP を使用するためにベアメタルを準備するには、「AWS S3 互換ストレージを使用したデータ保護用の OpenShift API の設定」を参照してください。
次のステップ
- データプレーンのワークロードのバックアップ
- コントロールプレーンのワークロードのバックアップ
8.6.4. データプレーンのワークロードのバックアップ
データプレーンのワークロードが重要でない場合は、この手順をスキップできます。OADP Operator を使用してデータプレーンワークロードをバックアップするには、「アプリケーションのバックアップ」を参照してください。
関連情報
次のステップ
- OADP を使用してホストされたクラスターの復元
8.6.5. コントロールプレーンのワークロードのバックアップ
Backup
カスタムリソース (CR) を作成することで、コントロールプレーンのワークロードをバックアップできます。
バックアッププロセスを監視および観察するには、「バックアップおよび復元プロセスの観察」を参照してください。
手順
次のコマンドを実行して、
HostedCluster
リソースの調整を一時停止します。$ oc --kubeconfig <management_cluster_kubeconfig_file> \ patch hostedcluster -n <hosted_cluster_namespace> <hosted_cluster_name> \ --type json -p '[{"op": "add", "path": "/spec/pausedUntil", "value": "true"}]'
次のコマンドを実行して、
NodePool
リソースの調整を一時停止します。$ oc --kubeconfig <management_cluster_kubeconfig_file> \ patch nodepool -n <hosted_cluster_namespace> <node_pool_name> \ --type json -p '[{"op": "add", "path": "/spec/pausedUntil", "value": "true"}]'
次のコマンドを実行して、
AgentCluster
リソースの調整を一時停止します。$ oc --kubeconfig <management_cluster_kubeconfig_file> \ annotate agentcluster -n <hosted_control_plane_namespace> \ cluster.x-k8s.io/paused=true --all'
次のコマンドを実行して、
AgentMachine
リソースの調整を一時停止します。$ oc --kubeconfig <management_cluster_kubeconfig_file> \ annotate agentmachine -n <hosted_control_plane_namespace> \ cluster.x-k8s.io/paused=true --all'
次のコマンドを実行して、
HostedCluster
リソースにアノテーションを付け、Hosted Control Plane namespace が削除されないようにします。$ oc --kubeconfig <management_cluster_kubeconfig_file> \ annotate hostedcluster -n <hosted_cluster_namespace> <hosted_cluster_name> \ hypershift.openshift.io/skip-delete-hosted-controlplane-namespace=true
Backup
CR を定義する YAML ファイルを作成します。例8.1 例:
backup-control-plane.yaml
ファイルapiVersion: velero.io/v1 kind: Backup metadata: name: <backup_resource_name> 1 namespace: openshift-adp labels: velero.io/storage-location: default spec: hooks: {} includedNamespaces: 2 - <hosted_cluster_namespace> 3 - <hosted_control_plane_namespace> 4 includedResources: - sa - role - rolebinding - pod - pvc - pv - bmh - configmap - infraenv 5 - priorityclasses - pdb - agents - hostedcluster - nodepool - secrets - services - deployments - hostedcontrolplane - cluster - agentcluster - agentmachinetemplate - agentmachine - machinedeployment - machineset - machine excludedResources: [] storageLocation: default ttl: 2h0m0s snapshotMoveData: true 6 datamover: "velero" 7 defaultVolumesToFsBackup: true 8
- 1
backup_resource_name
をBackup
リソースの名前に置き換えます。- 2
- 特定の namespace を選択して、そこからオブジェクトをバックアップします。ホステッドクラスターの namespace と Hosted Control Plane の namespace を含める必要があります。
- 3
<hosted_cluster_namespace>
を、ホストされたクラスター namespace の名前 (例:clusters
) に置き換えます。- 4
<hosted_control_plane_namespace>
は、Hosted Control Plane の namespace の名前 (例:clusters-hosted
) に置き換えます。- 5
infraenv
リソースを別の namespace に作成する必要があります。バックアッププロセス中にinfraenv
リソースを削除しないでください。- 6 7
- CSI ボリュームスナップショットを有効にし、コントロールプレーンのワークロードをクラウドストレージに自動的にアップロードします。
- 8
- 永続ボリューム (PV) の
fs-backup
バックアップ方法をデフォルトとして設定します。この設定は、Container Storage Interface (CSI) ボリュームスナップショットとfs-backup
方式を組み合わせて使用する場合に便利です。
注記CSI ボリュームスナップショットを使用する場合は、PV に
backup.velero.io/backup-volumes-excludes=<pv_name>
アノテーションを追加する必要があります。次のコマンドを実行して、
Backup
CR を適用します。$ oc apply -f backup-control-plane.yaml
検証
次のコマンドを実行して、
status.phase
の値がCompleted
になっているかどうかを確認します。$ oc get backups.velero.io <backup_resource_name> -n openshift-adp -o jsonpath='{.status.phase}'
次のステップ
- OADP を使用してホストされたクラスターの復元
8.6.6. OADP を使用してホストされたクラスターの復元
Restore
カスタムリソース (CR) を作成することで、ホストされたクラスターを復元できます。
- in-place 更新を使用している場合、InfraEnv にはスペアノードは必要ありません。新しい管理クラスターからワーカーノードを再プロビジョニングする必要があります。
- replace 更新を使用している場合は、ワーカーノードをデプロイするために InfraEnv 用の予備ノードがいくつか必要です。
ホストされたクラスターをバックアップした後、復元プロセスを開始するには、そのクラスターを破棄する必要があります。ノードのプロビジョニングを開始するには、ホストされたクラスターを削除する前に、データプレーン内のワークロードをバックアップする必要があります。
前提条件
- コンソールを使用したクラスターの削除 の手順に従ってホストされたクラスターを削除している。
- クラスターの削除後に残りのリソースの削除 の手順を完了している。
バックアッププロセスを監視および観察するには、「バックアップおよび復元プロセスの観察」を参照してください。
手順
次のコマンドを実行して、Hosted Control Plane namespace に Pod と永続ボリューム要求 (PVC) が存在しないことを確認します。
$ oc get pod pvc -n <hosted_control_plane_namespace>
予想される出力
No resources found
Restore
CR を定義する YAML ファイルを作成します。restore-hosted-cluster.yaml
ファイルの例apiVersion: velero.io/v1 kind: Restore metadata: name: <restore_resource_name> 1 namespace: openshift-adp spec: backupName: <backup_resource_name> 2 restorePVs: true 3 existingResourcePolicy: update 4 excludedResources: - nodes - events - events.events.k8s.io - backups.velero.io - restores.velero.io - resticrepositories.velero.io
重要infraenv
リソースを別の namespace に作成する必要があります。復元プロセス中にinfraenv
リソースを削除しないでください。新しいノードを再プロビジョニングするには、infraenv
リソースが必須です。次のコマンドを実行して、
Restore
CR を適用します。$ oc apply -f restore-hosted-cluster.yaml
次のコマンドを実行して、
status.phase
の値がCompleted
になっているかどうかを確認します。$ oc get hostedcluster <hosted_cluster_name> -n <hosted_cluster_namespace> -o jsonpath='{.status.phase}'
復元プロセスが完了したら、コントロールプレーンワークロードのバックアップ中に一時停止した
HostedCluster
リソースおよびNodePool
リソースの調整を開始します。次のコマンドを実行して、
HostedCluster
リソースの調整を開始します。$ oc --kubeconfig <management_cluster_kubeconfig_file> \ patch hostedcluster -n <hosted_cluster_namespace> <hosted_cluster_name> \ --type json -p '[{"op": "add", "path": "/spec/pausedUntil", "value": "false"}]'
次のコマンドを実行して、
NodePool
リソースの調整を開始します。$ oc --kubeconfig <management_cluster_kubeconfig_file> \ patch nodepool -n <hosted_cluster_namespace> <node_pool_name> \ --type json -p '[{"op": "add", "path": "/spec/pausedUntil", "value": "false"}]'
コントロールプレーンワークロードのバックアップ中に一時停止したエージェントプロバイダーリソースの調整を開始します。
次のコマンドを実行して、
AgentCluster
リソースの調整を開始します。$ oc --kubeconfig <management_cluster_kubeconfig_file> \ annotate agentcluster -n <hosted_control_plane_namespace> \ cluster.x-k8s.io/paused- --overwrite=true --all
次のコマンドを実行して、
AgentMachine
リソースの調整を開始します。$ oc --kubeconfig <management_cluster_kubeconfig_file> \ annotate agentmachine -n <hosted_control_plane_namespace> \ cluster.x-k8s.io/paused- --overwrite=true --all
次のコマンドを実行して、
HostedCluster
リソースのhypershift.openshift.io/skip-delete-hosted-controlplane-namespace-
アノテーションを削除し、Hosted Control Plane namespace の手動削除を回避します。$ oc --kubeconfig <management_cluster_kubeconfig_file> \ annotate hostedcluster -n <hosted_cluster_namespace> <hosted_cluster_name> \ hypershift.openshift.io/skip-delete-hosted-controlplane-namespace- \ --overwrite=true --all
次のコマンドを実行して、
NodePool
リソースを必要なレプリカ数にスケーリングします。$ oc --kubeconfig <management_cluster_kubeconfig_file> \ scale nodepool -n <hosted_cluster_namespace> <node_pool_name> \ --replicas <replica_count> 1
- 1
<replica_count>
を整数値 (例:3
) に置き換えます。
8.6.7. バックアップと復元のプロセスの観察
OpenShift API for Data Protection (OADP) を使用してホストされたクラスターをバックアップおよび復元する場合は、プロセスを監視および観察できます。
手順
次のコマンドを実行して、バックアッププロセスを確認します。
$ watch "oc get backups.velero.io -n openshift-adp <backup_resource_name> -o jsonpath='{.status}'"
次のコマンドを実行して、復元プロセスを確認します。
$ watch "oc get restores.velero.io -n openshift-adp <backup_resource_name> -o jsonpath='{.status}'"
次のコマンドを実行して、Velero ログを確認します。
$ oc logs -n openshift-adp -ldeploy=velero -f
次のコマンドを実行して、すべての OADP オブジェクトの進行状況を確認します。
$ watch "echo BackupRepositories:;echo;oc get backuprepositories.velero.io -A;echo; echo BackupStorageLocations: ;echo; oc get backupstoragelocations.velero.io -A;echo;echo DataUploads: ;echo;oc get datauploads.velero.io -A;echo;echo DataDownloads: ;echo;oc get datadownloads.velero.io -n openshift-adp; echo;echo VolumeSnapshotLocations: ;echo;oc get volumesnapshotlocations.velero.io -A;echo;echo Backups:;echo;oc get backup -A; echo;echo Restores:;echo;oc get restore -A"
8.6.8. velero CLI を使用してバックアップおよび復元リソースを記述する
OpenShift API for Data Protection を使用する場合は、velero
コマンドラインインターフェイス (CLI) を使用して、Backup
および Restore
リソースの詳細を取得できます。
手順
次のコマンドを実行して、コンテナーから
velero
CLI を使用するためのエイリアスを作成します。$ alias velero='oc -n openshift-adp exec deployment/velero -c velero -it -- ./velero'
次のコマンドを実行して、
Restore
カスタムリソース (CR) の詳細を取得します。$ velero restore describe <restore_resource_name> --details 1
- 1
<restore_resource_name>
をRestore
リソースの名前に置き換えます。
次のコマンドを実行して、
Backup
CR の詳細を取得します。$ velero restore describe <backup_resource_name> --details 1
- 1
<backup_resource_name>
をBackup
リソースの名前に置き換えます。