Skip to main content
日本語は機械翻訳による参考訳です。内容に矛盾や不一致があった場合には、英語の内容が優先されます。

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

共同作成者 netapp-aruldeepa

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

メモ アプリケーションを移行すると、アプリケーション用に構成されたすべての実行フックもアプリケーションとともに移行されます。復元後の実行フックが存在する場合、復元操作の一部として自動的に実行されます。

バックアップと復元操作

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

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

アプリケーションを同じクラスターに複製するには、スナップショットまたはバックアップを作成し、データを同じクラスターに復元します。

手順
  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の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"]
  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>