Skip to main content
本製品の最新リリースがご利用いただけます。
日本語は機械翻訳による参考訳です。内容に矛盾や不一致があった場合には、英語の内容が優先されます。

Trident Protectを使用してアプリケーションを移行する

バックアップ データを復元することで、アプリケーションをクラスター間または異なるストレージ クラスに移行できます。

メモ アプリケーションを移行すると、アプリケーション用に設定されたすべての実行フックもアプリケーションとともに移行されます。リストア後の実行フックが存在する場合、リストア処理の一部として自動的に実行されます。

バックアップとリストアの処理

次のシナリオでバックアップおよびリストア処理を実行するには、特定のバックアップおよびリストアタスクを自動化できます。

同じクラスタにクローンする

アプリケーションを同じクラスタにクローニングするには、Snapshotまたはバックアップを作成し、同じクラスタにデータをリストアします。

手順
  1. 次のいずれかを実行します。

  2. 同じクラスタで、スナップショットを作成したかバックアップを作成したかに応じて、次のいずれかを実行します:

別のクラスタにクローンする

アプリケーションを別のクラスターに複製するには(クラスター間複製を実行する)、ソース クラスターでバックアップを作成し、そのバックアップを別のクラスターに復元します。Trident Protectがデスティネーション クラスタにインストールされていることを確認してください。

メモ 異なるクラスタ間でアプリケーションを複製するには、"SnapMirrorレプリケーション"を使用します。
手順
  1. "バックアップを作成する"

  2. バックアップを含むオブジェクトストレージバケットのAppVault CRがデスティネーション クラスタで設定されていることを確認します。

  3. デスティネーション クラスタで、"バックアップからデータを復元する"

アプリケーションをあるストレージ クラスから別のストレージ クラスに移行する

バックアップをデスティネーション ストレージ クラスに復元することで、アプリケーションを 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を使用してスナップショットを復元する
手順
  1. カスタムリソース(CR)ファイルを作成し、 `trident-protect-snapshot-restore-cr.yaml`という名前を付けます。

  2. 作成したファイルで、次の属性を設定します:

    • 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"}]
  3. オプションとして、復元するアプリケーションの特定のリソースのみを選択する必要がある場合は、特定のラベルでマークされたリソースを含めるか除外するフィルタリングを追加します:

    • 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"]
  4. `trident-protect-snapshot-restore-cr.yaml`ファイルに正しい値を入力したら、CRを適用します:

    kubectl apply -f trident-protect-snapshot-restore-cr.yaml
CLI を使用してスナップショットを復元する
手順
  1. 括弧内の値を環境の情報に置き換えて、スナップショットを別のネームスペースにリストアします。

    • その 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>