アプリケーションの移行
バックアップデータまたはSnapshotデータを別のクラスタまたはストレージクラスにリストアすることで、クラスタ間またはストレージクラス間でアプリケーションを移行できます。
アプリケーションを移行すると、そのアプリケーション用に構成されたすべての実行フックがアプリケーションとともに移行されます。リストア後の実行フックがある場合は、リストア処理の一環として自動的に実行されます。 |
バックアップとリストアの処理
次のシナリオでバックアップとリストアの処理を実行するには、特定のバックアップとリストアのタスクを自動化します。
同じクラスタにクローニング
アプリケーションを同じクラスタにクローニングするには、Snapshotまたはバックアップを作成し、同じクラスタにデータをリストアします。
-
次のいずれかを実行します。
-
Snapshotとバックアップのどちらを作成したかに応じて、同じクラスタで次のいずれかを実行します。
別のクラスタにクローニング
アプリケーションを別のクラスタにクローニングする(クラスタ間クローニングを実行する)には、Snapshotまたはバックアップを作成し、データを別のクラスタにリストアします。デスティネーションクラスタにTrident protectがインストールされていることを確認します。
-
次のいずれかを実行します。
-
バックアップまたはSnapshotを含むオブジェクトストレージバケットのAppVault CRがデスティネーションクラスタで設定されていることを確認します。
-
Snapshotとバックアップのどちらを作成したかに応じて、デスティネーションクラスタで次のいずれかを実行します。
あるストレージクラスから別のストレージクラスへのアプリケーションの移行
スナップショットを別のデスティネーションストレージクラスにリストアすることで、あるストレージクラスから別のストレージクラスにアプリケーションを移行できます。
たとえば、次のようになります(リストア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*:(required)このカスタムリソースの名前。環境に適した一意の適切な名前を選択します。
-
* spec.appArchivePath *:スナップショットの内容が格納されているAppVault内のパス。このパスを検索するには、次のコマンドを使用します。
kubectl get snapshots <my-snapshot-name> -n trident-protect -o jsonpath='{.status.appArchivePath}'
-
* spec.appVaultRef *:(required)スナップショットコンテンツが格納されているAppVaultの名前。
-
* spec.namespaceMapping*:リストア処理のソースネームスペースとデスティネーションネームスペースのマッピング。および `my-destination-namespace`を、使用している環境の情報に置き換え `my-source-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パラメータを追加して、追加または除外するリソースを定義します。 -
* resourceMatchers.group*:(_Optional _)フィルタリングするリソースのグループ。
-
*resourceMatchers.kind *:(_Optional _)フィルタリングするリソースの種類。
-
resourceMatchers.version:(Optional)フィルタリングするリソースのバージョン。
-
* resourceMatchers.names*:(_Optional _)フィルタリングするリソースのKubernetes metadata.nameフィールド内の名前。
-
* resourceMatchers.namespaces*:(_Optional _)フィルタリングするリソースのKubernetes metadata.nameフィールド内の名前空間。
-
*resourceMatchers.labelSelectors *:(optional)で定義されているリソースのKubernetes metadata.nameフィールドのラベルセレクタ文字列 "Kubernetes のドキュメント"。例:
"trident.netapp.io/os=linux"
。例:
spec: resourceFilter: resourceSelectionCriteria: "include" resourceMatchers: group: my-resource-group kind: my-resource-kind version: my-resource-version 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`引数では、という形式のネームスペースと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>
-