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

Trident Protectで管理用のアプリケーションを定義する

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

AppVault CR を作成します

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

アプリケーションを定義する

Trident Protectで管理する各アプリケーションを定義する必要があります。管理対象アプリケーションを定義するには、アプリケーションCRを手動で作成するか、Trident Protect CLIを使用します。

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

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

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

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

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

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

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

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

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

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

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:(フィルタリングに必須) `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 maria-app.yaml
手順
  1. 次のいずれかの例を使用してアプリケーション定義を作成し、適用します。括弧内の値は、ご使用の環境の情報に置き換えてください。例に示す引数を含むコンマ区切りリストを使用して、アプリケーション定義に名前空間とリソースを含めることができます。

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

    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"]}]'