Trident保護を使用したアプリケーションのリストア
Trident保護を使用すると、Snapshotまたはバックアップからアプリケーションをリストアできます。同じクラスタにアプリケーションをリストアする場合、既存の Snapshot からのリストアは高速です。
|
|
バックアップから別のネームスペースへのリストア
BackupRestore CRを使用して別のネームスペースにバックアップをリストアすると、Trident保護によって新しいネームスペースにアプリケーションがリストアされ、リストアしたアプリケーション用のアプリケーションCRが作成されます。リストアしたアプリケーションを保護するには、オンデマンドバックアップまたはSnapshotを作成するか、保護スケジュールを設定します。
|
既存のリソースがある別のネームスペースにバックアップをリストアしても、バックアップ内のリソースと名前を共有するリソースは変更されません。バックアップ内のすべてのリソースをリストアするには、ターゲットネームスペースを削除して再作成するか、新しいネームスペースにバックアップをリストアします。 |
長時間実行されるs3リストア処理には、AWSセッショントークンの有効期限が十分であることを確認してください。リストア処理中にトークンの有効期限が切れた場合、処理が失敗することがあります。
-
現在のセッショントークンの有効期限を確認する方法については、を参照して "AWS APIのドキュメント"ください。
-
AWSリソースのクレデンシャルの詳細については、を参照してください "AWS IAMのドキュメント"。
|
Kopia をデータ ムーバーとして使用してバックアップを復元する場合、オプションで CR に注釈を指定するか、CLI を使用して Kopia が使用する一時ストレージの動作を制御できます。参照 "Kopiaドキュメント"設定できるオプションの詳細については、こちらをご覧ください。使用 `tridentctl-protect create --help`Trident protect CLI で注釈を指定する方法の詳細については、コマンドを参照してください。 |
-
カスタムリソース(CR)ファイルを作成し、という名前を付け `trident-protect-backup-restore-cr.yaml`ます。
-
作成したファイルで、次の属性を設定します。
-
* metadata.name*:(required)このカスタムリソースの名前。環境に適した一意の適切な名前を選択します。
-
spec.appArchivePath:バックアップコンテンツが格納されているAppVault内のパス。このパスを検索するには、次のコマンドを使用します。
kubectl get backups <BACKUP_NAME> -n my-app-namespace -o jsonpath='{.status.appArchivePath}'
-
* spec.appVaultRef *:(required)バックアップコンテンツが格納されているAppVaultの名前。
-
* spec.namespaceMapping*:リストア処理のソースネームスペースとデスティネーションネームスペースのマッピング。および `my-destination-namespace`を、使用している環境の情報に置き換え `my-source-namespace`ます。
--- apiVersion: protect.trident.netapp.io/v1 kind: BackupRestore metadata: name: my-cr-name namespace: my-destination-namespace spec: appArchivePath: my-backup-path appVaultRef: appvault-name namespaceMapping: [{"source": "my-source-namespace", "destination": "my-destination-namespace"}]
-
-
(オプション)リストアするアプリケーションの特定のリソースのみを選択する必要がある場合は、特定のラベルが付いたリソースを含めるか除外するフィルタリングを追加します。
Trident保護では、選択したリソースとの関係に基づいて、一部のリソースが自動的に選択されます。たとえば、永続的ボリューム要求のリソースを選択し、そのリソースにポッドが関連付けられている場合、Trident保護では関連付けられているポッドもリストアされます。 -
resourceFilter.resourceSelectionCriteria:(フィルタリングに必要) resourceMatchersで定義されたリソースを使用 `Include`または `Exclude`除外します。次のresourceMatchersパラメータを追加して、追加または除外するリソースを定義します。
-
resourceFilter.resourceMatchers: resourceMatcherオブジェクトの配列。この配列に複数の要素を定義した場合、それらはOR演算として照合され、各要素内のフィールド(グループ、種類、バージョン)はAND演算として照合されます。
-
*resourceMatchers[].group *:(Optional)フィルタリングするリソースのグループ。
-
*resourceMatchers[].kind *:(optional)フィルタリングするリソースの種類。
-
resourceMatchers[].version:(Optional)フィルタリングするリソースのバージョン。
-
* resourceMatchers[].names *:(optional)フィルタリングするリソースのKubernetes metadata.nameフィールドの名前。
-
*resourceMatchers[].namespaces *:(optional)フィルタリングするリソースのKubernetes metadata.nameフィールドの名前空間。
-
*resourceMatchers[].labelSelectors *:(Optional)で定義されているリソースのKubernetes metadata.nameフィールドのラベルセレクタ文字列 "Kubernetes のドキュメント"。例:
"trident.netapp.io/os=linux"
。例:
-
-
spec: resourceFilter: resourceSelectionCriteria: "Include" resourceMatchers: - group: my-resource-group-1 kind: my-resource-kind-1 version: my-resource-version-1 names: ["my-resource-names"] namespaces: ["my-resource-namespaces"] labelSelectors: ["trident.netapp.io/os=linux"] - group: my-resource-group-2 kind: my-resource-kind-2 version: my-resource-version-2 names: ["my-resource-names"] namespaces: ["my-resource-namespaces"] labelSelectors: ["trident.netapp.io/os=linux"]
-
-
ファイルに正しい値を入力したら
trident-protect-backup-restore-cr.yaml
、CRを適用します。kubectl apply -f trident-protect-backup-restore-cr.yaml
-
バックアップを別のネームスペースにリストアします。角かっこ内の値は、使用している環境の情報に置き換えてください。 `namespace-mapping`引数は、コロンで区切られた名前空間を使用して、ソース名前空間を正しい宛先名前空間に形式でマッピングし `source1:dest1,source2:dest2`ます。例:
tridentctl-protect create backuprestore <my_restore_name> \ --backup <backup_namespace>/<backup_to_restore> \ --namespace-mapping <source_to_destination_namespace_mapping> \ -n <application_namespace>
バックアップから元のネームスペースへのリストア
バックアップはいつでも元のネームスペースにリストアできます。
長時間実行されるs3リストア処理には、AWSセッショントークンの有効期限が十分であることを確認してください。リストア処理中にトークンの有効期限が切れた場合、処理が失敗することがあります。
-
現在のセッショントークンの有効期限を確認する方法については、を参照して "AWS APIのドキュメント"ください。
-
AWSリソースのクレデンシャルの詳細については、を参照してください "AWS IAMのドキュメント"。
|
Kopia をデータ ムーバーとして使用してバックアップを復元する場合、オプションで CR に注釈を指定するか、CLI を使用して Kopia が使用する一時ストレージの動作を制御できます。参照 "Kopiaドキュメント"設定できるオプションの詳細については、こちらをご覧ください。使用 `tridentctl-protect create --help`Trident protect CLI で注釈を指定する方法の詳細については、コマンドを参照してください。 |
-
カスタムリソース(CR)ファイルを作成し、という名前を付け `trident-protect-backup-ipr-cr.yaml`ます。
-
作成したファイルで、次の属性を設定します。
-
* metadata.name*:(required)このカスタムリソースの名前。環境に適した一意の適切な名前を選択します。
-
spec.appArchivePath:バックアップコンテンツが格納されているAppVault内のパス。このパスを検索するには、次のコマンドを使用します。
kubectl get backups <BACKUP_NAME> -n my-app-namespace -o jsonpath='{.status.appArchivePath}'
-
* spec.appVaultRef *:(required)バックアップコンテンツが格納されているAppVaultの名前。
例:
--- apiVersion: protect.trident.netapp.io/v1 kind: BackupInplaceRestore metadata: name: my-cr-name namespace: my-app-namespace spec: appArchivePath: my-backup-path appVaultRef: appvault-name
-
-
(オプション)リストアするアプリケーションの特定のリソースのみを選択する必要がある場合は、特定のラベルが付いたリソースを含めるか除外するフィルタリングを追加します。
Trident保護では、選択したリソースとの関係に基づいて、一部のリソースが自動的に選択されます。たとえば、永続的ボリューム要求のリソースを選択し、そのリソースにポッドが関連付けられている場合、Trident保護では関連付けられているポッドもリストアされます。 -
resourceFilter.resourceSelectionCriteria:(フィルタリングに必要) resourceMatchersで定義されたリソースを使用 `Include`または `Exclude`除外します。次のresourceMatchersパラメータを追加して、追加または除外するリソースを定義します。
-
resourceFilter.resourceMatchers: resourceMatcherオブジェクトの配列。この配列に複数の要素を定義した場合、それらはOR演算として照合され、各要素内のフィールド(グループ、種類、バージョン)はAND演算として照合されます。
-
*resourceMatchers[].group *:(Optional)フィルタリングするリソースのグループ。
-
*resourceMatchers[].kind *:(optional)フィルタリングするリソースの種類。
-
resourceMatchers[].version:(Optional)フィルタリングするリソースのバージョン。
-
* resourceMatchers[].names *:(optional)フィルタリングするリソースのKubernetes metadata.nameフィールドの名前。
-
*resourceMatchers[].namespaces *:(optional)フィルタリングするリソースのKubernetes metadata.nameフィールドの名前空間。
-
*resourceMatchers[].labelSelectors *:(Optional)で定義されているリソースのKubernetes metadata.nameフィールドのラベルセレクタ文字列 "Kubernetes のドキュメント"。例:
"trident.netapp.io/os=linux"
。例:
-
-
spec: resourceFilter: resourceSelectionCriteria: "Include" resourceMatchers: - group: my-resource-group-1 kind: my-resource-kind-1 version: my-resource-version-1 names: ["my-resource-names"] namespaces: ["my-resource-namespaces"] labelSelectors: ["trident.netapp.io/os=linux"] - group: my-resource-group-2 kind: my-resource-kind-2 version: my-resource-version-2 names: ["my-resource-names"] namespaces: ["my-resource-namespaces"] labelSelectors: ["trident.netapp.io/os=linux"]
-
-
ファイルに正しい値を入力したら
trident-protect-backup-ipr-cr.yaml
、CRを適用します。kubectl apply -f trident-protect-backup-ipr-cr.yaml
-
バックアップを元のネームスペースにリストアします。角かっこ内の値は、使用している環境の情報に置き換えてください。この `backup`引数では、という形式のネームスペースとバックアップ名を使用し `<namespace>/<name>`ます。例:
tridentctl-protect create backupinplacerestore <my_restore_name> \ --backup <namespace/backup_to_restore> \ -n <application_namespace>
バックアップから別のクラスタへのリストア
元のクラスタで問題が発生した場合は、バックアップを別のクラスタにリストアできます。
|
Kopia をデータ ムーバーとして使用してバックアップを復元する場合、オプションで CR に注釈を指定するか、CLI を使用して Kopia が使用する一時ストレージの動作を制御できます。参照 "Kopiaドキュメント"設定できるオプションの詳細については、こちらをご覧ください。使用 `tridentctl-protect create --help`Trident protect CLI で注釈を指定する方法の詳細については、コマンドを参照してください。 |
次の前提条件が満たされていることを確認します。
-
デスティネーションクラスタにTrident保護がインストールされています。
-
デスティネーションクラスタは、バックアップが格納されているソースクラスタと同じAppVaultのバケットパスにアクセスできます。
-
実行時に、ローカル環境がAppVault CRで定義されたオブジェクトストレージバケットに接続できることを確認してください。 `tridentctl-protect get appvaultcontent`指示。ネットワーク制限によりアクセスできない場合は、代わりに宛先クラスターのポッド内からTrident protect CLI を実行します。
-
長時間実行されるリストア処理には、AWSセッショントークンの有効期限が十分であることを確認してください。リストア処理中にトークンの有効期限が切れた場合、処理が失敗することがあります。
-
現在のセッショントークンの有効期限を確認する方法については、を参照して "AWS APIのドキュメント"ください。
-
AWSリソースのクレデンシャルの詳細については、を参照してください "AWSのドキュメント"。
-
-
Trident保護CLIプラグインを使用して、デスティネーションクラスタでAppVault CRが使用可能かどうかを確認します。
tridentctl-protect get appvault --context <destination_cluster_name>
アプリケーションのリストア用のネームスペースがデスティネーションクラスタに存在することを確認します。 -
デスティネーションクラスタから使用可能なAppVaultのバックアップ内容を表示します。
tridentctl-protect get appvaultcontent <appvault_name> \ --show-resources backup \ --show-paths \ --context <destination_cluster_name>
このコマンドを実行すると、AppVaultで使用可能なバックアップが表示されます。これには、元のクラスタ、対応するアプリケーション名、タイムスタンプ、アーカイブパスが含まれます。
出力例:
+-------------+-----------+--------+-----------------+--------------------------+-------------+ | CLUSTER | APP | TYPE | NAME | TIMESTAMP | PATH | +-------------+-----------+--------+-----------------+--------------------------+-------------+ | production1 | wordpress | backup | wordpress-bkup-1| 2024-10-30 08:37:40 (UTC)| backuppath1 | | production1 | wordpress | backup | wordpress-bkup-2| 2024-10-30 08:37:40 (UTC)| backuppath2 | +-------------+-----------+--------+-----------------+--------------------------+-------------+
-
AppVault名とアーカイブパスを使用して、アプリケーションをデスティネーションクラスタにリストアします。
-
カスタムリソース(CR)ファイルを作成し、という名前を付け `trident-protect-backup-restore-cr.yaml`ます。
-
作成したファイルで、次の属性を設定します。
-
* metadata.name*:(required)このカスタムリソースの名前。環境に適した一意の適切な名前を選択します。
-
* spec.appVaultRef *:(required)バックアップコンテンツが格納されているAppVaultの名前。
-
spec.appArchivePath:バックアップコンテンツが格納されているAppVault内のパス。このパスを検索するには、次のコマンドを使用します。
kubectl get backups <BACKUP_NAME> -n my-app-namespace -o jsonpath='{.status.appArchivePath}'
BackupRestore CRを使用できない場合は、手順2のコマンドを使用してバックアップの内容を表示できます。 -
* spec.namespaceMapping*:リストア処理のソースネームスペースとデスティネーションネームスペースのマッピング。および `my-destination-namespace`を、使用している環境の情報に置き換え `my-source-namespace`ます。
例:
apiVersion: protect.trident.netapp.io/v1 kind: BackupRestore metadata: name: my-cr-name namespace: my-destination-namespace spec: appVaultRef: appvault-name appArchivePath: my-backup-path namespaceMapping: [{"source": "my-source-namespace", "destination": "my-destination-namespace"}]
-
-
ファイルに正しい値を入力したら
trident-protect-backup-restore-cr.yaml
、CRを適用します。kubectl apply -f trident-protect-backup-restore-cr.yaml
-
次のコマンドを使用してアプリケーションをリストアし、括弧内の値を環境の情報に置き換えます。namespace-mapping引数では、コロンで区切られた名前空間を使用して、ソース名前空間をsource1:dest1、source2:dest2の形式で正しいデスティネーション名前空間にマッピングします。例:
tridentctl-protect create backuprestore <restore_name> \ --namespace-mapping <source_to_destination_namespace_mapping> \ --appvault <appvault_name> \ --path <backup_path> \ --context <destination_cluster_name> \ -n <application_namespace>
Snapshotから別のネームスペースへのリストア
カスタムリソース(CR)ファイルを使用して、スナップショットから別のネームスペースまたは元のソースネームスペースにデータをリストアできます。SnapshotRestore CRを使用して別のネームスペースにSnapshotをリストアすると、Trident保護によって新しいネームスペースにアプリケーションがリストアされ、リストアしたアプリケーション用のアプリケーションCRが作成されます。リストアしたアプリケーションを保護するには、オンデマンドバックアップまたはSnapshotを作成するか、保護スケジュールを設定します。
|
SnapshotRestoreは、 `spec.storageClassMapping`属性ですが、ソース ストレージ クラスと宛先ストレージ クラスが同じストレージ バックエンドを使用する場合のみです。復元しようとすると、 `StorageClass`異なるストレージバックエンドを使用する場合、復元操作は失敗します。 |
長時間実行されるs3リストア処理には、AWSセッショントークンの有効期限が十分であることを確認してください。リストア処理中にトークンの有効期限が切れた場合、処理が失敗することがあります。
-
現在のセッショントークンの有効期限を確認する方法については、を参照して "AWS APIのドキュメント"ください。
-
AWSリソースのクレデンシャルの詳細については、を参照してください "AWS IAMのドキュメント"。
-
カスタムリソース(CR)ファイルを作成し、という名前を付け `trident-protect-snapshot-restore-cr.yaml`ます。
-
作成したファイルで、次の属性を設定します。
-
* metadata.name*:(required)このカスタムリソースの名前。環境に適した一意の適切な名前を選択します。
-
* spec.appVaultRef *:(required)スナップショットコンテンツが格納されているAppVaultの名前。
-
* spec.appArchivePath *:スナップショットの内容が格納されているAppVault内のパス。このパスを検索するには、次のコマンドを使用します。
kubectl get snapshots <SNAPHOT_NAME> -n my-app-namespace -o jsonpath='{.status.appArchivePath}'
-
* spec.namespaceMapping*:リストア処理のソースネームスペースとデスティネーションネームスペースのマッピング。および `my-destination-namespace`を、使用している環境の情報に置き換え `my-source-namespace`ます。
--- apiVersion: protect.trident.netapp.io/v1 kind: SnapshotRestore metadata: name: my-cr-name namespace: my-app-namespace spec: appVaultRef: appvault-name appArchivePath: my-snapshot-path namespaceMapping: [{"source": "my-source-namespace", "destination": "my-destination-namespace"}]
-
-
(オプション)リストアするアプリケーションの特定のリソースのみを選択する必要がある場合は、特定のラベルが付いたリソースを含めるか除外するフィルタリングを追加します。
Trident保護では、選択したリソースとの関係に基づいて、一部のリソースが自動的に選択されます。たとえば、永続的ボリューム要求のリソースを選択し、そのリソースにポッドが関連付けられている場合、Trident保護では関連付けられているポッドもリストアされます。 -
resourceFilter.resourceSelectionCriteria:(フィルタリングに必要) resourceMatchersで定義されたリソースを使用 `Include`または `Exclude`除外します。次のresourceMatchersパラメータを追加して、追加または除外するリソースを定義します。
-
resourceFilter.resourceMatchers: resourceMatcherオブジェクトの配列。この配列に複数の要素を定義した場合、それらはOR演算として照合され、各要素内のフィールド(グループ、種類、バージョン)はAND演算として照合されます。
-
*resourceMatchers[].group *:(Optional)フィルタリングするリソースのグループ。
-
*resourceMatchers[].kind *:(optional)フィルタリングするリソースの種類。
-
resourceMatchers[].version:(Optional)フィルタリングするリソースのバージョン。
-
* resourceMatchers[].names *:(optional)フィルタリングするリソースのKubernetes metadata.nameフィールドの名前。
-
*resourceMatchers[].namespaces *:(optional)フィルタリングするリソースのKubernetes metadata.nameフィールドの名前空間。
-
*resourceMatchers[].labelSelectors *:(Optional)で定義されているリソースのKubernetes metadata.nameフィールドのラベルセレクタ文字列 "Kubernetes のドキュメント"。例:
"trident.netapp.io/os=linux"
。例:
-
-
spec: resourceFilter: resourceSelectionCriteria: "Include" resourceMatchers: - group: my-resource-group-1 kind: my-resource-kind-1 version: my-resource-version-1 names: ["my-resource-names"] namespaces: ["my-resource-namespaces"] labelSelectors: ["trident.netapp.io/os=linux"] - group: my-resource-group-2 kind: my-resource-kind-2 version: my-resource-version-2 names: ["my-resource-names"] namespaces: ["my-resource-namespaces"] labelSelectors: ["trident.netapp.io/os=linux"]
-
-
ファイルに正しい値を入力したら
trident-protect-snapshot-restore-cr.yaml
、CRを適用します。kubectl apply -f trident-protect-snapshot-restore-cr.yaml
-
スナップショットを別のネームスペースにリストアし、括弧内の値を環境の情報に置き換えます。
-
`snapshot`引数では、という形式のネームスペースとSnapshot名を使用し `<namespace>/<name>`ます。
-
`namespace-mapping`引数は、コロンで区切られた名前空間を使用して、ソース名前空間を正しい宛先名前空間に形式でマッピングし `source1:dest1,source2:dest2`ます。
例:
tridentctl-protect create snapshotrestore <my_restore_name> \ --snapshot <namespace/snapshot_to_restore> \ --namespace-mapping <source_to_destination_namespace_mapping> \ -n <application_namespace>
-
Snapshotから元のネームスペースへのリストア
Snapshotはいつでも元のネームスペースにリストアできます。
長時間実行されるs3リストア処理には、AWSセッショントークンの有効期限が十分であることを確認してください。リストア処理中にトークンの有効期限が切れた場合、処理が失敗することがあります。
-
現在のセッショントークンの有効期限を確認する方法については、を参照して "AWS APIのドキュメント"ください。
-
AWSリソースのクレデンシャルの詳細については、を参照してください "AWS IAMのドキュメント"。
-
カスタムリソース(CR)ファイルを作成し、という名前を付け `trident-protect-snapshot-ipr-cr.yaml`ます。
-
作成したファイルで、次の属性を設定します。
-
* metadata.name*:(required)このカスタムリソースの名前。環境に適した一意の適切な名前を選択します。
-
* spec.appVaultRef *:(required)スナップショットコンテンツが格納されているAppVaultの名前。
-
* spec.appArchivePath *:スナップショットの内容が格納されているAppVault内のパス。このパスを検索するには、次のコマンドを使用します。
kubectl get snapshots <SNAPSHOT_NAME> -n my-app-namespace -o jsonpath='{.status.appArchivePath}'
--- apiVersion: protect.trident.netapp.io/v1 kind: SnapshotInplaceRestore metadata: name: my-cr-name namespace: my-app-namespace spec: appVaultRef: appvault-name appArchivePath: my-snapshot-path
-
-
(オプション)リストアするアプリケーションの特定のリソースのみを選択する必要がある場合は、特定のラベルが付いたリソースを含めるか除外するフィルタリングを追加します。
Trident保護では、選択したリソースとの関係に基づいて、一部のリソースが自動的に選択されます。たとえば、永続的ボリューム要求のリソースを選択し、そのリソースにポッドが関連付けられている場合、Trident保護では関連付けられているポッドもリストアされます。 -
resourceFilter.resourceSelectionCriteria:(フィルタリングに必要) resourceMatchersで定義されたリソースを使用 `Include`または `Exclude`除外します。次のresourceMatchersパラメータを追加して、追加または除外するリソースを定義します。
-
resourceFilter.resourceMatchers: resourceMatcherオブジェクトの配列。この配列に複数の要素を定義した場合、それらはOR演算として照合され、各要素内のフィールド(グループ、種類、バージョン)はAND演算として照合されます。
-
*resourceMatchers[].group *:(Optional)フィルタリングするリソースのグループ。
-
*resourceMatchers[].kind *:(optional)フィルタリングするリソースの種類。
-
resourceMatchers[].version:(Optional)フィルタリングするリソースのバージョン。
-
* resourceMatchers[].names *:(optional)フィルタリングするリソースのKubernetes metadata.nameフィールドの名前。
-
*resourceMatchers[].namespaces *:(optional)フィルタリングするリソースのKubernetes metadata.nameフィールドの名前空間。
-
*resourceMatchers[].labelSelectors *:(Optional)で定義されているリソースのKubernetes metadata.nameフィールドのラベルセレクタ文字列 "Kubernetes のドキュメント"。例:
"trident.netapp.io/os=linux"
。例:
-
-
spec: resourceFilter: resourceSelectionCriteria: "Include" resourceMatchers: - group: my-resource-group-1 kind: my-resource-kind-1 version: my-resource-version-1 names: ["my-resource-names"] namespaces: ["my-resource-namespaces"] labelSelectors: ["trident.netapp.io/os=linux"] - group: my-resource-group-2 kind: my-resource-kind-2 version: my-resource-version-2 names: ["my-resource-names"] namespaces: ["my-resource-namespaces"] labelSelectors: ["trident.netapp.io/os=linux"]
-
-
ファイルに正しい値を入力したら
trident-protect-snapshot-ipr-cr.yaml
、CRを適用します。kubectl apply -f trident-protect-snapshot-ipr-cr.yaml
-
Snapshotを元のネームスペースにリストアします。括弧内の値は、環境の情報に置き換えてください。例:
tridentctl-protect create snapshotinplacerestore <my_restore_name> \ --snapshot <snapshot_to_restore> \ -n <application_namespace>
リストア処理のステータスの確認
コマンドラインを使用して、実行中、完了、または失敗したリストア処理のステータスを確認できます。
-
次のコマンドを使用してリストア処理のステータスを取得し、角かっこ内の値を環境の情報に置き換えます。
kubectl get backuprestore -n <namespace_name> <my_restore_cr_name> -o jsonpath='{.status}'