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

Kubernetes アプリケーションの追加と保護

共同作成者 netapp-mwallis

NetApp Backup and Recoveryを使用すると、Web UIを介して、またはカスタムリソースファイルを適用して、Kubernetesアプリケーションを追加できます。アプリケーションは、標準のKubernetesリソースで構成されるネームスペースベース、または1つ以上の仮想マシンで構成されるVMベースにすることができます。

新しいKubernetesアプリケーションを追加して保護する

Kubernetesアプリケーションを保護する最初のステップは、NetApp Backup and Recovery内でアプリケーションを作成することです。アプリケーションを作成すると、Kubernetesクラスター上で実行されているアプリケーションがBackup and Recoveryに認識されるようになります。

開始する前に

Kubernetesアプリケーションを追加して保護する前に、"Kubernetesワークロードを発見する"

名前空間ベースのアプリ(Web UI)を追加する
手順
  1. NetApp Backup and Recoveryで、Inventory を選択します。

  2. Kubernetes インスタンスを選択し、[表示] を選択して、そのインスタンスに関連付けられているリソースを表示します。

  3. *アプリケーション*タブを選択します。

  4. *アプリケーションの作成*を選択します。

  5. アプリケーションの名前を入力します。

  6. *クラスター*リストから、アプリケーションをホストしているクラスターを選択します。

  7. *フィルター*で*名前空間*を選択すると、アプリケーションを名前空間でフィルタリングできます。

  8. 必要に応じて、次のいずれかのフィールドを選択して、保護するリソースを検索します。

    • 関連する名前空間

    • リソースの種類

    • ラベルセレクター

      1. クラスターレベルでスコープが設定されたリソースを追加するには、*クラスタースコープのリソースを追加*を選択します。それらを含めると、アプリケーション作成時にアプリケーションに追加されます。

      2. 必要に応じて、「検索」を選択し、検索条件に基づいてリソースを検索します。

        メモ NetApp Backup and Recoveryでは、検索パラメータや検索結果は保存されません。これらのパラメータは、選択したKubernetesクラスタ内でアプリケーションに含めることができるリソースを検索するために使用されます。
  9. Backup and Recoveryでは、検索条件に一致するリソースの一覧が表示されます。

  10. 保護するリソースがリストに含まれている場合は、[次へ] を選択します。

  11. 必要に応じて、「ポリシー」領域で、アプリケーションを保護するための既存の保護ポリシーを選択するか、新しいポリシーを作成します。ポリシーを選択しない場合、アプリケーションは保護ポリシーなしで作成されます。あなたはできる"保護ポリシーを追加する"後で。

  12. *プレスクリプトとポストスクリプト*領域で、バックアップ操作の前または後に実行するプレスクリプトまたはポストスクリプトの実行フックを有効にして構成します。プレスクリプトまたはポストスクリプトを有効にするには、少なくとも1つ作成しておく必要があります。"実行フックテンプレート"

  13. *作成*を選択します。

結果

アプリケーションが作成され、Kubernetesインベントリの*Applications*タブにあるアプリケーション一覧に表示されます。NetApp Backup and Recoveryは、設定に基づいてアプリケーションを保護し、その進行状況は*Monitoring*エリアで確認できます。

VMベースのアプリ(Web UI)を追加する
手順
  1. NetApp Backup and Recoveryで、Inventory を選択します。

  2. Kubernetes インスタンスを選択し、[表示] を選択して、そのインスタンスに関連付けられているリソースを表示します。

  3. *アプリケーション*タブを選択します。

  4. *アプリケーションの作成*を選択します。

  5. アプリケーションの名前を入力します。

  6. *クラスター*リストから、アプリケーションをホストしているクラスターを選択します。

  7. *フィルター*で*仮想マシン*を選択すると、VMベースのアプリケーションを作成できます。

  8. 名前空間を選択し、必要に応じてラベルセレクタを含めることで、アプリケーションに追加する仮想マシンを検索します。

    メモ リストから仮想マシンを選択した場合、アプリケーション定義は静的になります。つまり、後から新しい仮想マシンをアプリケーションに追加することはできません(追加および保護するには、アプリケーションを編集する必要があります)。ラベルセレクタを使用する場合、個々の仮想マシンを選択したり、生成されたリストを編集したりすることはできませんが、後でセレクタに一致する仮想マシンはすべて自動的に含まれ、保護されます。

    選択した仮想マシンが右側のリストに表示されます。

  9. リストに保護する VM が含まれている場合は、* Next * を選択します。

  10. 必要に応じて、「ポリシー」領域で、アプリケーションを保護するための既存の保護ポリシーを選択するか、新しいポリシーを作成します。ポリシーを選択しない場合、アプリケーションは保護ポリシーなしで作成されます。あなたはできる"保護ポリシーを追加する"後で。

  11. *プレスクリプトとポストスクリプト*領域で、バックアップ操作の前または後に実行するプレスクリプトまたはポストスクリプトの実行フックを有効にして構成します。プレスクリプトまたはポストスクリプトを有効にするには、少なくとも1つ作成しておく必要があります。"実行フックテンプレート"

  12. *作成*を選択します。

