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

アプリケーションの移行

共同作成者

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

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

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

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

同じクラスタにクローニング

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

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

  2. Snapshotとバックアップのどちらを作成したかに応じて、同じクラスタで次のいずれかを実行します。

別のクラスタにクローニング

アプリケーションを別のクラスタにクローニングする(クラスタ間クローニングを実行する)には、Snapshotまたはバックアップを作成し、データを別のクラスタにリストアします。デスティネーションクラスタにTrident protectがインストールされていることを確認します。

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

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

  3. 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を使用したスナップショットのリストア
  1. カスタムリソース(CR)ファイルを作成し、という名前を付け `trident-protect-snapshot-restore-cr.yaml`ます。

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

    • * 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"}]
  3. リストアするアプリケーションの特定のリソースのみを選択する必要がある場合は、特定のラベルが付いたリソースを含めるか除外するフィルタリングを追加します。

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

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

    • `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>