Trident Protectを使用してアプリケーションを復元する
Trident Protect を使用して、スナップショットまたはバックアップからアプリケーションを復元できます。アプリケーションを同じクラスターに復元する場合、既存のスナップショットからの復元の方が高速になります。
|
|
|
バックアップから別の名前空間に復元する
BackupRestore CR を使用してバックアップを別の名前空間に復元すると、 Trident Protect はアプリケーションを新しい名前空間に復元し、復元されたアプリケーションのアプリケーション CR を作成します。復元されたアプリケーションを保護するには、オンデマンド バックアップまたはスナップショットを作成するか、保護スケジュールを確立します。
|
|
既存のリソースを含む別の名前空間にバックアップを復元しても、バックアップ内のリソースと名前を共有するリソースは変更されません。バックアップ内のすべてのリソースを復元するには、ターゲット名前空間を削除して再作成するか、バックアップを新しい名前空間に復元します。 |
AWS セッション トークンの有効期限が、長時間実行される S3 復元操作に十分であることを確認します。復元操作中にトークンの有効期限が切れると、操作が失敗する可能性があります。
-
参照 "AWS API ドキュメント"現在のセッション トークンの有効期限を確認する方法の詳細については、こちらをご覧ください。
-
参照 "AWS IAM ドキュメント"AWS リソースの認証情報の詳細については、こちらをご覧ください。
|
|
Kopia をデータ ムーバーとして使用してバックアップを復元する場合、オプションで CR に注釈を指定するか、CLI を使用して Kopia が使用する一時ストレージの動作を制御できます。参照 "Kopiaのドキュメント"設定できるオプションの詳細については、こちらをご覧ください。使用 `tridentctl-protect create --help`Trident protect CLI で注釈を指定する方法の詳細については、コマンドを参照してください。 |
-
カスタムリソース(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の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>
バックアップから元の名前空間に復元する
いつでもバックアップを元の名前空間に復元できます。
AWS セッション トークンの有効期限が、長時間実行される S3 復元操作に十分であることを確認します。復元操作中にトークンの有効期限が切れると、操作が失敗する可能性があります。
-
参照 "AWS API ドキュメント"現在のセッション トークンの有効期限を確認する方法の詳細については、こちらをご覧ください。
-
参照 "AWS IAM ドキュメント"AWS リソースの認証情報の詳細については、こちらをご覧ください。
|
|
Kopia をデータ ムーバーとして使用してバックアップを復元する場合、オプションで CR に注釈を指定するか、CLI を使用して Kopia が使用する一時ストレージの動作を制御できます。参照 "Kopiaのドキュメント"設定できるオプションの詳細については、こちらをご覧ください。使用 `tridentctl-protect create --help`Trident protect CLI で注釈を指定する方法の詳細については、コマンドを参照してください。 |
-
カスタムリソース(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の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 Protect がインストールされています。
-
宛先クラスターは、バックアップが保存されているソース クラスターと同じ AppVault のバケット パスにアクセスできます。
-
実行時に、ローカル環境がAppVault CRで定義されたオブジェクトストレージバケットに接続できることを確認してください。 `tridentctl-protect get appvaultcontent`指示。ネットワーク制限によりアクセスできない場合は、代わりに宛先クラスターのポッド内から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>
スナップショットから別の名前空間に復元する
カスタム リソース (CR) ファイルを使用して、スナップショットからデータを別の名前空間または元のソース名前空間に復元できます。 SnapshotRestore CR を使用してスナップショットを別の名前空間に復元すると、 Trident Protect はアプリケーションを新しい名前空間に復元し、復元されたアプリケーションのアプリケーション CR を作成します。復元されたアプリケーションを保護するには、オンデマンド バックアップまたはスナップショットを作成するか、保護スケジュールを確立します。
|
|
SnapshotRestoreは、 `spec.storageClassMapping`属性ですが、ソース ストレージ クラスと宛先ストレージ クラスが同じストレージ バックエンドを使用する場合のみです。復元しようとすると、 `StorageClass`異なるストレージ バックエンドを使用する場合、復元操作は失敗します。 |
AWS セッション トークンの有効期限が、長時間実行される S3 復元操作に十分であることを確認します。復元操作中にトークンの有効期限が切れると、操作が失敗する可能性があります。
-
参照 "AWS API ドキュメント"現在のセッション トークンの有効期限を確認する方法の詳細については、こちらをご覧ください。
-
参照 "AWS IAM ドキュメント"AWS リソースの認証情報の詳細については、こちらをご覧ください。
-
カスタムリソース(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の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`引数は、名前空間とスナップショット名を次の形式で使用します。 `<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> -
スナップショットから元の名前空間に復元する
いつでもスナップショットを元の名前空間に復元できます。
AWS セッション トークンの有効期限が、長時間実行される S3 復元操作に十分であることを確認します。復元操作中にトークンの有効期限が切れると、操作が失敗する可能性があります。
-
参照 "AWS API ドキュメント"現在のセッション トークンの有効期限を確認する方法の詳細については、こちらをご覧ください。
-
参照 "AWS IAM ドキュメント"AWS リソースの認証情報の詳細については、こちらをご覧ください。
-
カスタムリソース(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の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
-
括弧内の値を環境の情報に置き換えて、スナップショットを元の名前空間に復元します。例えば:
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}'