結果

アプリケーションが作成され、Kubernetes インベントリの アプリケーション タブのアプリケーション リストに表示されます。 NetApp Consoleは設定に基づいてアプリケーションの保護を有効にし、バックアップとリカバリの 監視 領域で進行状況を監視できます。

名前空間ベースのアプリ(CR)を追加する
手順
  1. デスティネーション アプリケーションの CR ファイルを作成します:

    1. カスタムリソース(CR)ファイルを作成し、名前を付けます(例: my-app-name.yaml)。

    2. 次の属性を設定します:

      • metadata.name:(必須)アプリケーションのカスタム リソースの名前。保護操作に必要な他の CR ファイルはこの値を参照するため、選択した名前を書き留めておいてください。

      • spec.includedNamespaces:(必須)ネームスペースとラベルセレクタを使用して、アプリケーションが使用するネームスペースとリソースを指定します。アプリケーションネームスペースはこのリストに含まれている必要があります。ラベルセレクタはオプションであり、指定された各ネームスペース内のリソースをフィルタリングするために使用できます。

      • spec.includedClusterScopedResources:(オプション)この属性を使用して、アプリケーション定義に含めるクラスタスコープのリソースを指定します。この属性を使用すると、グループ、バージョン、種類、ラベルに基づいてこれらのリソースを選択できます。

        • groupVersionKind:(必須)クラスタースコープのリソースの API グループ、バージョン、および種類を指定します。

        • labelSelector:(オプション)ラベルに基づいてクラスタースコープのリソースをフィルタリングします。

    3. 必要に応じて、次のアノテーションを設定します:

      • metadata.annotations.protect.trident.netapp.io/skip-vm-freeze:(オプション)このアノテーションは、KubeVirt環境など、スナップショットの前にファイルシステムのフリーズが発生する仮想マシンから定義されたアプリケーションにのみ適用されます。スナップショット作成中にこのアプリケーションがファイルシステムに書き込みできるかどうかを指定します。trueに設定すると、アプリケーションはグローバル設定を無視し、スナップショット作成中にファイルシステムへの書き込みが可能になります。falseに設定すると、アプリケーションはグローバル設定を無視し、スナップショット作成中はファイルシステムがフリーズします。指定されていても、アプリケーション定義に仮想マシンが含まれていない場合、このアノテーションは無視されます。指定されていない場合、アプリケーションは "グローバル ファイルシステム フリーズ設定"に従います。

      • protect.trident.netapp.io/protection-command:(オプション)この注釈を使用して、NetApp Backup and Recoveryにアプリケーションの保護または保護の停止を指示します。指定可能な値は `protect`または `unprotect`です。

      • protect.trident.netapp.io/protection-policy-name:(オプション)このアノテーションを使用して、このアプリケーションを保護するために使用するNetApp Backup and Recovery保護ポリシーの名前を指定します。この保護ポリシーは、NetApp Backup and Recoveryにすでに存在している必要があります。

アプリケーションがすでに作成された後にこのアノテーションを適用する必要がある場合は、次のコマンドを使用できます:

kubectl annotate application -n <application CR namespace> <application CR name> protect.trident.netapp.io/skip-vm-freeze="true"

+
YAMLの例:

+

apiVersion: protect.trident.netapp.io/v1
kind: Application
metadata:
  annotations:
    protect.trident.netapp.io/skip-vm-freeze: "false"
    protect.trident.netapp.io/protection-command: "protect"
    protect.trident.netapp.io/protection-policy-name: "policy-name"
  name: my-app-name
  namespace: my-app-namespace
spec:
  includedNamespaces:
    - namespace: namespace-1
      labelSelector:
        matchLabels:
          app: example-app
    - namespace: namespace-2
      labelSelector:
        matchLabels:
          app: another-example-app
  includedClusterScopedResources:
    - groupVersionKind:
        group: rbac.authorization.k8s.io
        kind: ClusterRole
        version: v1
      labelSelector:
        matchLabels:
          mylabel: test
  1. オプション)特定のラベルでマークされたリソースを含めるか除外するかを指定するフィルタリングを追加します:

    • resourceFilter.resourceSelectionCriteria:(フィルタリングに必須) `Include`または `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"

          メモ `resourceFilter`と `labelSelector`の両方が使用される場合、 `resourceFilter`が最初に実行され、次に `labelSelector`が結果のリソースに適用されます。

      例:

    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"]
  2. 環境に合わせてアプリケーション CR を作成したら、CR を適用します。例:

    kubectl apply -f my-app-name.yaml