ビジネス継続性
クラスター内またはクラスター間の永続ボリュームの非同期レプリケーションを Volsync によって実現する方法を説明します。バックアップおよび復元 Operator を使用して、クラスターリソースの継続性をサポートします。
概要
第1章 ビジネス継続性 リンクのコピーリンクがクリップボードにコピーされました!
障害復旧ソリューション、ハブクラスター、およびマネージドクラスターは、次のトピックを参照してください。
1.1. バックアップおよび復元 リンクのコピーリンクがクリップボードにコピーされました!
クラスターのバックアップおよび復元 Operator は、ハブクラスターで実行され、Red Hat Advanced Cluster Management for Kubernetes ハブクラスターの障害に対する障害復旧ソリューションを提供します。ハブクラスターで障害が発生すると、すべてのマネージドクラスターが引き続き正常に動作していても、ポリシー設定ベースのアラートやクラスター更新などの一部の機能が動作しなくなります。ハブクラスターが使用できない場合は、回復が可能かどうか、または新しく展開されたハブクラスター上のデータを回復する必要があるかどうかを判断するための回復計画が必要です。
クラスターのバックアップおよび復元の Operator は、ハブクラスターのインストールを拡張するサードパーティーリソースのバックアップをサポートします。このバックアップソリューションを使用すると、指定した時間間隔で実行する cron ベースのバックアップスケジュールを定義できます。ハブクラスターで障害が発生した場合、新しいハブクラスターをデプロイし、バックアップされたデータを新しいハブクラスターに移動できます。
次のトピックを読み続けて、バックアップおよび復元 operator の詳細を確認してください。
1.1.1. バックアップおよび復元 Operator のアーキテクチャー リンクのコピーリンクがクリップボードにコピーされました!
Operator は、Red Hat Advanced Cluster Management バックアップスケジュールを設定する BackupSchedule.cluster.open-cluster-management.io リソースと、restore.cluster.open-cluster-management.io リソースを定義します。これらのリソースを使用して、これらのバックアップを処理および復元します。この Operator は、対応する Velero リソースを作成し、リモートクラスターと、復元を必要とする他のハブクラスターリソースのバックアップに必要なオプションを定義します。
次のアーキテクチャー図を参照してください。
バックアップおよび復元コンポーネントは、バックアップ Pod やバックアップスケジュールが実行していないなどの問題を報告するための一連のポリシーを提供します。バックアップソリューションが機能しない場合は、ポリシーテンプレートを使用してハブクラスター管理者へのアラートを作成します。詳細は、バックアップまたは復元設定の検証 を参照してください。
クラスターのバックアップおよび復元 Operator は、OADP Operator に依存して Velero をインストールし、ハブクラスターからデータが保存されているバックアップストレージの場所への接続を作成します。Velero は、バックアップおよび復元操作を実行するコンポーネントです。クラスターのバックアップと復元の Operator ソリューションは、マネージドクラスター、アプリケーション、およびポリシーを含むすべての Red Hat Advanced Cluster Management ハブクラスターリソースのバックアップと復元のサポートを提供します。
1.1.1.1. バックアップされるリソース リンクのコピーリンクがクリップボードにコピーされました!
クラスターのバックアップと復元 Operator のソリューションは、マネージドクラスター、アプリケーション、ポリシーなど、すべてのハブクラスターリソースのバックアップと復元のサポートを提供します。このソリューションを使用して、基本的なハブクラスターのインストールを拡張するサードパーティーリソースをバックアップします。このバックアップソリューションを使用すると、cron ベースのバックアップスケジュールを定義します。これは、指定された時間間隔で実行し、ハブクラスターのコンテンツの最新バージョンを継続的にバックアップします。
ハブクラスターを交換する必要がある場合、またはハブクラスターに障害が発生したときに障害シナリオにある場合は、新しいハブクラスターをデプロイし、バックアップデータを新しいハブクラスターに移動できます。
次のクラスターのバックアップおよび復元プロセスのリストと、バックアップデータを識別するためにリソースとグループをバックアップまたは除外する方法を確認します。
-
MultiClusterHubnamespace のすべてのリソースを除外します。これは、現在のハブクラスター ID にリンクされているため、バックアップする必要のないインストールリソースのバックアップを回避するためです。 -
API バージョンの接尾辞が
.open-cluster-management.ioおよび.hive.openshift.ioであるすべてのリソースをバックアップします。これらの接尾辞は、すべての Red Hat Advanced Cluster Management リソースがバックアップされていることを示します。 API グループ (
argoproj.io、app.k8s.io、core.observatorium.io、hive.openshift.io) からすべてのリソースをバックアップします。agent-install.openshift.ioAPI グループのリソースを除き、リソースはacm-resources-scheduleバックアップ内でバックアップされます。agent-install.openshift.ioAPI グループのリソースは、acm-managed-clusters-scheduleバックアップ内でバックアップされます。以下に示すhive.openshift.ioおよびhiveinternal.openshift.ioAPI グループのリソースも、acm-managed-clusters-scheduleバックアップによってバックアップされます。-
clusterdeployment.hive.openshift.io -
machinepool.hive.openshift.io -
clusterpool.hive.openshift.io -
clusterclaim.hive.openshift.io -
clusterimageset.hive.openshift.io -
clustersync.hiveinternal.openshift.io
-
次の API グループからすべてのリソースを除外します。
-
internal.open-cluster-management.io -
operator.open-cluster-management.io -
work.open-cluster-management.io -
search.open-cluster-management.io -
admission.hive.openshift.io -
proxy.open-cluster-management.io -
action.open-cluster-management.io -
view.open-cluster-management.io -
clusterview.open-cluster-management.io -
velero.io
-
含まれる API グループの一部であるが、必要ではないか、バックアップもされている所有者リソースによって再作成される次のリソースをすべて除外します。
-
clustermanagementaddon.addon.open-cluster-management.io -
backupschedule.cluster.open-cluster-management.io -
restore.cluster.open-cluster-management.io -
clusterclaim.cluster.open-cluster-management.io -
discoveredcluster.discovery.open-cluster-management.io
-
-
次のいずれかのラベルがあるシークレットまたは ConfigMaps をバックアップします:
cluster.open-cluster-management.io/type、hive.openshift.io/secret-type、cluster.open-cluster-management.io/backup。 バックアップするその他のリソースで、前述の基準に含まれていないか、除外された API グループの一部である場合は、
cluster.open-cluster-management.io/backupラベルを使用します。以下の例を参照してください。apiVersion: my.group/v1alpha1 kind: MyResource metadata: labels: cluster.open-cluster-management.io/backup: ""apiVersion: my.group/v1alpha1 kind: MyResource metadata: labels: cluster.open-cluster-management.io/backup: ""Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記:
hive.openshift.io.ClusterDeploymentリソースで使用されるシークレットはバックアップする必要があり、コンソールを使用してクラスターを作成する場合にのみ、cluster.open-cluster-management.io/backupラベルで自動的にアノテーションが付けられます。代わりに GitOps を使用して Hive クラスターをデプロイする場合は、ClusterDeploymentリソースで使用されるシークレットにcluster.open-cluster-management.io/backupラベルを手動で追加する必要があります。cluster.open-cluster-management.io/backup: cluster-activationラベルを持つシークレットおよび config map リソースは、クラスターのアクティブ化時に復元されます。バックアップしたくない特定のリソースを除外します。バックアッププロセスから Velero リソースを除外するには、次の例を参照してください。
apiVersion: my.group/v1alpha1 kind: MyResource metadata: labels: velero.io/exclude-from-backup: "true"apiVersion: my.group/v1alpha1 kind: MyResource metadata: labels: velero.io/exclude-from-backup: "true"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.1.1.2. Red Hat Advanced Cluster Management スケジュールで作成されたバックアップファイル リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Advanced Cluster Management スケジュールを使用して、リソースタイプまたはラベルアノテーションに基づいて個別のバックアップファイルにグループ化されたハブクラスターリソースをバックアップできます。
BackupSchedule.cluster.open-cluster-management.io リソースは、4 つの schedule.velero.io リソースのセットを作成します。これらの schedule.velero.io リソースは、リソースとも呼ばれるバックアップファイルを生成します。
スケジュールされたバックアップファイルの一覧を表示するには、oc get schedules -A | grep acm のコマンドを実行します。
スケジュールされたバックアップファイルは backup.velero.io です。これらのスケジュールされたバックアップファイルの説明を表示するには、次の表を参照してください。
| スケジュールされたバックアップ | 説明 |
|---|---|
| Credentials backup |
Hive 認証情報、Red Hat Advanced Cluster Management、ユーザーが作成した認証情報、および |
| Resources backup |
Red Hat Advanced Cluster Management リソースのバックアップが 1 つ ( |
| Managed clusters backup |
バックアップが復元されるハブクラスターへのマネージドクラスター接続をアクティブにするリソースのみ格納されています。このバックアップファイルの名前は、 |
1.1.1.3. マネージドクラスターのアクティブ化時に復元されるリソース リンクのコピーリンクがクリップボードにコピーされました!
リソースに cluster.open-cluster-management.io/backup ラベルを追加すると、そのリソースは自動的に acm-resources-generic-schedule バックアップに追加されます。ただし、Secrets および ConfigMap リソースは、backup acm-credentials-schedule- にバックアップされます。マネージドクラスターを新しいハブクラスターに移動した後、および復元されたリソースで veleroManagedClustersBackupName:latest を使用する場合は、ラベル値を cluster-activation に設定します。
cluster.open-cluster-management.io/backup ラベルを cluster-activation に設定すると、マネージドクラスターをアクティブ化しない限り、リソースが復元されないようになります。以下の例を参照してください。
apiVersion: my.group/v1alpha1
kind: MyResource
metadata:
labels:
cluster.open-cluster-management.io/backup: cluster-activation
apiVersion: my.group/v1alpha1
kind: MyResource
metadata:
labels:
cluster.open-cluster-management.io/backup: cluster-activation
注記: マネージドクラスターの namespace またはその namespace 内のリソースは、クラスターのアクティブ化ステップで、どちらかを復元する必要があります。したがって、マネージドクラスターの namespace に作成されたバックアップリソースに追加する必要がある場合は、cluster.open-cluster-management.io/backup ラベルの cluster-activation 値を使用してください。復元プロセスを理解するには、次の情報を参照してください。
-
namespace を復元すると、
managedcluster-import-controllerによって namespace が削除されます。 -
managedClusterカスタムリソースを復元すると、cluster-manager-registration-controllerによって namespace が作成されます。
cluster.open-cluster-management.io/backup: cluster-activation ラベルを使用して識別され、acm-resources-generic-schedule バックアップによって保存されるアクティベーションデータリソースとは別に、クラスターのバックアップおよび復元 Operator には、デフォルトでは、アクティベーションセット内のいくつかのリソースが含まれます。次のリソースは、acm-managed-clusters-schedule バックアップによってバックアップされます。
-
managedcluster.cluster.open-cluster-management.io -
klusterletaddonconfig.agent.open-cluster-management.io -
managedclusteraddon.addon.open-cluster-management.io -
managedclusterset.cluster.open-cluster-management.io -
managedclusterset.clusterview.open-cluster-management.io -
managedclustersetbinding.cluster.open-cluster-management.io -
clusterpool.hive.openshift.io -
clusterclaim.hive.openshift.io -
clustercurator.cluster.open-cluster-management.io
1.1.1.4. バックアップ ラベル機能 リンクのコピーリンクがクリップボードにコピーされました!
cluster.open-cluster-management.io/backup ラベルをリソースに追加することで、クラスターのバックアップおよび復元を使用してサードパーティーのリソースをバックアップできます。ラベルの値は、空の文字列を含む任意の文字列にすることができます。バックアップするコンポーネントを識別するのに役立つ値を使用してください。たとえば、コンポーネントが IDP ソリューションによって提供される場合は、cluster.open-cluster-management.io/backup: idp ラベルを使用します。
注意: マネージドクラスターのアクティブ化リソースが復元されたときにリソースを復元する場合は、cluster.open-cluster-management.io/backup ラベルに cluster-activation 値を使用します。マネージドクラスターのアクティベーションリソースを復元すると、ハブクラスターによってアクティブに管理されているマネージドクラスターの復元が開始されます。
1.1.2. アクティブ/パッシブハブクラスターの設定 リンクのコピーリンクがクリップボードにコピーされました!
ここでは、アクティブ/パッシブハブクラスター設定を設定する方法を説明します。この設定では、最初のハブクラスターがデータをバックアップし、アクティブクラスターが使用できなくなったときにマネージドクラスターを制御するために 1 つ以上のパッシブハブクラスターがスタンバイになります。
1.1.2.1. アクティブ/パッシブ設定 リンクのコピーリンクがクリップボードにコピーされました!
active-passive 設定では、アクティブなハブクラスターが 1 つと、パッシブなクラスターが複数あります。アクティブハブクラスターは、primary ハブクラスターとも見なされます。これは、BackupSchedule.cluster.open-cluster-management.io リソースを使用してクラスターを管理し、定義された時間間隔でリソースをバックアップします。
アクティブハブクラスターとパッシブハブクラスターは、同じ Red Hat Advanced Cluster Management for Kubernetes バージョンを使用する必要があります。active-passive 設定が使用するハブクラスターをアップグレードする場合は、最初に復元ハブを最新バージョンにアップグレードしてから、プライマリーハブクラスターをアップグレードします。
注: プライマリーハブクラスターのデータをバックアップするには、active-passive 設定は必要ありません。ハブクラスターデータのバックアップと保存のみが可能です。これにより、問題や障害が発生した場合に、新しいハブクラスターをデプロイし、この新しいハブクラスター上にプライマリーハブクラスターデータを復元できます。プライマリーハブクラスターのデータを回復する時間を短縮するには、active-passive 設定を使用します。ただし、これは必須ではありません。
パッシブハブクラスターは、最新のバックアップを継続的に取得し、パッシブデータを復元します。パッシブハブは、Restore.cluster.open-cluster-management.io リソースを使用して、新規バックアップデータが利用可能な場合に、プライマリーハブクラスターからパッシブデータを復元します。これらのハブクラスターは、プライマリーハブクラスターで障害が発生した場合にプライマリーハブに切り替えられるように、スタンバイ状態にあります。
アクティブ/パッシブハブクラスターは同じストレージの場所に接続され、プライマリーハブクラスターはパッシブハブクラスターのデータをバックアップし、パッシブハブクラスターはプライマリーハブクラスターのバックアップにアクセスします。この自動復元を設定する方法の詳細は、バックアップの確認中にパッシブリソースを復元する を参照してください。
以下の図は、アクティブなハブクラスターがローカルクラスターを管理し、ハブクラスターデータを一定間隔でバックアップします。
パッシブハブクラスターは、マネージドクラスターをパッシブハブクラスターに移動するマネージドクラスターアクティベーションデータを除いて、このデータを復元します。パッシブハブクラスターは、パッシブデータを継続的に復元できます。パッシブハブクラスターは、パッシブデータを 1 回限りの操作として復元できます。詳細は、パッシブリソースの復元 を参照してください。
1.1.2.2. 障害復旧 リンクのコピーリンクがクリップボードにコピーされました!
プライマリーハブクラスターに障害が発生した場合、ハブ管理者は、マネージドクラスターを引き継ぐパッシブハブクラスターを選択できます。次の 障害復旧図 では、ハブクラスター N を新しいプライマリーハブクラスターとして使用する方法を示しています。
ハブクラスター N は、マネージドクラスターのアクティブ化データを復元します。マネージドクラスターは ハブクラスター N に接続します。BackupSchedule.cluster.open-cluster-management.io リソースを作成し、最初のプライマリーハブクラスターと同じストレージの場所にバックアップを保存することにより、新しいプライマリーハブクラスターである ハブクラスター N のバックアップをアクティブ化します。
その他のパッシブハブクラスターはすべて、新しいプライマリーハブクラスターが作成したバックアップデータを使用してパッシブデータを復元するようになりました。ハブクラスター N がプライマリーハブクラスターとなり、クラスターの管理とデータのバックアップを行います。
重要:
前述の 障害復旧図 の最初のプロセスは、次の理由により自動化されていません。
- プライマリーハブクラスターに障害が発生して交換する必要があるか、またはハブクラスターとマネージドクラスターの間にネットワーク通信エラーがあるかを判断する必要があります。
- どのパッシブハブクラスターをプライマリーハブクラスターにするかを決定する必要があります。Red Hat Ansible Automation Platform ジョブとのポリシー統合により、バックアップポリシーがバックアップエラーを報告した場合にジョブが実行されるようにすることで、この手順を自動化できます。
前述の 障害復旧図 の 2 番目のプロセスは手動で実行します。新しいプライマリーハブクラスターでバックアップスケジュールを作成していない場合、
backup-restore-enabledポリシーはbackup-schedule-cron-enabledポリシーテンプレートを使用して違反を示します。この 2 番目のプロセスでは、次のアクションを実行できます。-
backup-schedule-cron-enabledポリシーテンプレートを使用して、新しいプライマリーハブクラスターに cron ジョブとして実行されているバックアップがあるか確認します。 -
Ansibleとのポリシー統合を使用して、backup-schedule-cron-enabledポリシーテンプレートが違反を報告した場合に実行できるAnsibleジョブを定義します。
-
-
backup-restore-enabledポリシーテンプレートの詳細は、バックアップまたは復元設定の検証 を参照してください。
1.1.2.3. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
パッシブリソースの詳細は、次の復元オプションを参照してください。
- バックアップの確認中にパッシブリソースを復元する
- パッシブリソースを復元する
-
active-passive設定を構築する代わりに、障害発生時に新しいハブクラスターをデプロイし、この新しいハブクラスターにすべてのプライマリーハブクラスターデータを復元する場合は、すべてのリソースの復元 トピックを参照してください。
1.1.3. バックアップおよび復元 Operator のインストール リンクのコピーリンクがクリップボードにコピーされました!
クラスターのバックアップおよび復元 Operator は自動的にインストールされません。Operator のインストールと有効化の方法は、このまま読み進めてください。
1.1.3.1. バックアップおよび復元 Operator 用のハブクラスターのセットアップ リンクのコピーリンクがクリップボードにコピーされました!
バックアップおよび復元 Operator を使用するには、ハブクラスターを設定する必要があります。ハブクラスターを設定するには、次のセクションを順番に完了します。
1.1.3.1.1. ストレージの場所シークレットの作成 リンクのコピーリンクがクリップボードにコピーされました!
ストレージの場所のシークレットを作成するには、以下の手順を実行します。
- バックアップの保存先となるクラウドストレージの デフォルトシークレットの作成 の手順を完了します。
- バックアップコンポーネントの namespace にある OADP Operator の namespace にシークレットリソースを作成します。
1.1.3.1.2. バックアップ Operator の有効化 リンクのコピーリンクがクリップボードにコピーされました!
バックアップ Operator が Red Hat Advanced Cluster Management for Kubernetes の障害復旧ソリューションを使用できるようにします。
1.1.3.1.2.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
-
Red Hat OpenShift Container Platform クラスターから、Red Hat Advanced Cluster Management Operator バージョン 2.12 をインストールします。
MultiClusterHubリソースは、Red Hat Advanced Cluster Management のインストール時に自動的に作成され、Runningのステータスを表示します。
1.1.3.1.2.2. ハブクラスターのバックアップ Operator を有効にする リンクのコピーリンクがクリップボードにコピーされました!
アクティブ/パッシブハブクラスターのバックアップ Operator を有効にするには、以下の手順を実行します。
次の手順を実行して、クラスターバックアップおよび復元 Operator である
cluster-backupを有効にします。-
cluster-backupパラメーターをtrueに設定してMultiClusterHubリソースを更新します。このハブクラスターで AWS Security Token Service (STS) オプションが有効になっていない場合は、OADP Operator もバックアップコンポーネントと同じ namespace にインストールされます。 - STS オプションが有効になっているハブクラスターの場合は、OADP Operator を手動でインストールする必要があります。
-
- 復元ハブクラスターが、バックアップハブクラスターが使用するものと同じ Red Hat Advanced Cluster Management バージョンを使用していることを確認します。バックアップハブクラスターで使用されているバージョンよりも前のバージョンのハブクラスターでバックアップを復元することはできません。
次の手順を実行して、復元ハブクラスターを手動で設定します。
- アクティブハブクラスターと、そのアクティブハブクラスターと同じ namespace にインストールされているすべての Operator をインストールします。
- 新しいハブクラスターがバックアップハブクラスターと同じように設定されていることを確認します。
- バックアップおよび復元 Operator と、バックアップハブクラスターで設定する Operator をインストールするときは、バックアップハブクラスターと同じ namespace 名を使用します。
次の手順を実行して、パッシブハブクラスターに
DataProtectionApplicationリソースを作成します。-
アクティブハブクラスターとパッシブハブクラスターの両方に
DataProtectionApplicationリソースを作成します。 -
復元ハブクラスターの場合、
DataProtectionApplicationリソースを作成するときに、バックアップハブと同じストレージの場所を使用します。
-
アクティブハブクラスターとパッシブハブクラスターの両方に
1.1.3.1.3. OADP Operator のインストール リンクのコピーリンクがクリップボードにコピーされました!
AWS Security Token Service (STS) オプションを有効にしたハブクラスターの場合は、ハブクラスターにクラスターのバックアップおよび復元 Operator をインストールしても、OADP Operator はインストールされません。STS role_arn を OADP Operator に渡すには、OADP Operator を手動でインストールする必要があります。
STS オプションを有効にしなかったハブクラスターの場合は、ハブクラスターにクラスターバックアップおよび復元 Operator をインストールすると、OADP Operator が自動的にインストールされます。
MultiClusterHub リソースからバックアップオプションを有効にすると、OADP Operator を open-cluster-management-backup namespace にインストールするまで、バックアップオプションは Pending 状態のままになります。ハブクラスターで AWS STS オプションを有効にしていない場合は、バックアップチャートとともに OADP Operator が自動的にインストールされます。それ以外の場合は、OADP Operator を手動でインストールする必要があります。
クラスターが STS モードの場合、バックアップチャートは、open-cluster-management-backup namespace に acm-redhat-oadp-operator-subscription という名前の config map を作成します。この config map には、OADP チャネルと環境情報も含まれています。この config map を使用して、インストールする必要がある OADP バージョンを取得し、OADP サブスクリプションに設定する環境オプションを取得します。
STS オプションを使用して OADP Operator をインストールする方法の詳細は、OpenShift Container Platform ドキュメントの オプションのバックアップを使用した OADP ROSA でのワークロードのバックアップ を参照してください。
重要:
OADP Operator をインストールするときは、次の注意事項を参照してください。
- カスタムリソース定義はクラスタースコープであるため、同じクラスターに 2 つの異なるバージョンの OADP または Velero をインストールすることはできません。2 つの異なるバージョンがある場合、一方のバージョンは間違ったカスタムリソース定義で実行されます。
-
MultiClusterHubリソースを作成すると、Velero カスタムリソース定義 (CRD) はハブクラスターに自動的にインストールされません。OADP Operator をインストールすると、Velero CRD がハブクラスターにインストールされます。その結果、Velero CRD リソースはMultiClusterHubリソースによって調整および更新されなくなります。 - バックアップコンポーネントは、コンポーネントの namespace にインストールされている OADP Operator と連携して動作します。
- OADP Operator を手動でインストールする場合、OADP Operator と Velereo のカスタムリソース定義バージョンは一致する必要があります。これらのバージョンが互いに完全に一致しない場合は、問題が発生します。
- Velero と OADP Operator は、Red Hat Advanced Cluster Management for Kubernetes ハブクラスターにインストールされます。これは、Red Hat Advanced Cluster Management ハブクラスターリソースのバックアップおよび復元に使用されます。
- Velero でサポートされているストレージプロバイダーのリストについては、OADP のインストールについて を参照してください。
1.1.3.1.4. カスタム OADP バージョンのインストール リンクのコピーリンクがクリップボードにコピーされました!
MultiClusterHub リソースにアノテーションを設定すると、特定のニーズに合わせて OADP バージョンをカスタマイズできます。以下の手順を実行します。
バックアップおよび復元 Operator によってインストールされた OADP バージョンをオーバーライドするには、
MultiClusterHubリソースで次のアノテーションを使用します。installer.open-cluster-management.io/oadp-subscription-spec: '{"channel": "stable-1.4"}'installer.open-cluster-management.io/oadp-subscription-spec: '{"channel": "stable-1.4"}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要: このオプションを使用して、バックアップおよび復元 Operator によってデフォルトでインストールされたものとは異なる OADP バージョンを取得する場合は、このバージョンがハブクラスターによって使用される Red Hat OpenShift Container Platform バージョンでサポートされていることを確認してください。このオーバーライドオプションを使用すると、サポート対象外の設定になる可能性があるため、注意して使用してください。
たとえば、アノテーションを設定して OADP 1.5 バージョンをインストールします。
MultiClusterHubリソースは次の例のようになります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
cluster-backをtrueに設定して、MultiClusterHubリソースのcluster-backupオプションを有効にします。
1.1.3.1.5. DataProtectionApplication リソースの作成 リンクのコピーリンクがクリップボードにコピーされました!
アクティブ/パッシブハブクラスターの DataProtectionApplication リソースのインスタンスを作成するには、以下の手順を実行します。
- Red Hat OpenShift Container Platform コンソールから、Operators > Installed Operators を選択します。
-
DataProtectionApplication の下の
Create instanceをクリックします。 -
OpenShift Container Platform コンソールを使用して設定を選択するか、
DataProtectionApplicationの例に記載されている YAML ファイルを使用して、Velero インスタンスを作成します。 -
DataProtectionApplicationnamespace をopen-cluster-management-backupに設定します。 DataProtectionApplicationリソースの仕様 (spec:) 値を適切に設定します。次に、Create をクリックします。デフォルトのバックアップストレージの場所を使用する場合は、
backupStorageLocationsセクションで値default: trueを設定します。以下のDataProtectionApplicationリソースの例を確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.1.3.1.6. 非接続環境でのバックアップおよび復元コンポーネントの有効化 リンクのコピーリンクがクリップボードにコピーされました!
非接続環境で Red Hat OpenShift Container Platform を使用してバックアップおよび復元コンポーネントを有効にするには、以下の手順を実行します。
次のアノテーションを使用して
MultiClusterHubリソースを更新し、OADP Operator のインストール元のソースをオーバーライドします。MultiClusterHubリソースでcluster-backupコンポーネントを有効にする前に、アノテーションを作成します。apiVersion: operator.open-cluster-management.io/v1 kind: MultiClusterHub metadata: annotations: installer.open-cluster-management.io/oadp-subscription-spec: '{"source": "redhat-operator-index"}'apiVersion: operator.open-cluster-management.io/v1 kind: MultiClusterHub metadata: annotations: installer.open-cluster-management.io/oadp-subscription-spec: '{"source": "redhat-operator-index"}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow redhat-operator-indexはカスタム名であり、非接続環境で Red Hat OpenShift Operator にアクセスするために定義および使用するCatalogSourceリソースの名前を表します。次のコマンドを実行して、catalogsourceを取得します。oc get catalogsource -A
oc get catalogsource -ACopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力は次の例のような内容になります。
NAMESPACE NAME DISPLAY TYPE PUBLISHER AGE openshift-marketplace acm-custom-registry Advanced Cluster Management grpc Red Hat 42h openshift-marketplace multiclusterengine-catalog MultiCluster Engine grpc Red Hat 42h openshift-marketplace redhat-operator-index grpc 42h
NAMESPACE NAME DISPLAY TYPE PUBLISHER AGE openshift-marketplace acm-custom-registry Advanced Cluster Management grpc Red Hat 42h openshift-marketplace multiclusterengine-catalog MultiCluster Engine grpc Red Hat 42h openshift-marketplace redhat-operator-index grpc 42hCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.1.3.2. バックアップおよび復元 Operator の有効化 リンクのコピーリンクがクリップボードにコピーされました!
クラスターのバックアップおよび復元 Operator は、MultiClusterHub リソースの初回作成時に有効にできます。cluster-backup パラメーターは true に設定します。Operator を有効にすると、Operator リソースがインストールされます。
MultiClusterHub リソースがすでに作成されている場合には、MultiClusterHub リソースを編集して、クラスターバックアップ Operator をインストールまたはアンインストールできます。クラスターバックアップ Operator をアンインストールする場合は、cluster-backup を false に設定します。
バックアップおよび復元 Operator が有効にされている場合には、MultiClusterHub リソースは以下の YAML ファイルのようになります。
1.1.3.3. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
- Velero を参照してください。
- サポートされている Velero ストレージプロバイダーのリストは、OpenShift Container Platform ドキュメントの AWS S3 互換バックアップストレージプロバイダー を参照してください。
- DataProtectionApplication リソースの詳細を参照してください。
1.1.4. バックアップのスケジュール リンクのコピーリンクがクリップボードにコピーされました!
バックアップをスケジュールすることで、データが保護され、アクセス可能な状態を維持できるようになります。バックアップをスケジュールするには、次の手順を実行します。
次のコマンドを実行して、
backupschedule.cluster.open-cluster-management.ioリソースを作成します。oc create -f cluster_v1beta1_backupschedule.yaml
oc create -f cluster_v1beta1_backupschedule.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow cluster_v1beta1_backupschedule.yamlリソースは、次のファイルのようになる場合があります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
veleroScheduleは必須のプロパティーで、バックアップをスケジュールする cron ジョブを定義します。前の例では、2 時間ごとにバックアップが作成されます。- 2
- オプション:
veleroTtlは任意のプロパティーで、スケジュールされているバックアップリソースの有効期限を定義します。指定されていない場合には、Velero で設定された最大デフォルト値 (720h) が使用されます。スケジュールされたバックアップは120h後に削除されます。 - 3
- オプション:
useManagedServiceAccountは、自動インポート機能を有効にして、復元操作でクラスターをインポートできるオプションのプロパティーです。trueに設定すると、自動インポート機能が有効になり、復元操作でクラスターがインポートされます。 - 4
- オプション:
pausedは、バックアップスケジュールを一時停止できるオプションのプロパティーです。trueに設定すると、バックアップスケジュールが一時停止され、このリソースによって作成されたすべての Velero スケジュールが削除されます。
backupschedule.cluster.open-cluster-management.ioリソースの状態をチェックします。3 つのschedule.velero.ioリソースの定義が表示されます。以下のコマンドを実行します。oc get BackupSchedule -n open-cluster-management-backup
oc get BackupSchedule -n open-cluster-management-backupCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意: 復元操作は、復元シナリオ向けに別のハブクラスターで実行します。復元操作を開始するには、バックアップを復元するハブクラスターに
restore.cluster.open-cluster-management.ioリソースを作成します。注記: 新しいハブクラスターにバックアップを復元する場合は、バックアップを作成した以前のハブクラスターがシャットダウンされていることを確認します。実行中の場合には、前のハブクラスターは、マネージドクラスターの調整機能により、マネージドクラスターが使用できなくなったことが検出されるとすぐに、マネージドクラスターの再インポートが試行されます。
backupschedule.cluster.open-cluster-management.io リソースは、バックアップの生成に使用される schedule.velero.io リソースを 6 つ作成します。以下のコマンドを実行して、スケジュールされるバックアップのリストを表示します。
oc get schedules -A | grep acm
oc get schedules -A | grep acm
次の表が示すとおり、リソースはグループ内で個別にバックアップされます。
| リソース | 説明 |
|---|---|
|
| Hive 認証情報、Red Hat Advanced Cluster Management、ユーザーが作成した認証情報と ConfigMap を格納するバックアップファイル。 |
|
|
Red Hat Advanced Cluster Management リソースと汎用リソースのバックアップが 1 つずつ格納されています。これらのリソースには |
|
| バックアップが復元されるハブクラスターへのマネージドクラスター接続をアクティブにするリソースのみ格納されています。 |
注記: リソースバックアップ ファイルには、マネージドクラスター固有のリソースが含まれていますが、マネージドクラスターをハブクラスターに接続するリソースのサブセットは含まれていません。マネージドクラスターを接続するリソースは、アクティベーションリソースと呼ばれ、マネージドクラスターのバックアップに含まれます。新しいハブクラスターで 認証情報 と リソース のバックアップのみのバックアップを復元すると、新しいハブクラスターには、Hive API を使用して作成されたすべてのマネージドクラスターが切り離された状態で表示されます。インポート操作を使用してプライマリーハブクラスターにインポートされたマネージドクラスターは、アクティベーションデータがパッシブハブクラスターに復元された場合にのみ表示されます。マネージドクラスターは、バックアップファイルを作成した元のハブクラスターに引き続き接続されます。
アクティベーションデータが復元されると、Hive API を使用して作成されたマネージドクラスターのみが新しいハブクラスターに自動的に接続されます。その他のマネージドクラスターは、すべて Pending 状態になります。それらを新しいクラスターに手動で再割り当てする必要があります。
さまざまな BackupSchedule ステータスの説明は、次の表を参照してください。
BackupSchedule ステータス | 説明 |
|---|---|
|
|
|
|
|
エラーにより、 |
|
|
|
|
|
|
1.1.4.1. バックアップ競合の理解 リンクのコピーリンクがクリップボードにコピーされました!
ハブクラスターのステータスがパッシブハブクラスターからプライマリーハブクラスターに、またはプライマリーハブクラスターからパッシブに変更され、異なるハブクラスターが同じストレージの場所にデータをバックアップすると、バックアップの競合が発生する可能性があります。
その結果、最新のバックアップは、プライマリーハブクラスターではなくなったハブクラスターによって生成されます。BackupSchedule.cluster.open-cluster-management.io リソースがまだ有効であるため、このハブクラスターは引き続きバックアップを生成します。
障害復旧テスト操作などの制御された環境で復元操作を実行する場合は、バックアップハブクラスターで BackupSchedule paused プロパティーを使用すると、バックアップの競合を防ぐことができます。新しいハブクラスターにリソースを復元する前に、BackupSchedule リソースで paused=true プロパティーを設定して、バックアップハブの BackupSchedule リソースを一時停止します。
バックアップの競合を引き起こす可能性のある 2 つのシナリオは、次のリストを参照してください。
プライマリーハブクラスターが予期せず失敗する。これは、次の状況で発生します。
- プライマリーハブクラスターから最初のハブクラスターへの通信が失敗します。
- 最初のハブクラスターのバックアップデータは、セカンダリーハブクラスターと呼ばれるセカンダリーハブクラスターに復元されます。
-
管理者がセカンダリーハブクラスター上に
BackupSchedule.cluster.open-cluster-management.ioリソースを作成します。セカンダリーハブクラスターがプライマリーハブクラスターとなり、共通のストレージ場所にバックアップデータを生成します。 最初のハブクラスターが予期せず再び動作を開始します。
最初のハブクラスターでは
BackupSchedule.cluster.open-cluster-management.ioリソースがまだ有効になっているため、最初のハブクラスターはセカンダリーハブクラスターと同じストレージの場所にバックアップの書き込みを再開します。両方のハブクラスターが同じストレージ場所にバックアップデータを書き込んでいます。この保存場所から最新のバックアップを復元するハブクラスターは、セカンダリーハブクラスターデータではなく、最初のハブクラスターデータを使用する場合があります。
管理者は、セカンダリーハブクラスターをプライマリーハブクラスターにして、次の条件によって発生する災害シナリオをテストします。
- 最初のハブクラスターが停止します。
- 最初のハブクラスターのバックアップデータは、セカンダリーハブクラスターに復元されます。
-
管理者がセカンダリーハブクラスター上に
BackupSchedule.cluster.open-cluster-management.ioリソースを作成します。セカンダリーハブクラスターがプライマリーハブクラスターとなり、共通のストレージ場所にバックアップデータを生成します。 - 災害テストが完了したら、管理者は以前の状態に戻して、最初のハブクラスターを再びプライマリーハブクラスターにします。
セカンダリーハブクラスターがアクティブである間に、最初のハブクラスターが起動します。
BackupSchedule.cluster.open-cluster-management.ioリソースはセカンダリーハブクラスターでまだ有効になっているため、同じストレージの場所にバックアップが書き込まれ、バックアップデータが破損します。この場所から最新のバックアップを復元するハブクラスターは、最初のハブクラスターデータの代わりにセカンダリーハブクラスターデータを使用する場合があります。このシナリオでは、バックアップの競合の問題を回避するために、最初のハブクラスターを起動する前に、まずセカンダリーハブクラスターを停止するか、セカンダリーハブクラスター上のBackupSchedule.cluster.open-cluster-management.ioリソースを一時停止します。
管理者は、最初に最初のハブクラスターを停止せずに、セカンダリーハブクラスターをプライマリーハブクラスターにして、次の状態を発生させる災害シナリオをテストします。
- 最初のハブクラスターはまだ実行中です。
- マネージドクラスターのバックアップを含む、最初のハブクラスターのバックアップデータは、セカンダリーハブクラスターに復元されます。したがって、セカンダリーハブクラスターがアクティブクラスターになります。
-
BackupSchedule.cluster.open-cluster-management.ioリソースは最初のハブクラスターでまだ有効になっているため、同じストレージの場所にバックアップが書き込まれ、バックアップデータが破損します。たとえば、この場所から最新のバックアップを復元するハブクラスターは、セカンダリーハブクラスターデータではなく、最初のハブクラスターデータを使用する場合があります。データの破損を回避するために、最初のハブクラスターのBackupScheduleリソースのステータスは自動的にBackupCollisionに変更になります。このシナリオでは、バックアップの衝突状態を回避するために、まず最初のハブクラスターを停止するか、最初のハブクラスター上のBackupSchedule.cluster.open-cluster-management.ioリソースを削除してから、セカンダリーハブクラスターでマネージドクラスターのデータを復元します。
1.1.4.2. バックアップの競合を防ぐ リンクのコピーリンクがクリップボードにコピーされました!
バックアップの競合を防止および報告するには、BackupSchedule.cluster.open-cluster-management.io リソースの BackupCollision 状態を使用します。コントローラーは、保管場所の最新のバックアップが現在のハブクラスターから生成されたかどうかを定期的に確認します。そうでない場合は、別のハブクラスターが最近バックアップデータを保存場所に書き込んだことになり、ハブクラスターが別のハブクラスターと競合していることを示します。
バックアップ競合シナリオでは、現在のハブクラスターの BackupSchedule.cluster.open-cluster-management.io リソースのステータスが BackupCollision に設定されます。データの破損を防ぐために、このリソースは Schedule.velero.io リソースを削除します。バックアップポリシーは BackupCollision を報告します。
同じシナリオで、管理者はどのハブクラスターがストレージの場所に書き込むかを確認します。管理者は、無効なハブクラスターから BackupSchedule.cluster.open-cluster-management.io リソースを削除する前にこの検証を実行します。その後、管理者は有効なプライマリーハブクラスターに新しい BackupSchedule.cluster.open-cluster-management.io リソースを作成し、バックアップを再開できます。
バックアップの競合があるかどうかを確認するには、次のコマンドを実行します。
oc get backupschedule -A
oc get backupschedule -A
バックアップの競合がある場合は、出力は次の例のようになります。
NAMESPACE NAME PHASE MESSAGE openshift-adp schedule-hub-1 BackupCollision Backup acm-resources-schedule-20220301234625, from cluster with id [be97a9eb-60b8-4511-805c-298e7c0898b3] is using the same storage location. This is a backup collision with current cluster [1f30bfe5-0588-441c-889e-eaf0ae55f941] backup. Review and resolve the collision then create a new BackupSchedule resource to resume backups from this cluster.
NAMESPACE NAME PHASE MESSAGE
openshift-adp schedule-hub-1 BackupCollision Backup acm-resources-schedule-20220301234625, from cluster with id [be97a9eb-60b8-4511-805c-298e7c0898b3] is using the same storage location. This is a backup collision with current cluster [1f30bfe5-0588-441c-889e-eaf0ae55f941] backup. Review and resolve the collision then create a new BackupSchedule resource to resume backups from this cluster.
1.1.4.3. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
1.1.5. バックアップの復元 リンクのコピーリンクがクリップボードにコピーされました!
一般的な復元状況では、バックアップを実行するハブクラスターが使用できなくなり、バックアップされるデータを新しいハブクラスターに移動する必要があります。新しいハブクラスターでクラスター復元操作を実行します。この場合、バックアップが作成されたのとは異なるハブクラスターで復元操作を実行します。
バックアップが収集された同じハブクラスターでデータを復元する場合は、以前のスナップショットからデータを回復できます。その場合は、復元とバックアップ操作の両方が同じハブクラスターで実行されます。
バックアップを完全に復元するには、次の手順を実行します。
1.1.5.1. バックアップタイプの復元操作の使用 リンクのコピーリンクがクリップボードにコピーされました!
復元操作を使用して、バックアップ操作によって作成された 3 つのバックアップタイプすべてを復元します。特定の種類のバックアップ (マネージドクラスターのみ、ユーザー認証情報のみ、またはハブクラスターリソースのみ) のみをインストールするように選択します。
復元では、以下の 3 つの必要な spec プロパティーを定義します。ここでは、バックアップしたファイルのタイプに対して復元ロジックが定義されます。
-
veleroManagedClustersBackupNameは、マネージドクラスターのアクティベーションリソースの復元オプションを定義するのに使用されます。 -
veleroCredentialsBackupNameは、ユーザーの認証情報の復元オプションを定義するために使用されます。 veleroResourcesBackupNameは、ハブクラスターリソース (Applications、Policy、その他のハブクラスターリソース (マネージドクラスターパッシブデータなど)) の復元オプションを定義するのに使用されます。前述のプロパティーの有効な値は次のとおりです。
-
latest: このプロパティーは、このタイプのバックアップで使用可能な、最後のバックアップファイルを復元します。 -
skip- このプロパティーは、現在の復元操作でこのタイプのバックアップの復元を試行しません。 -
<backup_name>: このプロパティーは、名前で参照する指定のバックアップを復元します。
-
restore.cluster.open-cluster-management.io で作成された restore.velero.io リソースの名前は、<restore.cluster.open-cluster-management.io name>-<velero-backup-resource-name> のテンプレートルールを使用して生成されます。以下の説明を参照してください。
-
restore.cluster.open-cluster-management.io nameは、復元を開始する現在のrestore.cluster.open-cluster-management.ioリソースの名前です。 velero-backup-resource-nameは、データの復元に使用される Velero バックアップファイルの名前です。たとえば、restore.cluster.open-cluster-management.ioリソースrestore-acmはrestore.velero.io復元リソースを作成します。フォーマットは、以下の例を参照してください。-
restore-acm-acm-managed-clusters-schedule-20210902205438は、マネージドクラスターのアクティベーションデータのバックアップを復元するのに使用されます。このサンプルでは、リソースの復元に使用されるbackup.velero.ioバックアップ名はacm-managed-clusters-schedule-20210902205438です。 -
restore-acm-acm-credentials-schedule-20210902206789は、認証情報バックアップの復元に使用されます。このサンプルでは、リソースの復元に使用されるbackup.velero.ioバックアップ名はacm-managed-clusters-schedule-20210902206789です。 -
restore-acm-acm-resources-schedule-20210902201234は、アプリケーション、ポリシー、およびマネージドクラスターパッシブデータバックアップなどの他のハブクラスターリソースを復元するのに使用されます。このサンプルでは、リソースの復元に使用されるbackup.velero.ioバックアップ名はacm-managed-clusters-schedule-20210902201234です。
-
注記: skip がバックアップタイプに使用されている場合は、restore.velero.io は作成されません。
以下の YAML サンプルで、クラスターの Restore リソースを参照してください。この例では、利用可能な最新のバックアップファイルを使用して、3 つのタイプのバックアップファイルがすべて復元されています。
注記 Hive API によって作成されたマネージドクラスターのみが、マネージドクラスターのバックアップからの acm-managed-clusters バックアップが別のハブクラスターに復元されるときに、新しいハブクラスターに自動的に接続されます。他のすべてのマネージドクラスターは Pending Import 状態のままであり、新しいハブクラスターにインポートし直す必要があります。詳細は、インポートしたマネージドクラスターの復元 を参照してください。
1.1.5.2. 最初のプライマリーハブへのデータの復元 リンクのコピーリンクがクリップボードにコピーされました!
クラスターでバックアップデータを復元する必要がある場合は、ユーザーが作成したリソースを使用して、プライマリーハブクラスターまたはハブクラスターでデータを復元する代わりに、新しいクラスターを作成します。
データを初期のプライマリーハブクラスターに復元すると、現在のハブクラスターとプライマリーハブクラスターの両方がマネージドクラスターにアクセスできるようになります。両方のハブクラスターが制御を取得しようとするため、マネージドクラスターはハブクラスター間を頻繁に行き来することになります。
復元操作前にユーザーが作成したリソースを含むハブクラスターでデータを復元する場合、その操作にリソースを含めることはできません。ハブクラスター上のデータには、利用可能なデータがすべて含まれているわけではありません。
障害復旧テストシナリオでは、プライマリーハブクラスターをパッシブクラスターとして使用します。障害復旧テストでは、パッシブハブでの復元操作のみを検証し、その後プライマリーハブクラスターを使用します。
ハブバックアップクラスターのみをテストし、プライマリーハブクラスターを使用して新しいリソースを作成しません。代わりに、バックアップデータはプライマリーハブクラスターからパッシブハブクラスターに一時的に移動されます。すべてのリソースを復元すると、最初のプライマリーハブクラスターを再びプライマリーハブクラスターにすることができます。この操作では、復元後の操作が実行され、マネージドクラスターがこのハブクラスターに戻されます。
重要: 障害復旧テストでは、初期のプライマリーハブクラスターに戻る前に、復元クラスターを停止します。復元クラスターを停止すると、データが復元されて元のプライマリーハブクラスターへ移動した後も、マネージドクラスターは元の状態に復帰しなくなります。
1.1.5.3. 新規ハブクラスターの準備 リンクのコピーリンクがクリップボードにコピーされました!
ハブクラスターでバックアップデータを復元する必要がある場合は、プライマリーハブクラスターまたは復元操作の前に以前のユーザーがリソースを作成したハブクラスターを使用する代わりに、新しいハブクラスターを作成します。
障害復旧シナリオでは、バックアップをパッシブハブクラスターに復元するときに、障害発生中に失敗したハブクラスターと同じハブクラスターが必要になります。アプリケーション、ポリシー、追加のマネージドクラスターなど、その他のユーザーリソースは必要ありません。
このハブクラスターでバックアップを復元する場合、このハブクラスターによって管理されるマネージドクラスターがあると、復元操作によってそれらのクラスターがデタッチされ、クラスターリソースが削除される可能性があります。復元操作では、復元されたバックアップに含まれないリソースをクリーンアップするためにこれを行います。その結果、このハブクラスターのコンテンツは最初のハブクラスターと同じになります。この場合、マネージドクラスターのワークロードがデタッチアクションによってデタッチされるため、ユーザーデータが失われる可能性があります。
新しいハブクラスターで復元操作を実行する前に、ハブクラスターを手動で設定し、初期ハブクラスターと同じ Operator をインストールする必要があります。Red Hat Advanced Cluster Management Operator は、最初のハブクラスターと同じ namespace にインストールし、DataProtectionApplication リソースを作成してから、最初のハブクラスターがデータをバックアップしたのと同じストレージの場所に接続する必要があります。
MultiClusterEngine リソースへの変更を含め、Red Hat Advanced Cluster Management Operator によって作成された MultiClusterHub リソースの最初のハブクラスターと同じ設定を使用します。
たとえば、最初のハブクラスターに Ansible Automation Platform、Red Hat OpenShift GitOps、cert-manager などの他の Operator がインストールされている場合は、復元操作を実行する前にそれらをインストールする必要があります。これにより、新しいハブクラスターが初期のハブクラスターと同じ方法で設定されます。
1.1.5.4. 新しいバージョンのハブクラスターで復元操作を実行する リンクのコピーリンクがクリップボードにコピーされました!
データをバックアップしたハブクラスターと同じ Red Hat Advanced Cluster Management Operator バージョンを使用するハブクラスターで復元操作を実行します。新しい Red Hat Advanced Cluster Management Operator バージョンを使用するハブクラスターで復元操作を実行する場合は、次の手順を実行します。
- 復元ハブクラスターに、バックアップを作成したハブクラスターと同じバージョンの Red Hat Advanced Cluster Management Operator をインストールします。
- 復元ハブクラスターでバックアップデータを復元します。
- 復元ハブクラスターで、アップグレード操作を使用して、使用する Red Hat Advanced Cluster Management オペレーターバージョンにアップグレードします。
1.1.5.5. 復元後のハブクラスターのクリーニング リンクのコピーリンクがクリップボードにコピーされました!
現在復元されているバックアップで既存のリソースが変更されている場合、Velero は既存のリソースを更新します。Velero はデルタリソースをクリーンアップしません。これは、以前の復元によって作成されたリソースであり、現在復元されているバックアップの一部ではありません。これにより、新しいハブクラスターでハブクラスターデータを復元するときに使用できるシナリオが制限されます。復元が 1 回だけ適用されない限り、新しいハブクラスターをパッシブ設定として確実に使用することはできません。ハブクラスターのデータは、復元されたリソースで利用できるデータを反映していません。
この制限に対処するために、Restore.cluster.open-cluster-management.io リソースが作成されると、バックアップ Operator は、ハブクラスターをクリーンアップする復元後の操作を実行します。この操作は、現在復元されているバックアップの一部ではない、以前の Red Hat Advanced Cluster Management 復元によって作成されたすべてのリソースを削除します。
復元後のクリーンアップでは、cleanupBeforeRestore プロパティーを使用して、クリーンアップするオブジェクトのサブセットを識別します。復元後のクリーンアップには、次のオプションを使用できます。
-
None: クリーンアップは必要なく、Velero の復元を開始するだけです。真新しいハブクラスターではNoneを使用します。 -
CleanupRestored: 現在復元されているバックアップの一部ではない、以前の Red Hat Advanced Cluster Management 復元によって作成されたすべてのリソースをクリーンアップします。 CleanupAll: Red Hat Advanced Cluster Management バックアップの一部である可能性があるハブクラスター上のすべてのリソースを、復元操作の結果として作成されたものではない場合でもクリーンアップします。これは、復元操作が開始される前にハブクラスターで追加のコンテンツが作成される場合に使用されます。ベストプラクティス:
CleanupAllオプションは使用しないでください。細心の注意を払って最後の手段としてのみ使用してください。CleanupAllは、以前に復元されたバックアップによって作成されたリソースに加えて、ユーザーによって作成されたハブクラスター上のリソースもクリーンアップします。代わりに、CleanupRestoredオプションを使用して、ハブクラスターが災害シナリオのパッシブ候補として指定されている場合に、ハブクラスターのコンテンツを更新しないようにします。クリーンハブクラスターをパッシブクラスターとして使用します。
注記:
-
Velero は、復元されたバックアップにリソースがない場合に、velero 復元リソースのステータス
PartiallyFailedを設定します。これは、対応するバックアップが空であるために作成されたrestore.velero.ioリソースのいずれかによりリソースが復元されない場合には、restore.cluster.open-cluster-management.ioリソースがPartiallyFailedステータスになる可能性があることを意味します。 -
syncRestoreWithNewBackups:trueを使用して新規バックアップが利用可能な場合にパッシブデータの復元を継続しない限り、restore.cluster.open-cluster-management.ioリソースは 1 回実行されます。この場合、同期サンプルで復元パッシブに従います。バックアップの確認中にパッシブリソースを復元する を参照してください。復元操作が完了し、同じハブクラスターで別の復元操作を実行する場合は、新しいrestore.cluster.open-cluster-management.ioリソースを作成する必要があります。 -
複数の
restore.cluster.open-cluster-management.ioリソースを作成できますが、いつでもアクティブにできるのは 1 つだけです。
1.1.5.6. バックアップの確認中にパッシブリソースを復元する リンクのコピーリンクがクリップボードにコピーされました!
新しいバックアップが利用可能かどうかを引き続き確認し、それらを自動的に復元しながら、restore-passive-sync サンプルを使用してパッシブデータを復元します。新しいバックアップを自動的に復元するには、syncRestoreWithNewBackups パラメーターを true に設定する必要があります。また、最新のパッシブデータだけを復元する必要もあります。サンプルの例は、このセクションの最後にあります。
VeleroResourcesBackupName および VeleroCredentialsBackupName パラメーターを latest に設定し、VeleroManagedClustersBackupName パラメーターを skip に設定します。VeleroManagedClustersBackupName が latest に設定された直後に、マネージドクラスターは新しいハブクラスターでアクティベートされ、プライマリーハブクラスターになります。
アクティベートされたマネージドクラスターがプライマリーハブクラスターになると、復元リソースが Finished に設定され、true に設定されていても syncRestoreWithNewBackups は無視されます。
デフォルトでは、コントローラーは syncRestoreWithNewBackups が true に設定されると、30 分ごとに新規バックアップをチェックします。新しいバックアップが見つかった場合は、バックアップされたリソースを復元します。restoreSyncInterval パラメーターを更新してチェックの期間を変更できます。
復元操作の完了後に同じ復元操作を再度実行する場合は、同じ spec オプションで新しい restore.cluster.open-cluster-management.io リソースを作成する必要があります。
たとえば、10 分ごとにバックアップをチェックする次のリソースを参照してください。
1.1.5.7. パッシブリソースを復元する リンクのコピーリンクがクリップボードにコピーされました!
パッシブ設定でハブクラスターリソースを復元するには、restore-acm-passive サンプルを使用します。パッシブデータは、シークレット、ConfigMap、アプリケーション、ポリシー、およびすべてのマネージドクラスターカスタムリソースなどのバックアップデータで、マネージドクラスターとハブクラスター間の接続をアクティブ化しません。バックアップリソースは、認証情報のバックアップおよび復元リソースによりハブクラスターで復元されます。
以下のサンプルを参照してください。
1.1.5.8. アクティベーションリソースの復元 リンクのコピーリンクがクリップボードにコピーされました!
パッシブハブクラスターにアクティベーションデータを復元する前に、バックアップが作成された以前のハブクラスターをシャットダウンします。プライマリーハブクラスターがまだ実行中の場合は、このハブクラスターで実行されている調整手順に基づいて、使用できなくなったマネージドクラスターへの再接続を試行します。
ハブクラスターでクラスターを管理する場合は、restore-acm-passive-activate サンプルを使用します。この場合、パッシブリソースを使用するハブクラスターで他のデータがすでに復元されていることを前提とします。
パッシブリソースを復元した方法に応じて、アクティベーションリソースを復元するいくつかのオプションがあります。
-
Restore passive resources while checking for backups to restore passive data セクションに記載されているように、
restore-acm-passive-sync cluster.open-cluster-management.ioリソースを使用した場合は、このリソースでveleroManagedClustersBackupNameの値をlatestの値に更新します。その結果、マネージドクラスターリソースとrestore-acm-passive-syncリソースが復元されます。 - パッシブリソースを 1 回限りの操作で復元した場合、またはリソースをまだ復元していない場合は、Restoring all resources セクションで指定されているように、すべてのリソースを復元することを選択します。
1.1.5.9. マネージドクラスターのアクティベーションデータの復元 リンクのコピーリンクがクリップボードにコピーされました!
cluster.open-cluster-management.io/backup: cluster-activation ラベルを使用すると、マネージドクラスターのアクティベーションデータまたはその他のアクティベーションデータリソースは、マネージドクラスターのバックアップおよび resource-generic バックアップにより保存されます。アクティベーションデータが新しいハブクラスターに復元すると、マネージドクラスターは、復元が実行するハブクラスターによりアクティブに管理されます。Operator の使用方法は、バックアップのスケジュールと復元 を参照してください。
1.1.5.10. 全リソースの復元 リンクのコピーリンクがクリップボードにコピーされました!
すべてのデータを復元するには、次の restore-acm サンプルを使用します。
ハブクラスターに restore.cluster.open-cluster-management.io リソースを作成した後、次のコマンドを実行して復元操作のステータスを取得します。
oc describe -n open-cluster-management-backup restore-acm
oc describe -n open-cluster-management-backup restore-acm
1.1.5.11. インポートされたマネージドクラスターの復元 リンクのコピーリンクがクリップボードにコピーされました!
Hive API を使用してプライマリーハブクラスターに接続されたマネージドクラスターのみが、アクティベーションデータが復元される新しいハブクラスターに自動的に接続されます。これらのクラスターは、Clusters タブの Create cluster ボタンを使用するか、CLI を通じて、Hive API によってプライマリーハブクラスター上に作成されています。Import cluster ボタンを使用して最初のハブクラスターに接続されたマネージドクラスターは、アクティベーションデータが復元されると Pending Import として表示され、新しいハブクラスターにインポートし直す必要があります。
Hive がマネージドクラスター kubeconfig をハブクラスターのマネージドクラスター namespace に格納するため、Hive マネージドクラスターを新しいハブクラスターに接続できます。これは、新しいハブクラスターでバックアップおよび復元されます。次に、インポートコントローラーは、復元された設定を使用してマネージドクラスターのブートストラップ kubeconfig を更新します。これは、Hive API を使用して作成されたマネージドクラスターでのみ使用できます。インポートされたクラスターでは使用できません。
復元操作中に新しいハブクラスターにインポートされたクラスターを再接続するには、BackupSchedule で自動インポート機能を有効にします。詳細は、自動インポートの有効化 を参照してください。
1.1.5.12. 他の復元サンプルの使用 リンクのコピーリンクがクリップボードにコピーされました!
以下の YAML の例を参照して、さまざまなタイプのバックアップファイルを復元します。
3 種類のバックアップリソースをすべて復元します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow マネージドクラスターリソースのみを復元します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow acm-managed-clusters-schedule-20210902205438バックアップを使用して、マネージドクラスターのリソースのみを復元します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記:
-
フェーズが
EnabledまたはRunningの場合、restore.cluster.open-cluster-management.ioリソースはまだアクティブです。リソースの実行は完了すると、フェーズがFinishedに変わります。復元操作が完了したら、同じハブクラスターで別の復元操作を実行できます。 -
一度に実行できる
restore.cluster.open-cluster-management.ioは 1 つだけです。
-
フェーズが
velero.io.restoreの詳細オプションを使用して、復元するリソースを除外します。vb-managed-cls-2マネージドクラスター namespace からのみリソースを復元し、グローバルMultiClusterリソースを除外するには、velero.io.restorespecオプションを含む次のサンプルを使用します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Red Hat Advanced Cluster Management 復元リソースを作成するときに、次の
velero.io.restorespecオプションを設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記:
-
これらの Velero 復元フィルターのいずれかを設定する場合は、
cleanupBeforeRestoreをNoneに設定してください。これは、復元されるバックアップの一部であるが、適用されるフィルターによって復元対象外となるハブクラスターリソースのクリーンアップを回避するためです。
-
これらの Velero 復元フィルターのいずれかを設定する場合は、
1.1.5.13. 高度な復元オプションの使用 リンクのコピーリンクがクリップボードにコピーされました!
velero.io.restore 仕様では、高度な復元オプションが定義されています。これらの高度な復元オプションを使用すると、復元するリソースを除外できます。
たとえば、次の YAML サンプルを使用して、マネージドクラスターの namespace vb-managed-cls-2 からのみリソースを復元し、グローバルの Managedluster リソースを除外することができます。
Red Hat Advanced Cluster Management for Kubernetes の復元リソースを作成するときに、velero.io.restore 仕様のオプションがさらに必要な場合は、次の復元フィルターを参照してください。
注記: どの Velero 復元フィルターでも、cleanupBeforeRestore フィールドを None に設定してください。これは、復元されるバックアップの一部であるが、適用されるフィルターによって復元対象外となるハブクラスターリソースをクリーンアップする必要性を回避するためです。
1.1.5.14. 復元イベントの表示 リンクのコピーリンクがクリップボードにコピーされました!
以下のコマンドを使用して、復元イベントに関する情報を取得します。
oc describe -n open-cluster-management-backup <restore-name>
oc describe -n open-cluster-management-backup <restore-name>
イベント一覧は以下の例のようになります。
1.1.5.15. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
- DataProtectionApplication を参照してください。
- 自動インポートシークレットを使用したクラスターのインポート を参照してください。
- バックアップのスケジュール を参照してください。
1.1.6. マネージドサービスアカウントを使用してクラスターを自動的に接続する リンクのコピーリンクがクリップボードにコピーされました!
バックアップコントローラーは、マネージドサービスアカウントコンポーネントを使用して、インポートされたクラスターを新しいハブクラスターに自動的に接続します。マネージドサービスアカウントは、マネージドクラスターの namespace ごとに、それぞれのインポートされたクラスターにバックアップされるトークンを作成します。トークンは klusterlet-bootstrap-kubeconfig ClusterRole バインディングを使用します。これにより、自動インポート操作でトークンを使用できるようになります。klusterlet-bootstrap-kubeconfig ClusterRole は、bootstrap-hub-kubeconfig シークレットのみを取得または更新できます。Managed Service Account コンポーネントの詳細は、Managed Service Account とは を参照してください。
アクティベーションデータが新しいハブクラスターに復元されると、復元コントローラーは復元後の操作を実行し、Pending Import 状態のすべてのマネージドクラスターを探します。マネージドサービスアカウントによって生成された有効なトークンが見つかった場合、コントローラーはそのトークンを使用して auto-import-secret を作成します。その結果、インポートコンポーネントはマネージドクラスターの再接続を試みます。クラスターにアクセスできる場合、操作は成功です。
1.1.6.1. Enabling automatic import リンクのコピーリンクがクリップボードにコピーされました!
マネージドサービスアカウントコンポーネントを使用した自動インポート機能は、デフォルトでは無効になっています。自動インポート機能を有効にするには、次の手順を実行します。
MultiClusterEngineリソースでmanagedserviceaccountenabledパラメーターをtrueに設定して、マネージドサービスアカウントコンポーネントを有効にします。以下の例を参照してください。Copy to Clipboard Copied! Toggle word wrap Toggle overflow useManagedServiceAccountパラメーターをtrueに設定して、BackupSchedule.cluster.open-cluster-management.ioリソースの自動インポート機能を有効にします。以下の例を参照してください。Copy to Clipboard Copied! Toggle word wrap Toggle overflow デフォルトのトークン有効期間は、ライフサイクル全体にわたってトークンを保存するすべてのバックアップに対してトークンが有効になる可能性を高くするために、
veleroTtlの値の 2 倍に設定されます。場合によっては、オプションのmanagedServiceAccountTTLプロパティーの値を設定することで、トークンの有効期間を制御する必要がある場合があります。生成されたトークンのデフォルトのトークン有効期限を更新する必要がある場合は、注意して
managedServiceAccountTTLを使用してください。トークンの有効期限をデフォルト値から変更すると、バックアップのライフサイクル中に有効期限が切れるように設定されたトークンを使用してバックアップが作成される可能性があります。その結果、インポート機能はマネージドクラスターでは機能しません。重要: トークンの有効期間を制御する必要がない限り、
managedServiceAccountTTLを使用しないでください。managedServiceAccountTTLプロパティーの使用例は、次の例を参照してください。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
自動インポート機能を有効にすると、バックアップコンポーネントは以下を作成して、インポートされたマネージドクラスターの処理を開始します。
-
managed-serviceaccountという名前のManagedServiceAddon。 -
auto-import-accountという名前のManagedServiceAccount。 -
マネージドクラスターで
ManagedServiceAccountトークンのklusterlet-bootstrap-kubeconfigRoleBindingを設定するための、各ManagedServiceAccountのManifestWork。
トークンは、マネージドサービスアカウントの作成時にマネージドクラスターにアクセスできる場合にのみ作成されます。それ以外の場合は、後でマネージドクラスターが利用可能になったときに作成されます。
1.1.6.2. 自動インポートに関する考慮事項 リンクのコピーリンクがクリップボードにコピーされました!
次のシナリオでは、新しいハブクラスターに移動するときに、マネージドクラスターが自動的にインポートされなくなる可能性があります。
-
ManagedServiceAccountトークンを使用せずにハブバックアップを実行する場合 (たとえば、マネージドクラスターにアクセスできないときにManagedServiceAccountリソースを作成する場合)、マネージドクラスターを自動インポートするためのトークンがバックアップに含まれません。 -
auto-import-accountシークレットトークンが有効でバックアップされている場合、自動インポート操作は失敗しますが、バックアップで使用可能なトークンの有効期限がすでに切れている場合、復元操作が実行されます。restore.cluster.open-cluster-management.ioリソースは、各マネージドクラスターの無効なトークンの問題を報告します。 復元時に作成される
auto-import-secretはManagedServiceAccountトークンを使用してマネージドクラスターに接続するため、マネージドクラスターは kubeapiserver情報も提供する必要があります。ManagedClusterリソースにapiserverを設定する必要があります。以下の例を参照してください。Copy to Clipboard Copied! Toggle word wrap Toggle overflow クラスターがハブクラスターにインポートされると、
apiserverは OpenShift Container Platform クラスターでのみ自動的にセットアップされます。EKS クラスターなどの他のタイプのマネージドクラスターでは、apiserverを手動で設定する必要があります。そうしないと、自動インポート機能でクラスターが無視されます。その結果、クラスターを復元ハブクラスターに移動すると、クラスターはPending Import状態のままになります。-
ManagedServiceAccountシークレットにバックアップラベルが設定される前にバックアップスケジュールが実行された場合、ManagedServiceAccountシークレットがバックアップに含まれない可能性があります。ManagedServiceAccountシークレットには、作成時に設定されたクラスターopen-cluster-management.io/backupラベルがありません。このため、バックアップコントローラーはマネージドクラスターの namespace でManagedServiceAccountシークレットを定期的に検索し、見つからない場合はバックアップラベルを追加します。
1.1.6.3. 自動インポートの無効化 リンクのコピーリンクがクリップボードにコピーされました!
BackupSchedule リソースで useManagedServiceAccount パラメーターを false に設定することで、クラスターの自動インポート機能を無効にすることができます。以下の例を参照してください。
デフォルト値は false です。値を false に設定した後、バックアップ Operator は、ManagedServiceAddon、ManagedServiceAccount、および ManifestWork を含む、作成されたすべてのリソースを削除します。リソースを削除すると、ハブクラスターとマネージドクラスターの自動インポートトークンが削除されます。
1.1.6.4. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
- Managed Service Account の詳細は、Managed Service Account とは を参照してください。
- Managed Service Account を使用したクラスターの自動接続 に戻ってください。
1.1.7. バックアップまたは復元設定の検証 リンクのコピーリンクがクリップボードにコピーされました!
MultiClusterHub リソースで cluster-backup オプションを true に設定すると、マルチクラスターエンジン Operator により、クラスターのバックアップおよび復元 Operator の Helm チャートがインストールされます。この Helm チャートは cluster-backup-chart という名前です。このチャートにより、backup-restore-enabled ポリシーと backup-restore-auto-import ポリシーがインストールされます。これらのポリシーを使用して、バックアップおよび復元コンポーネントの問題に関する情報を表示します。
注記: ハブクラスターは、local-cluster として自動的にインポートされ、自己管理されます。MultiClusterHub リソースで、disableHubSelfManagement を true に設定して自己管理を無効にすると、backup-restore-enabled ポリシーはハブクラスターに配置されず、ポリシーテンプレートはレポートを生成しません。
ハブクラスターがグローバルハブクラスターによって管理されている場合、またはマネージドクラスターインスタンスにインストールされている場合は、disableHubSelfManagement を true に設定することで、自己管理オプションが無効になる可能性があります。このインスタンスの場合でも、ハブクラスターで backup-restore-enabled ポリシーを有効にすることができます。ローカルクラスターを表す ManagedCluster リソースに is-hub=true ラベルを設定します。
backup-restore-enabled ポリシーには、以下の制約を確認するテンプレートセットが含まれます。
OADP チャネルの検証
-
MultiClusterHubでバックアップコンポーネントを有効にすると、クラスターバックアップおよび復元 Operator の Helm チャートは、OADP Operator をopen-cluster-management-backupnamespace に自動的にインストールできます。namespace に OADP Operator を手動でインストールすることもできます。 -
手動インストール用に選択した
OADP-channelは、Red Hat Advanced Cluster Management のバックアップおよび復元 Operator Helm チャートによって設定されたバージョンと一致するか、それを超えている必要があります。 -
OADP Operator と Velero Custom Resource Definition (CRD) は
cluster-scopedであるため、同じクラスター上に複数のバージョンを持つことはできません。open-cluster-management-backupnamespace とその他の namespace に同じバージョンをインストールする必要があります。 次のテンプレートを使用して、可用性を確認し、OADP のインストールを検証します。
-
oadp-operator-exists: このテンプレートを使用して、OADP Operator がopen-cluster-management-backupnamespace にインストールされているかどうかを確認します。 -
oadp-channel-validation: このテンプレートを使用して、open-cluster-management-backupnamespace の OADP Operator のバージョンが、Red Hat Advanced Cluster Management バックアップおよび復元 Operator によって設定されたバージョンと一致するか、それを超えていることを確認します。 -
custom-oadp-channel-validation: このテンプレートを使用して、他の namespace の OADP Operator がopen-cluster-management-backupnamespace のバージョンと一致するかどうかを確認します。
-
-
Pod の検証
以下のテンプレートは、Pod のステータスでバックアップコンポーネントおよび依存関係の有無を確認します。
-
acm-backup-pod-runningテンプレートは、バックアップおよび復元 Operator Pod が実行されているかどうかを確認します。 -
oadp-pod-runningテンプレートは、OADP Operator Pod が実行されているかどうかを確認します。 -
velero-pod-runningテンプレートは Velero Pod が実行されているかどうかを確認します。
-
Data Protection Application の検証
-
data-protection-application-availableテンプレートは、DataProtectioApplicatio.oadp.openshift.ioリソースが作成されるかどうかを確認します。この OADP リソースは Velero 設定をセットアップします。
-
バックアップストレージの検証
-
backup-storage-location-availableテンプレートは、BackupStorageLocation.velero.ioリソースが作成され、ステータス値がAvailableかどうかを確認します。これは、バックアップストレージへの接続が有効であることを意味します。
-
BackupSchedule競合検証acm-backup-clusters-collision-reportテンプレートは、BackupSchedule.cluster.open-cluster-management.ioが現在のハブクラスターに存在する場合に、ステータスがBackupCollisionではないことを検証します。これにより、バックアップデータをストレージの場所に書き込むときに、現在のハブクラスターが他のハブクラスターと競合していないことを確認できます。BackupCollisionの定義は、バックアップの競合の防止 を参照してください。
BackupScheduleおよび復元ステータスの検証-
acm-backup-phase-validationテンプレートは、BackupSchedule.cluster.open-cluster-management.ioが現在のクラスターに存在する場合に、ステータスがFailedでないこと、またはEmptyの状態であることを確認します。これにより、このクラスターがプライマリーハブクラスターであり、バックアップを生成している場合にBackupSchedule.cluster.open-cluster-management.ioステータスが正常であることが保証されます。 -
同じテンプレートは、
Restore.cluster.open-cluster-management.ioが現在のクラスターに存在する場合に、ステータスがFailedでないこと、またはEmptyの状態にないことを確認します。これにより、このクラスターがセカンダリーハブクラスターであり、バックアップを復元する場合に、Restore.cluster.open-cluster-management.ioのステータスが正常であることが保証されます。
-
バックアップの存在検証
-
acm-managed-clusters-schedule-backups-availableテンプレートは、BackupStorageLocation.velero.ioで指定された場所でBackup.velero.ioリソースが利用可能かどうかを確認し、バックアップがBackupSchedule.cluster.open-cluster-management.ioリソースによって作成されるかどうかを確認します。これにより、バックアップが少なくとも 1 回実行され、バックアップと復元 Operator が検証されます。
-
完了するためのバックアップ
-
acm-backup-in-progress-reportテンプレートは、Backup.velero.ioリソースがInProgress状態で停止していないか確認します。この検証が追加されるのは、多数のリソースがある場合、バックアップの実行中に velero Pod が再起動し、バックアップが完了せずに進行中のままになるためです。通常のバックアップ中、バックアップリソースは、実行中のどこかの時点で進行中になりますが、停止しているわけではなく、完了まで実行されます。スケジュールの実行中およびバックアップの進行中にacm-backup-in-progress-reportテンプレートが警告を報告するのは正常です。
-
バックアップスケジュールがプライマリーハブクラスターでバックアップを生成する
-
backup-schedule-cron-enabledポリシーテンプレートは、プライマリーハブクラスターが新しいバックアップを作成していないことをハブクラスター管理者に通知します。このポリシーは、BackupSchedule.cluster.open-cluster-management.ioリソースがプライマリーハブクラスターで無効になっているか、スケジュールされたバックアップを作成できないことを示しています。 -
BackupSchedulecron ジョブ定義で新しいバックアップが作成されると想定されており、プライマリーハブクラスターのバックアップスケジュールで新しいバックアップが生成されなかった場合、backup-schedule-cron-enabledポリシーテンプレートは違反になります。これは、BackupScheduleが存在しない、一時停止されている、またはBackupSchedulecron ジョブプロパティーが更新されてバックアップの実行時間が長くなった場合に発生する可能性があります。新しいバックアップセットが作成されるまで、テンプレートは違反状態になります。 テンプレートの検証は次のように機能します。
-
BackupSchedule.cluster.open-cluster-management.ioはアクティブに実行され、ストレージの場所に新しいバックアップを保存します。この検証はbackup-schedule-cron-enabledポリシーテンプレートによって行われます。テンプレートは、ストレージの場所にvelero.io/schedule-name: acm-validation-policy-scheduleラベルのついたBackup.velero.ioがあることを確認します。 -
acm-validation-policy-scheduleバックアップは、バックアップの cron スケジュールの時間を設定すると期限切れになるように設定されています。バックアップを作成するために実行されている cron ジョブがない場合には、古いacm-validation-policy-scheduleバックアップは期限切れになり、新しいバックアップが作成されないので削除されます。その結果、acm-validation-policy-scheduleバックアップが存在しない場合は、バックアップを生成するアクティブな cron ジョブは存在しません。
-
-
backup-restore-auto-import ポリシーには、次の制約を確認するテンプレートのセットが含まれています。
自動インポートのシークレット検証
-
auto-import-account-secretテンプレートは、ManagedServiceAccountシークレットがlocal-cluster以外のマネージドクラスターの namespace に作成されているかどうかを確認します。バックアップコントローラーにより、インポートされたマネージドクラスターが定期的にスキャンされます。マネージドクラスターが検出されるとすぐに、バックアップコントローラーはマネージドクラスターの namespace にManagedServiceAccountリソースを作成します。このプロセスにより、マネージドクラスター上でトークンの作成が開始されます。ただし、この操作の時点でマネージドクラスターにアクセスできない場合、ManagedServiceAccountはトークンを作成できません。たとえば、マネージドクラスターが休止状態の場合、トークンを作成できません。したがって、この期間中にハブのバックアップが実行されると、マネージドクラスターを自動インポートするためのトークンがバックアップに不足します。
-
自動インポートのバックアップラベル検証
-
auto-import-backup-labelテンプレートは、local-cluster以外のマネージドクラスターの namespace にManagedServiceAccountシークレットが存在することを検証します。このテンプレートがManagedServiceAccountシークレットを検出した場合、テンプレートはシークレットにcluster.open-cluster-management.io/backupラベルを適用します。このラベルは、Red Hat Advanced Cluster Management のバックアップにManagedServiceAccountシークレットを含める場合に重要です。
-
1.1.7.1. サーバー側の暗号化を使用したデータの保護 リンクのコピーリンクがクリップボードにコピーされました!
サーバー側の暗号化は、保存場所でデータを受信するアプリケーションまたはサービスのデータ暗号化です。バックアップメカニズム自体は、転送中 (バックアップストレージの場所との間を移動するとき) または保存中 (バックアップストレージの場所のディスクに保存されている間) にデータを暗号化しません。代わりに、オブジェクトおよびスナップショットシステムのネイティブメカニズムに依存しています。
ベストプラクティス: 使用可能なバックアップストレージのサーバー側の暗号化を使用して、宛先でデータを暗号化します。バックアップには、認証情報や設定ファイルなど、ハブクラスターの外部に保存するときに暗号化する必要があるリソースが含まれています。
serverSideEncryption パラメーターおよび kmsKeyId パラメーターを使用して、Amazon S3 に保存されているバックアップの暗号化を有効にすることができます。詳細は、バックアップストレージの場所の YAML を参照してください。次のサンプルは、DataProtectionApplication リソースを設定するときに AWS KMS キー ID を指定します。
他のストレージプロバイダーの設定可能なすべてのパラメーターは、Velero がサポートするストレージプロバイダー を参照してください。
1.1.7.2. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
- バックアップストレージの場所の YAML を参照してください。
- Velero のサポート対象ストレージプロバイダー を参照してください。
- バックアップまたは復元設定の検証 に戻ってください。
1.1.8. プライマリーハブクラスターがアクティブな状態での復元操作の実行 リンクのコピーリンクがクリップボードにコピーされました!
一般的な障害復旧の復元操作では、プライマリーハブクラスターは非アクティブであり、復元ハブクラスターとの競合は発生しません。復元操作中または復元操作後に元のハブクラスターをアクティブにしておく必要がある場合があります。たとえば、障害復旧シミュレーションテストを実行する場合は通常、これを実行する必要があります。
プライマリーハブクラスターがアクティブな間に新しいハブクラスターにデータを復元すると、両方のハブクラスターが同じクラスターフリートを管理しようとします。プライマリーハブクラスターがマネージドクラスターを制御する場合は、新しいハブクラスターに対して行ったポリシーまたはアプリケーションの変更がオーバーライドされる可能性があります。
プライマリーハブクラスターをアクティブなまま、新しいハブクラスターでハブデータを安全に復元するには、障害復旧テストを実行する前にプライマリーハブクラスターを設定します。以下のタスクを完了します。
1.1.8.1. プライマリーハブクラスターの準備 リンクのコピーリンクがクリップボードにコピーされました!
復元操作を実行してハブクラスターをアクティブにする前に、プライマリーハブクラスターを準備する必要があります。
プライマリーハブクラスターを準備するには、次の手順を実行します。
pausedプロパティーをtrueに設定して、BackupScheduleリソースを一時停止します。以下の例を参照してください。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記: - プライマリーハブクラスターでバックアップスケジュールを一時停止せずに次の手順に進んだ場合、
import.open-cluster-management.io/disable-auto-importアノテーションがリソースに設定されているときにバックアップを実行すると、このアノテーションが設定されたManagedClusterリソースのバックアップを作成する可能性があります。-
import.open-cluster-management.io/disable-auto-importアノテーションを使用してManagedClusterリソースをバックアップすると、新しいハブクラスターでバックアップデータを復元するときに、マネージドクラスターは自動的にインポートできません。
-
プライマリーハブクラスターリソースにバックアップアノテーションのタグを付けます。以下の手順を実行します。
-
restore-acm.yamlという名前のファイルを作成します。 以下の内容をファイルに追加します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行してファイルを適用し、復元操作を実行します。
oc -f apply restore-acm.yaml
oc -f apply restore-acm.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記:
Restoreリソースを実行すると、BackupScheduleを有効にした場合にバックアップされるすべてのハブクラスターリソースにタグが付けられます。リソースには、velero.io/backup-name: backupNameラベルがタグ付けされます。ここで、backupNameはプライマリーハブクラスターによって作成された最新のバックアップの名前に置き換えます。その結果、
cleanupBeforeRestoreオプションがCleanupRestoredに設定されたRestoreリソースを使用してプライマリークラスターで実行される復元操作は、これらのリソースを処理して、最新のバックアップに含まれない場合はすべてのリソースを削除します。
-
マネージドクラスターの自動インポートを無効にします。
-
復元ハブクラスターに移動するすべてのマネージドクラスターの
ManagedClusterグローバルリソースに次のアノテーションを設定します。アノテーションを設定すると、マネージドクラスターが復元ハブクラスターに移動した後、バックアップハブクラスターがマネージドクラスターを回復できなくなります。
annotations: import.open-cluster-management.io/disable-auto-import: ''
annotations: import.open-cluster-management.io/disable-auto-import: ''Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
復元ハブクラスターに移動するすべてのマネージドクラスターの
1.1.8.2. 新しいハブクラスターでの復元操作 リンクのコピーリンクがクリップボードにコピーされました!
プライマリーハブクラスターを準備したら、新しいハブクラスターで復元操作を実行し、マネージドクラスターを移動します。バックアップハブクラスターで自動インポート機能が無効になっているため、マネージドクラスターは新しいハブクラスターに接続され、最初のハブクラスターに戻りません。
次の手順を実行して、新しいハブクラスターで復元操作を実行します。
restore-acm.yamlファイルに次の内容を追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記:
veleroManagedClustersBackupNameをlatestに設定すると、マネージドクラスターが復元され、セカンダリーハブクラスターに接続されます。次のコマンドを実行してファイルを適用し、復元操作を実行します。
oc -f apply restore-acm.yaml
oc -f apply restore-acm.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.1.8.3. バックアップハブクラスター上のマネージドクラスターリソースのクリーンアップ リンクのコピーリンクがクリップボードにコピーされました!
復元後、マネージドクラスターが新しいハブクラスターに正常に接続したら、初期バックアップハブクラスターからマネージドクラスターリソースを消去します。リカバリーテストが完了した後にそのデータをバックアップに復元する場合は、リソースのクリーンアップをスキップしてください。
バックアップハブクラスターからマネージドクラスターをクリーンアップするには、次の手順を実行します。
-
ManagedClusterグローバルリソースを削除する前に、プライマリーハブでマネージドクラスターのステータスがUnknownであることを確認してください。ステータスがUnknownでない場合、ワークロードはマネージドクラスターからアンインストールされます。 -
ManagedClusterグローバルリソースを削除するかどうかを決定します。これを行うと、マネージドクラスターの namespace が削除されます。 -
復元操作を使用して新しいハブクラスターに移動した各マネージドクラスターのバックアップハブクラスターから
ManagedClusterグローバルリソースを削除します。
重要:
-
ManagedClusterグローバルリソースを削除する前に、プライマリーハブでマネージドクラスターのステータスがUnknownであることを確認してください。ステータスがUnknownでない場合、ワークロードはマネージドクラスターからアンインストールされます。 -
ManagedClusterグローバルリソースを削除すると、マネージドクラスターの namespace も削除されます。
1.1.9. 高度な設定のバックアップと復元 リンクのコピーリンクがクリップボードにコピーされました!
次のセクションを参照して、バックアップと復元をさらに詳細に設定できます。
1.1.9.1. リソース要求および制限のカスタマイズ リンクのコピーリンクがクリップボードにコピーされました!
Velero の初回インストール時に、Velero Pod は以下のサンプルで定義されるデフォルトの CPU およびメモリー制限に設定されます。
前のサンプルの制限は一部のシナリオでうまく機能しますが、クラスターが多数のリソースをバックアップする場合には更新する必要がある場合があります。たとえば、2000 個のクラスターを管理するハブクラスターでバックアップを実行すると、メモリー不足 (OOM) エラーが原因で、Velero Pod が失敗します。以下の設定では、このシナリオでバックアップを完了できます。
Velero Pod リソースの制限および要求を更新するには、DataProtectionApplication リソースを更新し、Velero Pod の resourceAllocation テンプレートを挿入する必要があります。以下のサンプルを参照してください。
1.1.9.2. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
-
DataProtectionApplicationパラメーターの詳細は、Red Hat OpenShift Container Platform ドキュメントの デフォルトの Velero クラウドプロバイダーのプラグイン トピックを参照してください。 - クラスターの使用状況に基づくバックアップおよび復元の CPU およびメモリー要件の詳細は、OpenShift Container Platform ドキュメントの 設定に必要な CPU とメモリー トピックを参照してください。
1.1.10. 既存のハブクラスターを復元ハブクラスターとして使用するシナリオ リンクのコピーリンクがクリップボードにコピーされました!
復元操作の前に、以前作成したリソースを含む既存のハブクラスターを復元ハブクラスターとして使用する場合は、次のシナリオを検討してください。
- 復元プロセス中に、既存のマネージドクラスターがデタッチされる可能性があります。
- 復元ハブクラスターには、バックアップハブクラスターよりも多くのリソースが存在する可能性があります。
1.1.10.1. 既存のマネージドクラスターが復元プロセス中にデタッチされる リンクのコピーリンクがクリップボードにコピーされました!
復元操作に使用する予定のハブクラスターがすでにクラスターを管理しており、cleanupBeforeRestore オプションを CleanupRestored に設定して復元操作を実行すると、次の結果になることが予想されます。
-
ManagedClusterリソースが復元されたバックアップによって作成された場合、リソースにはvelero.io/backup-name: backupNameラベルアノテーションが設定されます。ユーザーが復元操作を実行し、cleanupBeforeRestore=CleanupRestoredオプションを使用すると、マネージドクラスターはハブクラスターからデタッチされ、これらのマネージドクラスター上のワークロードがクリーンアップされます。 -
ユーザーが
ManagedClusterリソースを作成した場合、リソースにvelero.io/backup-name: backupNameラベルアノテーションは設定されません。復元操作を実行し、cleanupBeforeRestore=CleanupRestoredオプションを使用すると、リソースが復元された現行バックアップの一部でない場合でも、マネージドクラスターリソースはクリーンアップされません。
1.1.10.2. 復元ハブクラスターには、バックアップハブクラスターよりも多くのリソースがある リンクのコピーリンクがクリップボードにコピーされました!
ユーザーが作成したデータを含むハブクラスターでデータを復元する場合に、復元操作の cleanupBeforeRestore オプションが CleanupRestored に設定されていれば、そのデータはクリーンアップされません。これは、データが以前の復元ではなくユーザーによって作成されたためです。
ユーザーが作成したリソースがクリーンアップされない場合でも、既存のハブクラスターを、復元ハブクラスター設定用として引き続き使用できます。バックアップと復元のハブクラスター内のコンテンツを相互に一致させることができます。リソースに cluster.open-cluster-management.io/backup ラベルのタグを付けると、ユーザーが作成したすべてのリソースが、以前の復元操作によって生成されたかのように同じように表示されます。
リソースにタグを付ける方法については、ユーザーリソースにバックアップラベルをタグ付けする を完了して詳細を確認してください。
1.1.11. ユーザーリソースにバックアップラベルをタグ付けする リンクのコピーリンクがクリップボードにコピーされました!
既存のハブクラスターを復元ハブクラスター設定に使用する場合は、ハブクラスターに含めるユーザー作成リソースを決定し、そのリソースに velero.io/backup-name: backupName ラベルのタグを付けます。これらのリソースに Velero アノテーションのタグを付けると、リソースが以前の復元によって生成されたように見えます。
Velero アノテーションのため、ハブ復元操作を実行し、復元リソースで cleanupBeforeRestore オプションを CleanupRestored に設定すると、現在復元されたバックアップの一部ではないユーザーリソースがクリーンアップされます。その結果、既存のクラスターでハブデータを復元し、最初のハブと同じクラスターを作成できます。
1.1.11.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- 復元操作の前に作成したリソースを使用して、既存のハブクラスターを復元ハブクラスターとして使用するシナリオを確認します。既存のハブクラスターを復元ハブクラスターとして使用するシナリオ を参照してください。
-
復元ハブクラスターで、
DataProtectionApplicationリソースを更新し、ストレージの場所を新しい一時的な場所に設定する。復元ハブクラスターリソースにタグを付けるために使用されるバックアップを、バックアップハブクラスターと同じストレージの場所に作成しないでください。 - リソースにタグを付ける前に、ストレージの場所をバックアップハブクラスターとは別の場所に設定してください。
1.1.11.2. velero ラベルの付いたリソースのタグ付け リンクのコピーリンクがクリップボードにコピーされました!
復元ハブクラスター上のユーザーが作成したリソースに velero.io/backup-name: backupName ラベルのタグを付けるには、復元ハブクラスターで次の手順を実行します。
次の YAML を使用して、これらすべてのハブクラスターリソースを含むバックアップを生成する
BackupScheduleリソースを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
BackupScheduleによってハブクラスターバックアップリソースが作成され、リソースのステータスがCompletedになっていることを確認します。 schedule-acm-msa BackupScheduleでpaused=trueプロパティーを設定して、BackupScheduleスケジュールを一時停止し、バックアップの生成を停止します。注意:
BackupScheduleが有効になっている場合、ハブクラスターで復元操作を実行することはできません。次の YAML を使用して復元操作を実行します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Operator は、ハブクラスターバックアップに含まれる各リソースを調べ、velero.io/backup-name: backupName のタグを付けます。ここで、backupName は最新のバックアップの名前です。
リソースにタグを付けた後、ハブクラスターを復元クラスターとして使用できます。DataProtectionApplication の保存場所を更新してバックアップハブクラスターの保存場所を参照するようにすることで、プライマリーハブクラスターからデータを復元できるようになり、ハブクラスターのバックアップリソースを使用する復元操作を実行できるようになりました。
すべての復元ハブクラスターリソースには velero.io/backup-name label のタグが付いているため、ハブクラスターは以前の復元によって生成されたものとして表示されます。したがって、cleanupBeforeRestore オプションを CleanupRestored に設定して既存のハブクラスターで実行する復元操作では、復元されたバックアップに含まれないデータが消去されます。
重要:
-
以前の復元操作によって作成された復元ハブクラスター上に、復元されたバックアップに含まれないマネージドクラスターがある場合は、
cleanupBeforeRestoreオプションをCleanupRestoredに設定して復元操作を使用しないでください。そうしないと、復元ハブクラスター上のマネージドクラスターがハブクラスターからデタッチされ、マネージドクラスターのリソースが削除されます。 復元ハブクラスターのリソースがバックアップハブクラスターのリソースよりも多い場合、次の状況では既存のハブクラスターを復元ハブクラスターとして使用できます。
- この復元ハブクラスターにはマネージドクラスターがない。
- 復元ハブクラスターにはマネージドクラスターがあり、復元ハブクラスターのユーザーデータが、復元されたバックアップで使用可能なデータと同じであると必要はない。
- 復元ハブクラスターのマネージドクラスターの名前は、バックアップハブクラスターのマネージドクラスターの名前と競合しない。
1.1.12. 最初のハブクラスターへのデータの復元 リンクのコピーリンクがクリップボードにコピーされました!
ハブクラスターの障害復旧シミュレーションを実行した後、データを最初のハブクラスターに復元し、それをプライマリーハブクラスターとして使用できます。
障害復旧操作テストを実施するときは、プライマリーハブクラスターの障害をシミュレートし、そのデータを新しいハブクラスターに復元して、バックアップと復元のプロセスが機能することを確認します。障害復旧テストのシミュレーションが完了したら、プライマリーハブクラスターに戻り、それをクラスターフリートを管理するアクティブハブクラスターにします。
障害復旧シミュレーションを実行した後、データを最初のハブクラスターに復元するには、次のセクションを完了します。
1.1.12.1. プライマリーハブクラスターの準備 リンクのコピーリンクがクリップボードにコピーされました!
復元プロセス中にプライマリーハブクラスターがアクティブな状態を維持するように準備するには、プライマリーハブクラスターがアクティブな状態での復元操作の実行 というタスクを完了します。
1.1.12.2. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
復元操作のためにバックアップハブクラスターを準備して復元を実行するには、復元プロセス中にプライマリーハブクラスターをアクティブに保つ ドキュメントの内容を完了します。
1.1.12.3. 新しいハブクラスターをアクティブハブクラスターにする リンクのコピーリンクがクリップボードにコピーされました!
シミュレーションを開始するには、次の手順を実行して、新しいハブクラスターをアクティブハブクラスターにする必要があります。
- 新しいハブクラスターで復元操作を実行して、アクティブなハブクラスターにします。
- マネージドクラスターが新しいハブクラスターに接続されていることを確認するには、クラスターコンソールからマネージドクラスターのステータスを確認します。
- 新しいハブクラスターで障害復旧シミュレーションテストを実行します。
1.1.12.4. プライマリーハブクラスターに戻る リンクのコピーリンクがクリップボードにコピーされました!
障害復旧テストが終了したら、次の手順を実行してプライマリーハブクラスターに戻り、クラスターフリートを管理するアクティブハブクラスターにします。
次のリソースを適用して、復元ハブクラスターにバックアップを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
Red Hat Advanced Cluster Management バックアップが生成され、そのステータスが
Completedになっていることを確認します。 -
schedule-acm-msa BackupScheduleリソースでpaused=trueプロパティーを設定してバックアップスケジュールを一時停止します。 -
プライマリーハブクラスターに戻された
ManagedClusterリソースが最初のハブクラスターに接続されないようにするには、すべてのManagedClusterリソースにimport.open-cluster-management.io/disable-auto-import: ''アノテーションを追加します。 次の復元リソースを適用して、セカンダリーハブクラスターバックアップからすべてのリソースを復元します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記:
cleanupBeforeRestoreプロパティーをCleanupRestoredに設定すると、すべてのリソースが復元された後にクリーンアップ操作が実行されます。このクリーンアップ操作により、復元されたバックアップに含まれないハブリソースがすべて削除されます。
1.1.12.5. プライマリーハブクラスターでバックアップスケジュールを有効にする リンクのコピーリンクがクリップボードにコピーされました!
これで最初のハブクラスターが再びプライマリーハブクラスターになりました。次に以下の手順を実行して、プライマリーハブクラスターでバックアップスケジュールを有効にします。
- プライマリーハブクラスターに移動します。
次の
BackupScheduleリソースを適用します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記: 2 番目のハブクラスターは、
active-passive設定のセカンダリーハブクラスターとして再度使用できます。
1.2. VolSync の永続ボリューム複製サービス リンクのコピーリンクがクリップボードにコピーされました!
VolSync は、レプリケーションの互換性がないストレージタイプが指定されたクラスター全体、または 1 つのクラスター内の永続ボリュームの非同期レプリケーションを有効にする Kubernetes Operator です。これは Container Storage Interface (CSI) を使用して互換性の制限を解消します。VolSync Operator を環境にデプロイした後、それを活用して永続データのコピーを作成および保守できます。VolSync は、サポートされているバージョンの Red Hat OpenShift Container Platform クラスターでのみ永続ボリューム要求を複製できます。
重要: VolSync は、Filesystem の volumeMode を使用した永続ボリューム要求の複製のみをサポートします。volumeMode を選択しない場合、デフォルトで Filesystem になります。
1.2.1. VolSync を使用した永続ボリュームの複製 リンクのコピーリンクがクリップボードにコピーされました!
サポート対象の 3 つの方法を使用して、VolSync で永続ボリュームを複製できます。これは、rsync、rsync-tls、restic、または Rclone などの所有する同期ロケーションの数により異なります。
1.2.1.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
クラスターに VolSync をインストールする前に、以下の要件が必要です。
- サポートされている Red Hat Advanced Cluster Management ハブクラスター上に設定された Red Hat OpenShift Container Platform 環境
- 同じ Red Hat Advanced Cluster Management ハブクラスターに対して 2 つ以上のマネージドクラスター
-
VolSync で設定しているクラスター間のネットワーク接続。クラスターが同じネットワーク上にない場合は、Submariner マルチクラスターネットワーキングおよびサービスディスカバリー を設定し、
ServiceTypeのClusterIP値を使用してクラスターをネットワークで接続するか、ServiceTypeのLoadBalancer値を持つロードバランサーを使用することができます。 - ソース永続ボリュームに使用するストレージドライバーは、CSI 互換であり、スナップショットをサポートできる必要があります。
1.2.1.2. マネージドクラスターへの VolSync のインストール リンクのコピーリンクがクリップボードにコピーされました!
VolSync が 1 つのクラスターの永続ボリューム要求を別のクラスターの永続ボリューム要求に複製できるようにするには、ソースとターゲットの両方のマネージドクラスターに VolSync をインストールする必要があります。
VolSync は独自の namespace を作成しないため、他の OpenShift Container Platform のすべての namespace Operator と同じ namespace にあります。VolSync の Operator 設定に加えた変更は、チャネル更新の手動承認に変更した場合など、同じ namespace 内の他の Operator にも影響します。
2 つの方法のいずれかを使用して、環境内の 2 つのクラスターに VolSync をインストールできます。次のセクションで説明するように、ハブクラスター内の各マネージドクラスターにラベルを追加するか、ManagedClusterAddOn を手動で作成して適用することができます。
1.2.1.2.1. ラベルを使用した VolSync のインストール リンクのコピーリンクがクリップボードにコピーされました!
ラベルを追加して、マネージドクラスターに VolSync をインストールします。
Red Hat Advanced Cluster Management コンソールから以下のステップを実行します。
-
詳細を表示するには、ハブクラスターコンソールの
Clustersページからマネージドクラスターの 1 つを選択します。 Labels フィールドに、次のラベルを追加します。
addons.open-cluster-management.io/volsync=true
addons.open-cluster-management.io/volsync=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow VolSync サービス Pod はマネージドクラスターにインストールされます。
- 他のマネージドクラスターに同じラベルを追加します。
各マネージドクラスターで次のコマンドを実行して、VolSync Operator がインストールされていることを確認します。
oc get csv -n openshift-operators
oc get csv -n openshift-operatorsCopy to Clipboard Copied! Toggle word wrap Toggle overflow インストール時に VolSync の Operator がリストされています。
-
詳細を表示するには、ハブクラスターコンソールの
コマンドラインインターフェイスから次の手順を実行します。
- ハブクラスターでコマンドラインセッションを開始します。
次のコマンドを入力して、最初のクラスターにラベルを追加します。
oc label managedcluster <managed-cluster-1> "addons.open-cluster-management.io/volsync"="true"
oc label managedcluster <managed-cluster-1> "addons.open-cluster-management.io/volsync"="true"Copy to Clipboard Copied! Toggle word wrap Toggle overflow managed-cluster-1をマネージドクラスターの 1 つの名前に置き換えます。次のコマンドを入力して、ラベルを 2 番目のクラスターに追加します。
oc label managedcluster <managed-cluster-2> "addons.open-cluster-management.io/volsync"="true"
oc label managedcluster <managed-cluster-2> "addons.open-cluster-management.io/volsync"="true"Copy to Clipboard Copied! Toggle word wrap Toggle overflow managed-cluster-2を他のマネージドクラスターの名前に置き換えます。ManagedClusterAddOnリソースは、対応する各マネージドクラスターの namespace 内のハブクラスターに自動的に作成される必要があります。
1.2.1.2.2. ManagedClusterAddOn を使用した VolSync のインストール リンクのコピーリンクがクリップボードにコピーされました!
ManagedClusterAddOn を手動で追加して VolSync をマネージドクラスターにインストールするには、次の手順を実行します。
ハブクラスターで、次の例のようなコンテンツを含む
volsync-mcao.yamlという YAML ファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow managed-cluster-1-namespaceを、マネージドクラスターの 1 つの namespace に置き換えます。この namespace は、マネージドクラスターの名前と同じです。注: 名前は
volsyncである必要があります。次の例のようなコマンドを入力して、ファイルを設定に適用します。
oc apply -f volsync-mcao.yaml
oc apply -f volsync-mcao.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 他のマネージドクラスターに対して手順を繰り返します。
ManagedClusterAddOnリソースは、対応する各マネージドクラスターの namespace 内のハブクラスターに自動的に作成される必要があります。
1.2.1.2.3. VolSync の ManagedClusterAddOn の更新 リンクのコピーリンクがクリップボードにコピーされました!
使用している Red Hat Advanced Cluster Management のバージョンによっては、VolSync のバージョンを更新する必要がある場合があります。VolSync の ManagedClusterAddOn リソースを更新するには、次の手順を実行します。
次のアノテーションを
ManagedClusterAddOnリソースに追加します。annotations: operator-subscription-channel: stable-0.9annotations: operator-subscription-channel: stable-0.9Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
VolySync のデプロイ元となる
operator-subscription-channelを定義します。 -
ManagedClusterAddOnリソースに移動し、選択したoperator-subscription-channelが含まれていることを確認して、Volsync バージョンが更新されたことを確認します。
1.2.1.3. Rsync-TLS レプリケーションの設定 リンクのコピーリンクがクリップボードにコピーされました!
Rsync-TLS レプリケーションを使用して、永続ボリュームの 1:1 非同期レプリケーションを作成できます。Rsync-TLS ベースのレプリケーションを災害復旧やリモートサイトへのデータ送信に使用できます。Rsync-TLS を使用する場合、VolSync は、stunnel によって提供される TLS で保護されたトンネル全体で Rsync を使用してデータを同期します。詳細は stunnel のドキュメント を参照してください。
次の例は、Rsync-TLS メソッドを使用して設定する方法を示しています。Rsync-TLS の追加情報は、VolSync ドキュメントの Usage を参照してください。
1.2.1.3.1. マネージドクラスター全体での Rsync-TLS レプリケーションの設定 リンクのコピーリンクがクリップボードにコピーされました!
Rsync-TLS ベースのレプリケーションの場合、ソースクラスターと宛先クラスターでカスタムリソースを設定します。カスタムリソースは、address 値を使用して送信元を宛先に接続し、stunnel によって提供される TLS で保護されたトンネルを使用して、転送されたデータがセキュアであることを確認します。
Rsync-TLS レプリケーションを、source-ns namespace の source クラスターの永続ボリュームクレームから destination-ns namespace の destination クラスターの永続ボリュームクレームに設定するには、次の情報と例を参照してください。必要に応じて値を置き換えます。
宛先クラスターを設定します。
宛先クラスターで次のコマンドを実行して、ネームスペースを作成します。
oc create ns <destination-ns>
oc create ns <destination-ns>Copy to Clipboard Copied! Toggle word wrap Toggle overflow destination-nsをレプリケーション先が配置されている namespace に置き換えます。replication_destinationという名前の新しい YAML ファイルを作成し、次の内容をコピーします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- この例では、
LoadBalancerのServiceType値が使用されます。ロードバランサーサービスはソースクラスターによって作成され、ソースマネージドクラスターが別の宛先マネージドクラスターに情報を転送できるようにします。ソースと宛先が同じクラスター上にある場合、または Submariner ネットワークサービスが設定されている場合は、サービスタイプとしてClusterIPを使用できます。ソースクラスターを設定するときに参照するシークレットのアドレスと名前に注意してください。capacityの値が、レプリケートされている永続ボリューム要求の容量と一致していることを確認してください。 - 2
capacity値が、レプリケートされている永続ボリューム要求の容量と一致していることを確認してください。
任意: 環境のデフォルト値とは異なるストレージクラス名とボリュームスナップショットクラス名を使用している場合は、
storageClassNameパラメーターとvolumeSnapshotClassNameパラメーターの値を指定します。宛先クラスターで以下のコマンドを実行し、
replicationdestinationリソースを作成します。oc create -n <destination-ns> -f replication_destination.yaml
oc create -n <destination-ns> -f replication_destination.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow destination-nsは、宛先の namespace の名前に置き換えます。replicationdestinationリソースが作成されると、以下のパラメーターおよび値がリソースに追加されます。Expand パラメーター 値 .status.rsyncTLS.address送信元クラスターと宛先クラスターが通信できるようにするために使用される宛先クラスターの IP アドレス。
.status.rsyncTLS.keySecretソースクラスターとの接続を認証する TLS キーを含むシークレットの名前。
以下のコマンドを実行して、ソースクラスターで使用する
.status.rsyncTLS.addressの値をコピーします。destinationは、レプリケーション先のカスタムリソースの名前に置き換えます。destination-nsは、宛先の namespace の名前に置き換えます。ADDRESS=`oc get replicationdestination <destination> -n <destination-ns> --template={{.status.rsyncTLS.address}}` echo $ADDRESSADDRESS=`oc get replicationdestination <destination> -n <destination-ns> --template={{.status.rsyncTLS.address}}` echo $ADDRESSCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力は次のようになります。これは Amazon Web Services 環境のものです。
a831264645yhrjrjyer6f9e4a02eb2-5592c0b3d94dd376.elb.us-east-1.amazonaws.com
a831264645yhrjrjyer6f9e4a02eb2-5592c0b3d94dd376.elb.us-east-1.amazonaws.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、シークレットの名前をコピーします。
KEYSECRET=`oc get replicationdestination <destination> -n <destination-ns> --template={{.status.rsyncTLS.keySecret}}` echo $KEYSECRETKEYSECRET=`oc get replicationdestination <destination> -n <destination-ns> --template={{.status.rsyncTLS.keySecret}}` echo $KEYSECRETCopy to Clipboard Copied! Toggle word wrap Toggle overflow destinationは、レプリケーション先のカスタムリソースの名前に置き換えます。destination-nsは、宛先の namespace の名前に置き換えます。ソースの設定時に、ソースクラスターで入力する必要があります。出力は、SSH キーシークレットファイルの名前である必要があります。これは、次の名前のようになります。
volsync-rsync-tls-destination-name
volsync-rsync-tls-destination-nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow 宛先クラスター宛先クラスターに対して次のコマンドを入力して、宛先クラスターからキーシークレットをコピーします。
oc get secret -n <destination-ns> $KEYSECRET -o yaml > /tmp/secret.yaml
oc get secret -n <destination-ns> $KEYSECRET -o yaml > /tmp/secret.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow destination-nsをレプリケーション先が配置されている namespace に置き換えます。以下のコマンドを入力して、
viエディターでシークレットファイルを開きます。vi /tmp/secret.yaml
vi /tmp/secret.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 宛先クラスターのオープンシークレットファイルで、次の変更を行います。
-
namespace をソースクラスターの namespace に変更します。この例では、
source-nsです。 -
所有者の参照を削除します (
.metadata.ownerReferences)。
-
namespace をソースクラスターの namespace に変更します。この例では、
ソースクラスターで、ソースクラスターで次のコマンドを入力してシークレットファイルを作成します。
oc create -f /tmp/secret.yaml
oc create -f /tmp/secret.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
複製するソース永続ボリュームクレームを特定します。
注記: ソース永続ボリューム要求は CSI ストレージクラスにある必要があります。
ReplicationSourceアイテムを作成します。ソースクラスター上に
replication_sourceという名前の新しい YAML ファイルを作成し、次の内容をコピーします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
sourceは、レプリケーションソースカスタムリソースの名前に置き換えます。これを自動的に置き換える方法は、この手順のステップ 3-vi を参照してください。- 2
source-nsをソースが置かれている永続ボリューム要求の namespace に置き換えます。これを自動的に置き換える方法は、この手順のステップ 3-vi を参照してください。- 3
persistent_volume_claimは、ソース永続ボリューム要求の名前に置き換えます。- 4
mykeysecretを宛先クラスターからソースクラスターにコピーしたシークレットの名前 ($KEYSECRETの値) に置き換えます。- 5
my.host.comは、設定時にReplicationDestinationの.status.rsyncTLS.addressフィールドからコピーしたホストアドレスに置き換えます。sedコマンドの例は次のステップで見つけることができます。
ストレージドライバーがクローン作成をサポートする場合は、
copyMethodの値にCloneを使用すると、レプリケーションのより効率的なプロセスになる可能性があります。任意: 環境のデフォルト値とは異なるストレージクラス名とボリュームスナップショットクラス名を使用している場合は、
storageClassNameパラメーターとvolumeSnapshotClassNameパラメーターの値を指定します。永続ボリュームの同期方法を設定できるようになりました。
ソースクラスターで、以下のコマンドを入力して
ReplicationSourceオブジェクトのaddressおよびkeySecretの値を、宛先クラスターから書き留めた値に置き換えてreplication_source.yamlファイルを変更します。sed -i "s/<my.host.com>/$ADDRESS/g" replication_source.yaml sed -i "s/<mykeysecret>/$KEYSECRET/g" replication_source.yaml oc create -n <source> -f replication_source.yaml
sed -i "s/<my.host.com>/$ADDRESS/g" replication_source.yaml sed -i "s/<mykeysecret>/$KEYSECRET/g" replication_source.yaml oc create -n <source> -f replication_source.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow my.host.comは、設定時にReplicationDestinationの.status.rsyncTLS.addressフィールドからコピーしたホストアドレスに置き換えます。keySecretを設定時にReplicationDestinationの.status.rsyncTLS.keySecretフィールドからコピーしたキーに置き換えます。sourceを、ソースが置かれている永続ボリューム要求の名前に置き換えます。注記: 複製する永続ボリューム要求と同じ namespace にファイルを作成する必要があります。
ReplicationSourceオブジェクトで以下のコマンドを実行して、レプリケーションが完了したことを確認します。oc describe ReplicationSource -n <source-ns> <source>
oc describe ReplicationSource -n <source-ns> <source>Copy to Clipboard Copied! Toggle word wrap Toggle overflow source-nsをソースが置かれている永続ボリューム要求の namespace に置き換えます。sourceは、レプリケーションソースのカスタムリソースの名前に置き換えます。レプリケーションが成功した場合、出力は次の例のようになります。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Last Sync Timeに時間がリストされていない場合は、レプリケーションが完了していません。
元の永続ボリュームのレプリカがあります。
1.2.1.4. Rsync レプリケーションの設定 リンクのコピーリンクがクリップボードにコピーされました!
重要: セキュリティーを強化するには、Rsync の代わりに Rsync-TLS を使用してください。Rsync-TLS を使用すると、永続ボリュームのレプリケーションに必要のない昇格されたユーザー権限の使用を回避できます。
Rsync レプリケーションを使用して、永続ボリュームの 1:1 非同期レプリケーションを作成できます。Rsync ベースのレプリケーションを災害復旧やリモートサイトへのデータ送信に使用できます。
次の例は、Rsync メソッドを使用して設定する方法を示しています。
1.2.1.4.1. マネージドクラスター間での Rsync レプリケーションの設定 リンクのコピーリンクがクリップボードにコピーされました!
Rsync ベースのレプリケーションの場合は、ソースクラスターおよび宛先クラスターでカスタムリソースを設定します。カスタムリソースは、address 値を使用してソースを宛先に接続し、sshKeys を使用して転送されたデータがセキュアであることを確認します。
注記: address および sshKeys の値を宛先からソースにコピーし、ソースを設定する前に宛先を設定する必要があります。
この例では、source-ns namespace の source クラスターの永続ボリューム要求から destination-ns namespace の destination クラスターの永続ボリューム要求に Rsync レプリケーションを設定する手順を説明します。必要に応じて、これらの値を他の値に置き換えることができます。
宛先クラスターを設定します。
宛先クラスターで次のコマンドを実行して、ネームスペースを作成します。
oc create ns <destination-ns>
oc create ns <destination-ns>Copy to Clipboard Copied! Toggle word wrap Toggle overflow destination-nsを、オンサイトのボリューム要求ごとに宛先が含まれる namespace の名前に置き換えます。以下の YAML コンテンツをコピーし、
replication_destination.yamlという名前の新規ファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記:
capacityの値は、レプリケートされる永続ボリューム要求の容量と一致する必要があります。destinationは、宛先 CR の名前に置き換えます。destination-nsは、宛先の namespace の名前に置き換えます。この例では、
LoadBalancerのServiceType値が使用されます。ロードバランサーサービスはソースクラスターによって作成され、ソースマネージドクラスターが別の宛先マネージドクラスターに情報を転送できるようにします。ソースと宛先が同じクラスター上にある場合、または Submariner ネットワークサービスが設定されている場合は、サービスタイプとしてClusterIPを使用できます。ソースクラスターを設定するときに参照するシークレットのアドレスと名前をメモします。storageClassNameおよびvolumeSnapshotClassNameは任意のパラメーターです。特に、環境のデフォルト値とは異なるストレージクラスおよびボリュームスナップショットクラス名を使用している場合は、環境の値を指定してください。宛先クラスターで以下のコマンドを実行し、
replicationdestinationリソースを作成します。oc create -n <destination-ns> -f replication_destination.yaml
oc create -n <destination-ns> -f replication_destination.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow destination-nsは、宛先の namespace の名前に置き換えます。replicationdestinationリソースが作成されると、以下のパラメーターおよび値がリソースに追加されます。Expand パラメーター 値 .status.rsync.address送信元クラスターと宛先クラスターが通信できるようにするために使用される宛先クラスターの IP アドレス。
.status.rsync.sshKeysソースクラスターから宛先クラスターへのセキュアなデータ転送を可能にする SSH キーファイルの名前。
以下のコマンドを実行して、ソースクラスターで使用する
.status.rsync.addressの値をコピーします。ADDRESS=`oc get replicationdestination <destination> -n <destination-ns> --template={{.status.rsync.address}}` echo $ADDRESSADDRESS=`oc get replicationdestination <destination> -n <destination-ns> --template={{.status.rsync.address}}` echo $ADDRESSCopy to Clipboard Copied! Toggle word wrap Toggle overflow destinationは、レプリケーション先のカスタムリソースの名前に置き換えます。destination-nsは、宛先の namespace の名前に置き換えます。出力は、Amazon Web Services 環境の次の出力のように表示されます。
a831264645yhrjrjyer6f9e4a02eb2-5592c0b3d94dd376.elb.us-east-1.amazonaws.com
a831264645yhrjrjyer6f9e4a02eb2-5592c0b3d94dd376.elb.us-east-1.amazonaws.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、シークレットの名前をコピーします。
SSHKEYS=`oc get replicationdestination <destination> -n <destination-ns> --template={{.status.rsync.sshKeys}}` echo $SSHKEYSSSHKEYS=`oc get replicationdestination <destination> -n <destination-ns> --template={{.status.rsync.sshKeys}}` echo $SSHKEYSCopy to Clipboard Copied! Toggle word wrap Toggle overflow destinationは、レプリケーション先のカスタムリソースの名前に置き換えます。destination-nsは、宛先の namespace の名前に置き換えます。ソースの設定時に、ソースクラスターで入力する必要があります。出力は、SSH キーシークレットファイルの名前である必要があります。これは、次の名前のようになります。
volsync-rsync-dst-src-destination-name
volsync-rsync-dst-src-destination-nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow 宛先クラスターに対して次のコマンドを入力して、宛先クラスターから SSH シークレットをコピーします。
oc get secret -n <destination-ns> $SSHKEYS -o yaml > /tmp/secret.yaml
oc get secret -n <destination-ns> $SSHKEYS -o yaml > /tmp/secret.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow destination-nsを、宛先が置かれている永続ボリューム要求の namespace に置き換えます。以下のコマンドを入力して、
viエディターでシークレットファイルを開きます。vi /tmp/secret.yaml
vi /tmp/secret.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 宛先クラスターのオープンシークレットファイルで、次の変更を行います。
-
namespace をソースクラスターの namespace に変更します。この例では、
source-nsです。 -
所有者の参照を削除します (
.metadata.ownerReferences)。
-
namespace をソースクラスターの namespace に変更します。この例では、
ソースクラスターで、ソースクラスターで次のコマンドを入力してシークレットファイルを作成します。
oc create -f /tmp/secret.yaml
oc create -f /tmp/secret.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
複製するソース永続ボリュームクレームを特定します。
注記: ソース永続ボリューム要求は CSI ストレージクラスにある必要があります。
ReplicationSourceアイテムを作成します。以下の YAML コンテンツをコピーして、ソースクラスターに
replication_source.yamlという名前の新規ファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow sourceは、レプリケーションソースカスタムリソースの名前に置き換えます。これを自動的に置き換える方法は、この手順のステップ 3-vi を参照してください。source-nsをソースが置かれている永続ボリューム要求の namespace に置き換えます。これを自動的に置き換える方法は、この手順のステップ 3-vi を参照してください。persistent_volume_claimは、ソース永続ボリューム要求の名前に置き換えます。mysshkeysは、設定時にReplicationDestinationの.status.rsync.sshKeysフィールドからコピーしたキーに置き換えます。my.host.comは、設定時にReplicationDestinationの.status.rsync.addressフィールドからコピーしたホストアドレスに置き換えます。ストレージドライバーがクローン作成をサポートする場合は、
copyMethodの値にCloneを使用すると、レプリケーションのより効率的なプロセスになる可能性があります。StorageClassNameおよびvolumeSnapshotClassNameはオプションのパラメーターです。ご使用の環境のデフォルトとは異なるストレージクラスおよびボリュームスナップショットクラス名を使用している場合は、それらの値を指定してください。永続ボリュームの同期方法を設定できるようになりました。
ソースクラスターで、以下のコマンドを入力して
ReplicationSourceオブジェクトのaddressおよびsshKeysの値を、宛先クラスターから書き留めた値に置き換えてreplication_source.yamlファイルを変更します。sed -i "s/<my.host.com>/$ADDRESS/g" replication_source.yaml sed -i "s/<mysshkeys>/$SSHKEYS/g" replication_source.yaml oc create -n <source> -f replication_source.yaml
sed -i "s/<my.host.com>/$ADDRESS/g" replication_source.yaml sed -i "s/<mysshkeys>/$SSHKEYS/g" replication_source.yaml oc create -n <source> -f replication_source.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow my.host.comは、設定時にReplicationDestinationの.status.rsync.addressフィールドからコピーしたホストアドレスに置き換えます。mysshkeysは、設定時にReplicationDestinationの.status.rsync.sshKeysフィールドからコピーしたキーに置き換えます。sourceを、ソースが置かれている永続ボリューム要求の名前に置き換えます。注記: 複製する永続ボリューム要求と同じ namespace にファイルを作成する必要があります。
ReplicationSourceオブジェクトで以下のコマンドを実行して、レプリケーションが完了したことを確認します。oc describe ReplicationSource -n <source-ns> <source>
oc describe ReplicationSource -n <source-ns> <source>Copy to Clipboard Copied! Toggle word wrap Toggle overflow source-nsをソースが置かれている永続ボリューム要求の namespace に置き換えます。sourceは、レプリケーションソースのカスタムリソースの名前に置き換えます。レプリケーションが成功した場合、出力は次の例のようになります。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Last Sync Timeに時間がリストされていない場合は、レプリケーションが完了していません。
元の永続ボリュームのレプリカがあります。
1.2.1.5. restic バックアップの設定 リンクのコピーリンクがクリップボードにコピーされました!
restic ベースのバックアップは、永続ボリュームの restic ベースのバックアップコピーを、restic-config.yaml シークレットファイルで指定された場所にコピーします。restic バックアップは、クラスター間でデータを同期しませんが、データをバックアップします。
次の手順を実行して、restic ベースのバックアップを設定します。
次の YAML コンテンツのようなシークレットを作成して、バックアップイメージが保存されるリポジトリーを指定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow my-restic-repositoryは、バックアップファイルを保存する S3 バケットリポジトリーの場所に置き換えます。my-restic-passwordは、リポジトリーへのアクセスに必要な暗号化キーに置き換えます。必要に応じて、
accessとpasswordは、プロバイダーのクレデンシャルに置き換えます。新しいリポジトリーを準備する必要がある場合の手順は、新しいリポジトリーの準備 を参照してください。この手順を使用する場合は、
restic initコマンドを実行してリポジトリーを初期化する必要がある手順をスキップしてください。VolSync は、最初のバックアップ中にリポジトリーを自動的に初期化します。重要: 複数の永続ボリューム要求を同じ S3 バケットにバックアップする場合には、バケットへのパスは永続ボリュームクレームごとに一意である必要があります。各永続ボリュームクレームは個別の
ReplicationSourceでバックアップされるので、個別の restic-config シークレットが必要です。同じ S3 バケットを共有することで、各
ReplicationSourceは S3 バケット全体への書き込みアクセスが割り当てられます。次の YAML コンテンツに似た
ReplicationSourceオブジェクトを作成して、バックアップポリシーを設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow sourceは、バックアップしている永続ボリュームクレームに置き換えます。scheduleの値は、バックアップを実行する頻度に置き換えます。この例では、30 分ごとにスケジュールが指定されています。スケジュールの設定の詳細は、同期のスケジュール を参照してください。PruneIntervalDaysの値は、インスタンスで次にデータの圧縮するまでの経過時間 (日数) に置き換えて、スペースを節約します。プルーニング操作は、実行中に大量の I/O トラフィックを生成する可能性があります。restic-configは、ステップ 1 で作成したシークレットの名前に置き換えます。retainの値は、バックアップしたイメージの保持ポリシーに設定します。ベストプラクティス:
CopyMethodの値にCloneを使用して、特定の時点のイメージが確実に保存されるようにします。
注記: デフォルトでは、restic ムーバーは root 権限なしで実行されます。restic ムーバーを root として実行する場合は、次のコマンドを実行して、昇格された権限のアノテーションを namespace に追加します。
oc annotate namespace <namespace> volsync.backube/privileged-movers=true
oc annotate namespace <namespace> volsync.backube/privileged-movers=true
<namespace> を namespace の名前に置き換えます。
1.2.1.5.1. restic バックアップの復元 リンクのコピーリンクがクリップボードにコピーされました!
コピーされたデータを restic バックアップから新しい永続ボリューム要求に復元できます。ベストプラクティス: バックアップ 1 つだけを新しい永続ボリューム要求に復元します。restic バックアップを復元するには、次の手順を実行します。
次の例のように、新しいデータを含む新しい永続ボリュームクレームを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pvc-nameは、新しい永続ボリュームクレームの名前に置き換えます。次の例のような
ReplicationDestinationカスタムリソースを作成して、データの復元先を指定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow destinationは、宛先 CR の名前に置き換えます。restic-repoは、ソースが保存されているリポジトリーへのパスに置き換えます。pvc-nameは、データを復元する新しい永続ボリュームクレームの名前に置き換えます。これには、新しいボリューム要求をプロビジョニングするのではなく、既存の永続ボリューム要求を使用してください。
復元プロセスは 1 回だけ完了する必要があります。この例では、最新のバックアップを復元します。復元オプションの詳細は、VolSync ドキュメントの Restore options を参照してください。
1.2.1.6. Rclone レプリケーションの設定 リンクのコピーリンクがクリップボードにコピーされました!
Rclone バックアップは、Rclone を使用して AWS S3 などの中間オブジェクトストレージの場所を介して単一の永続ボリュームを複数の場所にコピーします。複数の場所にデータを配布する場合に役立ちます。
次の手順を実行して、Rclone レプリケーションを設定します。
次の例のような
ReplicationSourceカスタムリソースを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow source-pvcは、レプリケーションソースのカスタムリソースの名前に置き換えます。source-nsをソースが置かれている永続ボリューム要求の namespace に置き換えます。sourceは、レプリケートしている永続ボリュームクレームに置き換えます。scheduleの値は、レプリケーションを実行する頻度に置き換えます。この例では、6 分ごとにスケジュールが指定されています。この値は引用符で囲む必要があります。詳細は、同期のスケジュール を参照してください。intermediate-s3-bucketは、Rclone 設定ファイルの設定セクションへのパスに置き換えます。destination-bucketは、レプリケートされたファイルをコピーするオブジェクトバケットへのパスに置き換えます。rclone-secretは、Rclone 設定情報を含むシークレットの名前に置き換えます。copyMethodの値はClone、Direct、またはSnapshotとして設定します。この値は、ある特定の時点でのコピーを生成するかどうか、生成する場合は、生成方法を指定します。my-sc-nameは、ポイントインタイムコピーに使用するストレージクラスの名前に置き換えます。指定しない場合、ソースボリュームのストレージクラスが使用されます。SnapshotをcopyMethodとして指定した場合はmy-vscを使用するVolumeSnapshotClassの名前に置き換えます。これは、他のタイプのcopyMethodには必要ありません。次の例のような
ReplicationDestinationカスタムリソースを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow scheduleの値は、レプリケーションを宛先に移動する頻度に置き換えます。移動元と宛先のスケジュールをオフセットして、データが宛先からプルされる前に複製を完了できるようにする必要があります。この例では、オフセットは 3 分で、6 分間隔でスケジュールされています。この値は引用符で囲む必要があります。スケジュールの詳細は、同期のスケジュール を参照してください。intermediate-s3-bucketは、Rclone 設定ファイルの設定セクションへのパスに置き換えます。destination-bucketは、レプリケートされたファイルをコピーするオブジェクトバケットへのパスに置き換えます。rclone-secretは、Rclone 設定情報を含むシークレットの名前に置き換えます。copyMethodの値はClone、Direct、またはSnapshotとして設定します。この値は、ある特定の時点でのコピーを生成するかどうか、生成する場合は、生成方法を指定します。accessModesの値は、永続ボリュームクレームのアクセスモードを指定します。有効な値はReadWriteOnceまたはReadWriteManyです。capacityは、宛先ボリュームのサイズを指定します。このサイズは、着信データを格納するのに十分な大きさに指定します。my-scは、特定の時点のコピーの宛先として使用するストレージクラスの名前に置き換えます。指定しない場合、システムストレージクラスが使用されます。SnapshotをcopyMethodとして指定した場合はmy-vscを使用するVolumeSnapshotClassの名前に置き換えます。これは、他のタイプのcopyMethodには必要ありません。含まれていない場合は、システムのデフォルトのVolumeSnapshotClassが使用されます。
注記: デフォルトでは、rclone ムーバーは root 権限なしで実行されます。rclone ムーバーを root として実行する場合は、次のコマンドを実行して、昇格された権限のアノテーションを namespace に追加します。
oc annotate namespace <namespace> volsync.backube/privileged-movers=true
oc annotate namespace <namespace> volsync.backube/privileged-movers=true
<namespace> を namespace の名前に置き換えます。
1.2.1.7. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
詳細は、以下のトピックを参照してください。
- Rsync-TLS レプリケーション用の独自のシークレットを作成する 方法は、Rsync-TLS レプリケーション用のシークレットの作成を参照してください。
- Rsync の追加情報は、VolSync ドキュメントの Usage を参照してください。
- リスティックオプションの詳細は、VolSync ドキュメントの バックアップオプション を参照してください。
- Installing VolSync on the managed clusters に戻る
1.2.2. 複製されたイメージを使用可能な永続ボリューム要求に変換 リンクのコピーリンクがクリップボードにコピーされました!
データを復元するには、レプリケートされたイメージを永続ボリューム要求に変換する必要がある場合があります。
VolumeSnapshot を使用して ReplicationDestination の場所から永続ボリューム要求を複製または復元すると、VolumeSnapshot が作成されます。VolumeSnapshot には、最後に成功した同期からの latestImage が含まれます。イメージのコピーは、使用する前に永続ボリューム要求に変換する必要があります。VolSync ReplicationDestination ボリュームポピュレーターを使用すると、イメージのコピーを使用可能な永続ボリュームクレームに変換できます。
永続ボリューム要求の復元先とする
ReplicationDestinationを参照するdataSourceRefを使用して永続ボリューム要求を作成します。この永続ボリューム要求には、ReplicationDestinationカスタムリソース定義のstatus.latestImage設定で指定されたVolumeSnapshotの内容が設定されます。次の YAML コンテンツは、使用される可能性のある永続ボリューム要求のサンプルを示しています。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pvc-nameは、新規の永続ボリューム要求の名前に置き換えます。destination-nsは、永続ボリューム要求およびReplicationDestinationが置かれている namespace に置き換えます。replicationdestination_to_replaceはReplicationDestination名に置き換えます。ベストプラクティス: 値が少なくとも最初のソース永続ボリュームクレームと同じサイズである場合は、
resources.requests.storageを異なる値で更新できます。次のコマンドを入力して、永続ボリュームクレームが環境で実行されていることを確認します。
kubectl get pvc -n <destination-ns>
$ kubectl get pvc -n <destination-ns>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
注記:
latestImage が存在しない場合、永続ボリューム要求は ReplicationDestination が完了し、スナップショットが利用可能になるまで保留状態のままになります。ReplicationDestination と、ReplicationDestination を使用する永続ボリュームコントローラーを同時に作成できます。永続ボリューム要求は、ReplicationDestination がレプリケーションを完了し、スナップショットが使用可能になった後にのみ、ボリューム作成プロセスを開始します。スナップショットは、.status.latestImage にあります。
さらに、使用されているストレージクラスの volumeBindingMode 値が WaitForFirstConsumer である場合、ボリュームポピュレーターは、永続ボリューム要求のコンシューマーが存在するまで待機してから、永続ボリューム要求が読み込まれます。永続ボリューム要求をマウントする Pod など、コンシューマーにアクセス権が必要な場合、そのボリュームにはデータが入力されます。VolSync ボリュームポピュレーターコントローラーは、ReplicationDestination の latestImage を使用します。latestImage は、永続ボリューム制御の作成後にレプリケーションが完了するたびに更新されます。
1.2.3. 同期のスケジューリング リンクのコピーリンクがクリップボードにコピーされました!
レプリケーションの開始方法を決定するときは、常に実行する、スケジュールどおりに実行する、または手動で実行するという 3 つのオプションから選択します。レプリケーションのスケジュールは、よく選択されるオプションです。
スケジュール オプションは、スケジュール時にレプリケーションを実行します。スケジュールは cronspec で定義されるため、スケジュールを時間間隔または特定の時間として設定できます。スケジュールの値の順序は次のとおりです。
"minute (0-59) hour (0-23) day-of-month (1-31) month (1-12) day-of-week (0-6)"
レプリケーションはスケジュールされた時間に開始されます。このレプリケーションオプションの設定は、以下の内容のようになります。
spec:
trigger:
schedule: "*/6 * * * *"
spec:
trigger:
schedule: "*/6 * * * *"
これらの方法のいずれかを有効にしたら、設定した方法に従って同期スケジュールが実行されます。
追加情報およびオプションは、VolSync のドキュメントを参照してください。
1.2.4. VolSync の詳細設定 リンクのコピーリンクがクリップボードにコピーされました!
永続ボリュームをレプリケートするときに、独自のシークレットを作成するなど、VolSync をさらに設定できます。
1.2.4.1. Rsync-TLS レプリケーション用のシークレットの作成 リンクのコピーリンクがクリップボードにコピーされました!
送信元と宛先は、TLS 接続の共有キーにアクセスできる必要があります。キーの場所は keySecret フィールドで確認できます。.spec.rsyncTLS.keySecret にシークレット名を指定しない場合、シークレット名は自動的に生成され、.status.rsyncTLS.keySecret に追加されます。
独自のシークレットを作成するには、次の手順を実行します。
シークレットには次の形式を使用します:
<id>:<at_least_32_hex_digits>次の例を参照してください:
1:23b7395fafc3e842bd8ac0fe142e6ad1前の例に対応する次の
secret.yamlの例を参照してください。Copy to Clipboard Copied! Toggle word wrap Toggle overflow