Trident Protectを使用してアプリケーションを復元する
Trident Protectを使用して、スナップショットまたはバックアップからアプリケーションを復元できます。アプリケーションを同じクラスターに復元する場合、既存のスナップショットからの復元の方が高速になります。
|
|
|
バックアップから別の名前空間に復元する
BackupRestore CR を使用して異なる名前空間にバックアップを復元すると、Trident Protect は、アプリケーションを新しい名前空間に復元し、復元されたアプリケーションのアプリケーション CR を作成します。復元されたアプリケーションを保護するには、オンデマンドバックアップまたはスナップショットを作成するか、保護スケジュールを確立します。
|
|
|
AWS セッショントークンの有効期限が、長時間実行される s3 復元処理に十分であることを確認します。復元操作中にトークンの有効期限が切れると、操作が失敗する可能性があります。
-
現在のセッショントークンの有効期限を確認する方法の詳細については、 "AWS API ドキュメント"を参照してください。
-
AWS リソースの認証情報の詳細については、 "AWS IAM ドキュメント"を参照してください。
|
|
Kopia をデータ ムーバーとして使用してバックアップを復元する場合、オプションで CR に注釈を指定するか、CLI を使用して Kopia が使用する一時ストレージの動作を制御できます。設定できるオプションの詳細については、 "Kopiaのドキュメント"を参照してください。Trident Protect CLI で注釈を指定する方法の詳細については、 `tridentctl-protect create --help`コマンドを使用してください。 |
-
カスタムリソース(CR)ファイルを作成し、 `trident-protect-backup-restore-cr.yaml`という名前を付けます。
-
作成したファイルで、次の属性を設定します:
-
metadata.name:(必須)このカスタム リソースの名前。環境に合わせて一意かつ適切な名前を選択してください。
-
spec.appArchivePath:AppVault内でバックアップコンテンツが保存されるパス。このパスを見つけるには、次のコマンドを使用できます:
kubectl get backups <BACKUP_NAME> -n my-app-namespace -o jsonpath='{.status.appArchivePath}' -
spec.appVaultRef:(必須)バックアップコンテンツが保存されるAppVaultの名前。
-
spec.namespaceMapping:リストア処理のソースネームスペースからデスティネーションネームスペースへのマッピング。 `my-source-namespace`と `my-destination-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 Protect は、選択したリソースとの関係に基づいて、一部のリソースを自動的に選択します。たとえば、永続ボリュームクレームリソースを選択し、それに関連付けられたポッドがある場合、Trident Protect は関連付けられているポッドも復元します。 -
resourceFilter.resourceSelectionCriteria:(フィルタリングに必須) `Include`または `Exclude`を使用して、resourceMatchersで定義されたリソースを含めるか除外します。含めるまたは除外するリソースを定義するには、以下のresourceMatchersパラメータを追加します:
-
resourceFilter.resourceMatchers:resourceMatcherオブジェクトの配列。この配列に複数の要素を定義すると、それらはOR演算として一致し、各要素内のフィールド(グループ、種類、バージョン)はAND演算として一致します。
-
resourceMatchers[].group:(オプション)フィルタリングするリソースのグループ。
-
resourceMatchers[].kind:(オプション)フィルタリングするリソースの種類。
-
resourceMatchers[].version:(オプション)フィルタリングするリソースのバージョン。
-
resourceMatchers[].names:(オプション)フィルタリングするリソースの Kubernetes metadata.name フィールド内の名前。
-
resourceMatchers[].namespaces:(オプション)フィルタリングするリソースの Kubernetes metadata.name フィールド内の名前空間。
-
resourceMatchers[].labelSelectors:(オプション) "Kubernetesドキュメント"で定義されているリソースのKubernetesメタデータ.nameフィールドのラベルセレクタ文字列。例:
"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>
バックアップから元の名前空間に復元する
いつでもバックアップを元の名前空間に復元できます。
AWS セッショントークンの有効期限が、長時間実行される s3 復元処理に十分であることを確認します。復元操作中にトークンの有効期限が切れると、操作が失敗する可能性があります。
-
現在のセッショントークンの有効期限を確認する方法の詳細については、 "AWS API ドキュメント"を参照してください。
-
AWS リソースの認証情報の詳細については、 "AWS IAM ドキュメント"を参照してください。
|
|
Kopia をデータ ムーバーとして使用してバックアップを復元する場合、オプションで CR に注釈を指定するか、CLI を使用して Kopia が使用する一時ストレージの動作を制御できます。設定できるオプションの詳細については、 "Kopiaのドキュメント"を参照してください。Trident Protect CLI で注釈を指定する方法の詳細については、 `tridentctl-protect create --help`コマンドを使用してください。 |
-
カスタムリソース(CR)ファイルを作成し、 `trident-protect-backup-ipr-cr.yaml`という名前を付けます。
-
作成したファイルで、次の属性を設定します:
-
metadata.name:(必須)このカスタム リソースの名前。環境に合わせて一意かつ適切な名前を選択してください。
-
spec.appArchivePath:AppVault内でバックアップコンテンツが保存されるパス。このパスを見つけるには、次のコマンドを使用できます:
kubectl get backups <BACKUP_NAME> -n my-app-namespace -o jsonpath='{.status.appArchivePath}' -
spec.appVaultRef:(必須)バックアップコンテンツが保存される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 Protect は、選択したリソースとの関係に基づいて、一部のリソースを自動的に選択します。たとえば、永続ボリュームクレームリソースを選択し、それに関連付けられたポッドがある場合、Trident Protect は関連付けられているポッドも復元します。 -
resourceFilter.resourceSelectionCriteria:(フィルタリングに必須) `Include`または `Exclude`を使用して、resourceMatchersで定義されたリソースを含めるか除外します。含めるまたは除外するリソースを定義するには、以下のresourceMatchersパラメータを追加します:
-
resourceFilter.resourceMatchers:resourceMatcherオブジェクトの配列。この配列に複数の要素を定義すると、それらはOR演算として一致し、各要素内のフィールド(グループ、種類、バージョン)はAND演算として一致します。
-
resourceMatchers[].group:(オプション)フィルタリングするリソースのグループ。
-
resourceMatchers[].kind:(オプション)フィルタリングするリソースの種類。
-
resourceMatchers[].version:(オプション)フィルタリングするリソースのバージョン。
-
resourceMatchers[].names:(オプション)フィルタリングするリソースの Kubernetes metadata.name フィールド内の名前。
-
resourceMatchers[].namespaces:(オプション)フィルタリングするリソースの Kubernetes metadata.name フィールド内の名前空間。
-
resourceMatchers[].labelSelectors:(オプション) "Kubernetesドキュメント"で定義されているリソースのKubernetesメタデータ.nameフィールドのラベルセレクタ文字列。例:
"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>
バックアップから別のクラスタにリストアする
元のクラスタに問題がある場合は、バックアップを別のクラスタにリストアできます。
|
|
|
次の前提条件が満たされていることを確認してください:
-
デスティネーション クラスタに Trident Protect がインストールされている。
-
デスティネーション クラスタは、バックアップが保存されているソース クラスタと同じAppVaultのバケット パスにアクセスできます。
-
ローカル環境が、 `tridentctl-protect get appvaultcontent`コマンドの実行時にAppVault CRで定義されたオブジェクトストレージバケットに接続できることを確認してください。ネットワーク制限によりアクセスできない場合は、代わりにデスティネーション クラスタ上のポッド内からTrident Protect CLIを実行してください。
-
AWS セッション トークンの有効期限が、長時間実行される復元操作に十分であることを確認します。復元操作中にトークンの有効期限が切れると、操作が失敗する可能性があります。
-
現在のセッショントークンの有効期限を確認する方法の詳細については、 "AWS API ドキュメント"を参照してください。
-
AWS リソースの認証情報の詳細については、 "AWSのドキュメント"を参照してください。
-
-
Trident Protect 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:(必須)このカスタム リソースの名前。環境に合わせて一意かつ適切な名前を選択してください。
-
spec.appVaultRef:(必須)バックアップコンテンツが保存されるAppVaultの名前。
-
spec.appArchivePath:AppVault内でバックアップコンテンツが保存されるパス。このパスを見つけるには、次のコマンドを使用できます:
kubectl get backups <BACKUP_NAME> -n my-app-namespace -o jsonpath='{.status.appArchivePath}'BackupRestore CR が利用できない場合は、手順 2 に記載されているコマンドを使用してバックアップの内容を表示できます。 -
spec.namespaceMapping:リストア処理のソースネームスペースからデスティネーションネームスペースへのマッピング。 `my-source-namespace`と `my-destination-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>
スナップショットから別の namespace にリストアする
カスタム リソース(CR)ファイルを使用して、スナップショットからデータを別の名前空間または元のソース名前空間に復元できます。SnapshotRestore CR を使用してスナップショットを別の名前空間に復元すると、Trident Protect は新しい名前空間にアプリケーションを復元し、復元されたアプリケーションのアプリケーション CR を作成します。復元されたアプリケーションを保護するには、オンデマンド バックアップまたはスナップショットを作成するか、保護スケジュールを設定します。
|
|
|
AWS セッショントークンの有効期限が、長時間実行される s3 復元処理に十分であることを確認します。復元操作中にトークンの有効期限が切れると、操作が失敗する可能性があります。
-
現在のセッショントークンの有効期限を確認する方法の詳細については、 "AWS API ドキュメント"を参照してください。
-
AWS リソースの認証情報の詳細については、 "AWS IAM ドキュメント"を参照してください。
-
カスタムリソース(CR)ファイルを作成し、 `trident-protect-snapshot-restore-cr.yaml`という名前を付けます。
-
作成したファイルで、次の属性を設定します:
-
metadata.name:(必須)このカスタム リソースの名前。環境に合わせて一意かつ適切な名前を選択してください。
-
spec.appVaultRef:(必須)スナップショットの内容が保存されるAppVaultの名前。
-
spec.appArchivePath:AppVault内のパスで、スナップショットの内容が保存される場所。このパスを見つけるには、次のコマンドを使用できます:
kubectl get snapshots <SNAPHOT_NAME> -n my-app-namespace -o jsonpath='{.status.appArchivePath}' -
spec.namespaceMapping:リストア処理のソースネームスペースからデスティネーションネームスペースへのマッピング。 `my-source-namespace`と `my-destination-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 Protect は、選択したリソースとの関係に基づいて、一部のリソースを自動的に選択します。たとえば、永続ボリュームクレームリソースを選択し、それに関連付けられたポッドがある場合、Trident Protect は関連付けられているポッドも復元します。 -
resourceFilter.resourceSelectionCriteria:(フィルタリングに必須) `Include`または `Exclude`を使用して、resourceMatchersで定義されたリソースを含めるか除外します。含めるまたは除外するリソースを定義するには、以下のresourceMatchersパラメータを追加します:
-
resourceFilter.resourceMatchers:resourceMatcherオブジェクトの配列。この配列に複数の要素を定義すると、それらはOR演算として一致し、各要素内のフィールド(グループ、種類、バージョン)はAND演算として一致します。
-
resourceMatchers[].group:(オプション)フィルタリングするリソースのグループ。
-
resourceMatchers[].kind:(オプション)フィルタリングするリソースの種類。
-
resourceMatchers[].version:(オプション)フィルタリングするリソースのバージョン。
-
resourceMatchers[].names:(オプション)フィルタリングするリソースの Kubernetes metadata.name フィールド内の名前。
-
resourceMatchers[].namespaces:(オプション)フィルタリングするリソースの Kubernetes metadata.name フィールド内の名前空間。
-
resourceMatchers[].labelSelectors:(オプション) "Kubernetesドキュメント"で定義されているリソースのKubernetesメタデータ.nameフィールドのラベルセレクタ文字列。例:
"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`引数は、名前空間とスナップショット名を次の形式で使用します `<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> -
スナップショットから元の名前空間に復元する
いつでもスナップショットを元の名前空間にリストアできます。
|
|
アプリケーションが複数の名前空間を使用し、これらの名前空間に同じ名前のPVCがある場合、スナップショットの復元操作(インプレースおよび新しい名前空間への復元の両方)は正しく機能しません。復元されたすべてのボリュームには、名前空間ごとに正しいデータではなく、同じデータが含まれます。スナップショットの復元ではなくバックアップの復元を使用するか、この問題を修正するバージョン26.02以降にアップグレードしてください。 |
AWS セッショントークンの有効期限が、長時間実行される s3 復元処理に十分であることを確認します。復元操作中にトークンの有効期限が切れると、操作が失敗する可能性があります。
-
現在のセッショントークンの有効期限を確認する方法の詳細については、 "AWS API ドキュメント"を参照してください。
-
AWS リソースの認証情報の詳細については、 "AWS IAM ドキュメント"を参照してください。
-
カスタムリソース(CR)ファイルを作成し、 `trident-protect-snapshot-ipr-cr.yaml`という名前を付けます。
-
作成したファイルで、次の属性を設定します:
-
metadata.name:(必須)このカスタム リソースの名前。環境に合わせて一意かつ適切な名前を選択してください。
-
spec.appVaultRef:(必須)スナップショットの内容が保存される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 Protect は、選択したリソースとの関係に基づいて、一部のリソースを自動的に選択します。たとえば、永続ボリュームクレームリソースを選択し、それに関連付けられたポッドがある場合、Trident Protect は関連付けられているポッドも復元します。 -
resourceFilter.resourceSelectionCriteria:(フィルタリングに必須) `Include`または `Exclude`を使用して、resourceMatchersで定義されたリソースを含めるか除外します。含めるまたは除外するリソースを定義するには、以下のresourceMatchersパラメータを追加します:
-
resourceFilter.resourceMatchers:resourceMatcherオブジェクトの配列。この配列に複数の要素を定義すると、それらはOR演算として一致し、各要素内のフィールド(グループ、種類、バージョン)はAND演算として一致します。
-
resourceMatchers[].group:(オプション)フィルタリングするリソースのグループ。
-
resourceMatchers[].kind:(オプション)フィルタリングするリソースの種類。
-
resourceMatchers[].version:(オプション)フィルタリングするリソースのバージョン。
-
resourceMatchers[].names:(オプション)フィルタリングするリソースの Kubernetes metadata.name フィールド内の名前。
-
resourceMatchers[].namespaces:(オプション)フィルタリングするリソースの Kubernetes metadata.name フィールド内の名前空間。
-
resourceMatchers[].labelSelectors:(オプション) "Kubernetesドキュメント"で定義されているリソースのKubernetesメタデータ.nameフィールドのラベルセレクタ文字列。例:
"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
-
括弧内の値を環境の情報に置き換えて、スナップショットを元の名前空間に復元します。例:
tridentctl-protect create snapshotinplacerestore <my_restore_name> \ --snapshot <namespace/snapshot_to_restore> \ -n <application_namespace>
リストア処理のステータスを確認する
コマンド ラインを使用して、進行中、完了、または失敗した復元処理のステータスを確認できます。
-
復元操作のステータスを取得するには、次のコマンドを使用します。括弧内の値は、ご使用の環境の情報に置き換えてください:
kubectl get backuprestore -n <namespace_name> <my_restore_cr_name> -o jsonpath='{.status}'