Trident Protectを使用してアプリケーションを移行する
バックアップ データを復元することで、アプリケーションをクラスター間または異なるストレージ クラスに移行できます。
|
|
アプリケーションを移行すると、アプリケーション用に構成されたすべての実行フックもアプリケーションとともに移行されます。復元後の実行フックが存在する場合、復元操作の一部として自動的に実行されます。 |
バックアップと復元操作
次のシナリオでバックアップおよび復元操作を実行するには、特定のバックアップおよび復元タスクを自動化できます。
同じクラスターにクローンする
アプリケーションを同じクラスターに複製するには、スナップショットまたはバックアップを作成し、データを同じクラスターに復元します。
-
次のいずれかを実行します。
-
同じクラスターで、スナップショットを作成したかバックアップを作成したかに応じて、次のいずれかを実行します。
別のクラスターにクローンする
アプリケーションを別のクラスターに複製するには (クラスター間複製を実行する)、ソース クラスターでバックアップを作成し、そのバックアップを別のクラスターに復元します。宛先クラスターにTrident Protect がインストールされていることを確認します。
|
|
異なるクラスタ間でアプリケーションを複製するには、"SnapMirrorレプリケーション" 。 |
-
バックアップを含むオブジェクト ストレージ バケットの AppVault CR が宛先クラスターで設定されていることを確認します。
-
宛先クラスタでは、"バックアップからデータを復元する" 。
アプリケーションをあるストレージ クラスから別のストレージ クラスに移行する
バックアップを宛先ストレージ クラスに復元することで、アプリケーションを 1 つのストレージ クラスから別のストレージ クラスに移行できます。
たとえば、(復元 CR からシークレットを除外する) 次のようにします。
apiVersion: protect.trident.netapp.io/v1
kind: SnapshotRestore
metadata:
name: "${snapshotRestoreCRName}"
spec:
appArchivePath: "${snapshotArchivePath}"
appVaultRef: "${appVaultCRName}"
namespaceMapping:
- destination: "${destinationNamespace}"
source: "${sourceNamespace}"
storageClassMapping:
- destination: "${destinationStorageClass}"
source: "${sourceStorageClass}"
resourceFilter:
resourceMatchers:
kind: Secret
version: v1
resourceSelectionCriteria: exclude
-
カスタムリソース(CR)ファイルを作成し、名前を付けます
trident-protect-snapshot-restore-cr.yaml。 -
作成したファイルで、次の属性を構成します。
-
metadata.name: (必須) このカスタム リソースの名前。環境に合わせて一意かつ適切な名前を選択してください。
-
spec.appArchivePath: スナップショットの内容が保存される AppVault 内のパス。このパスを見つけるには、次のコマンドを使用できます。
kubectl get snapshots <my-snapshot-name> -n trident-protect -o jsonpath='{.status.appArchivePath}' -
spec.appVaultRef: (必須) スナップショットの内容が保存される AppVault の名前。
-
spec.namespaceMapping: 復元操作のソース名前空間から宛先名前空間へのマッピング。交換する `my-source-namespace`そして `my-destination-namespace`あなたの環境からの情報を活用します。
--- apiVersion: protect.trident.netapp.io/v1 kind: SnapshotRestore metadata: name: my-cr-name namespace: trident-protect spec: appArchivePath: my-snapshot-path appVaultRef: appvault-name namespaceMapping: [{"source": "my-source-namespace", "destination": "my-destination-namespace"}]
-
-
オプションとして、復元するアプリケーションの特定のリソースのみを選択する必要がある場合は、特定のラベルでマークされたリソースを含めるか除外するフィルタリングを追加します。
-
resourceFilter.resourceSelectionCriteria: (フィルタリングに必須) 使用 `include or 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> -