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

Trident保護で管理アプリケーションを定義

共同作成者 netapp-mwallis netapp-shwetav netapp-aruldeepa

Trident protectで管理するアプリケーションを定義するには、アプリケーションCRおよび関連するAppVault CRを作成します。

AppVault CRの作成

アプリケーションでデータ保護処理を実行するときに使用するAppVault CRを作成する必要があります。また、Trident保護がインストールされているクラスタにAppVault CRを配置する必要があります。AppVault CRはお使いの環境に固有です。AppVault CRSの例については、"AppVaultカスタムリソース。"

アプリケーションの定義

Trident保護で管理するアプリケーションをそれぞれ定義する必要があります。アプリケーションCRを手動で作成するか、Trident保護CLIを使用して、管理対象のアプリケーションを定義できます。

CRを使用したアプリケーションの追加
手順
  1. デスティネーションアプリケーションのCRファイルを作成します。

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

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

      • * metadata.name*:(required)アプリケーションカスタムリソースの名前。保護操作に必要な他のCRファイルがこの値を参照するため、選択した名前をメモします。

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

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

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

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

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

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

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"
  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:(フィルタリングに必要) resourceMatchersで定義されたリソースを使用 `Include`または `Exclude`除外します。次のresourceMatchersパラメータを追加して、追加または除外するリソースを定義します。

      • resourceFilter.resourceMatchers: resourceMatcherオブジェクトの配列。この配列に複数の要素を定義した場合、それらはOR演算として照合され、各要素内のフィールド(グループ、種類、バージョン)はAND演算として照合されます。

        • *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"

          メモ 両方が `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 maria-app.yaml
手順
  1. 次のいずれかの例を使用して、アプリケーション定義を作成して適用します。括弧内の値は、環境の情報に置き換えます。アプリケーション定義に名前空間とリソースを含めるには、例に示す引数をカンマで区切ったリストを使用します。

    必要に応じて、アプリケーションの作成時にアノテーションを使用して、スナップショット中にアプリケーションがファイルシステムに書き込むことができるかどうかを指定できます。これは、スナップショットの前にファイルシステムがフリーズするKubeVirt環境など、仮想マシンから定義されたアプリケーションにのみ該当します。アノテーションをに設定する `true`と、グローバル設定は無視され、Snapshotの作成時にファイルシステムに書き込むことができます。に設定する `false`と、アプリケーションはグローバル設定を無視し、スナップショット中にファイルシステムがフリーズします。アノテーションを使用しても、アプリケーション定義に仮想マシンが含まれていない場合、アノテーションは無視されます。注釈を使用しない場合、アプリケーションはに従います"グローバルTrident保護フリーズ設定"

    CLIを使用してアプリケーションを作成するときにアノテーションを指定するには、フラグを使用し `--annotation`ます。

    • アプリケーションを作成し、ファイルシステムフリーズ動作のグローバル設定を使用します。

      tridentctl-protect create application <my_new_app_cr_name> --namespaces <namespaces_to_include> --csr <cluster_scoped_resources_to_include> --namespace <my-app-namespace>
    • アプリケーションを作成し、ファイルシステムフリーズ動作のローカルアプリケーション設定を構成します。

      tridentctl-protect create application <my_new_app_cr_name> --namespaces <namespaces_to_include> --csr <cluster_scoped_resources_to_include> --namespace <my-app-namespace> --annotation protect.trident.netapp.io/skip-vm-freeze=<"true"|"false">

      使用できます `--resource-filter-include`そして `--resource-filter-exclude`リソースを含めるか除外するかのフラグ `resourceSelectionCriteria`次の例に示すように、グループ、種類、バージョン、ラベル、名前、名前空間などです。

    tridentctl-protect create application <my_new_app_cr_name> --namespaces <namespaces_to_include> --csr <cluster_scoped_resources_to_include> --namespace <my-app-namespace> --resource-filter-include '[{"Group":"apps","Kind":"Deployment","Version":"v1","Names":["my-deployment"],"Namespaces":["my-namespace"],"LabelSelectors":["app=my-app"]}]'