Trident Protectを使用してアプリケーションを移行する
バックアップ データを復元することで、アプリケーションをクラスター間または異なるストレージ クラスに移行できます。
|
|
アプリケーションを移行すると、アプリケーション用に設定されたすべての実行フックもアプリケーションとともに移行されます。リストア後の実行フックが存在する場合、リストア処理の一部として自動的に実行されます。 |
バックアップとリストアの処理
次のシナリオでバックアップおよびリストア処理を実行するには、特定のバックアップおよびリストアタスクを自動化できます。
同じクラスタにクローンする
アプリケーションを同じクラスタにクローニングするには、Snapshotまたはバックアップを作成し、同じクラスタにデータをリストアします。
-
次のいずれかを実行します。
-
同じクラスタで、スナップショットを作成したかバックアップを作成したかに応じて、次のいずれかを実行します:
別のクラスタにクローンする
アプリケーションを別のクラスターに複製するには(クラスター間複製を実行する)、ソース クラスターでバックアップを作成し、そのバックアップを別のクラスターに復元します。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ドキュメント"で定義されているリソースの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> -