カスタムリソースを使用した Kubernetes アプリケーションのリストア
カスタム リソースを使用して、スナップショットまたはバックアップからアプリケーションを復元できます。アプリケーションを同じクラスタに復元する場合、既存のスナップショットからの復元の方が高速になります。
|
|
|
バックアップを別の名前空間に復元する
BackupRestore CR を使用して異なる名前空間にバックアップを復元すると、NetApp Backup and Recovery はアプリケーションを新しい名前空間に復元し、復元されたアプリケーションのアプリケーション CR を作成します。復元されたアプリケーションを保護するには、オンデマンドバックアップまたはスナップショットを作成するか、保護スケジュールを確立します。
|
|
|
AWS セッショントークンの有効期限が、長時間実行される s3 復元処理に十分であることを確認します。復元処理中にトークンの有効期限が切れると、処理が失敗する可能性があります。
-
現在のセッショントークンの有効期限を確認する方法の詳細については、 "AWS API ドキュメント"を参照してください。
-
"AWS IAM ドキュメント"AWS リソースの認証情報の詳細については、こちらを参照してください。
|
|
Kopia をデータ ムーバーとして使用してバックアップを復元する場合、オプションで CR に注釈を指定して、Kopia が使用する一時ストレージの動作を制御できます。 "Kopiaのドキュメント"設定できるオプションの詳細については、こちらを参照してください。 |
-
カスタムリソース(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
バックアップを元の名前空間に復元する
いつでもバックアップを元の名前空間に復元できます。
AWS セッショントークンの有効期限が、長時間実行される s3 復元処理に十分であることを確認します。復元処理中にトークンの有効期限が切れると、処理が失敗する可能性があります。
-
現在のセッショントークンの有効期限を確認する方法の詳細については、 "AWS API ドキュメント"を参照してください。
-
"AWS IAM ドキュメント"AWS リソースの認証情報の詳細については、こちらを参照してください。
|
|
Kopia をデータ ムーバーとして使用してバックアップを復元する場合、オプションで CR に注釈を指定して、Kopia が使用する一時ストレージの動作を制御できます。 "Kopiaのドキュメント"設定できるオプションの詳細については、こちらを参照してください。 |
-
カスタムリソース(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
バックアップを別のクラスタにリストアする
元のクラスタに問題がある場合は、バックアップを別のクラスタにリストアできます。
|
|
|
次の前提条件が満たされていることを確認してください:
-
デスティネーション クラスタに Trident Protect がインストールされている。
-
デスティネーション クラスタは、バックアップが保存されているソース クラスタと同じAppVaultのバケット パスにアクセスできます。
-
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
スナップショットを別のネームスペースにリストアする
カスタム リソース (CR) ファイルを使用して、スナップショットからデータを別の名前空間または元のソース名前空間に復元できます。SnapshotRestore CR を使用してスナップショットを別の名前空間に復元すると、Backup and Recovery はアプリケーションを新しい名前空間に復元し、復元されたアプリケーションのアプリケーション CR を作成します。復元されたアプリケーションを保護するには、オンデマンド バックアップまたはスナップショットを作成するか、保護スケジュールを設定します。
|
|
|
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ドキュメント"で定義されているリソースの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
スナップショットを元の名前空間に復元する
いつでもスナップショットを元の名前空間にリストアできます。
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ドキュメント"で定義されているリソースの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