Skip to main content
简体中文版经机器翻译而成,仅供参考。如与英语版出现任何冲突,应以英语版为准。

使用Trident Protect定义要管理的应用程序

贡献者 netapp-mwallis netapp-shwetav netapp-aruldeepa

您可以通过创建应用程序CR和关联的Trident Vault CR来定义要使用AppProtect管理的应用程序。

创建AppVault CR

您需要创建一个AppVault CR、以便在对应用程序执行数据保护操作时使用、并且AppVault CR需要驻留在安装了Trident Protect的集群上。AppVault CR特定于您的环境;有关AppVault CRS的示例、请参见"AppVault自定义资源。"

定义应用程序

您需要定义要使用Trident Protect管理的每个应用程序。您可以通过手动创建应用程序CR或使用Trident Protect命令行界面来定义要管理的应用程序。

使用CR添加应用程序
步骤
  1. 创建目标应用程序CR文件:

    1. 创建自定义资源(CR)文件并将其命名(例如 maria-app.yaml)。

    2. 配置以下属性:

      • metadata.name:(required_)应用程序自定义资源的名称。请注意您选择的名称、因为保护操作所需的其他CR文件会引用此值。

      • 。spec.includedNamespaces:(required_)使用命名空间和标签选择器指定应用程序使用的命名空间和资源。应用程序命名空间必须属于此列表。标签选择器是可选的、可用于筛选每个指定命名空间中的资源。

      • 。spec.includedClusterScopedResources:(可 选)使用此属性指定要包含在应用程序定义中的集群范围资源。此属性允许您根据资源的组、版本、种类和标签来选择这些资源。

        • groupVersionKind:(required)指定集群范围资源的API组、版本和类型。

        • labelSelecter:(可 选)根据集群范围的资源的标签对其进行筛选。

      • 。metadata.annotations.protect.trident.netapp.io/skip-vm-freeze:(可 选)此标注仅适用于从虚拟机定义的应用程序、例如在KubeVirt环境中、文件系统在快照之前冻结。指定此应用程序是否可以在快照期间写入文件系统。如果设置为true、则应用程序将忽略全局设置、并可在快照期间写入文件系统。如果设置为false、则应用程序将忽略全局设置、并且文件系统会在快照期间冻结。如果指定了此参数、但应用程序定义中没有虚拟机、则会忽略此标注。如果未指定,则应用程序将遵循"全局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.resourceSourcedionCritera:(筛选时需要)使用 `Include`或包含或 `Exclude`排除资源匹配备程序中定义的资源。添加以下resourceMatchers参数以定义要包括或排除的资源:

      • resourceFilter.resourceMatcher:resourceMatcher对象数组。如果在此数组中定义多个元素,它们将作为OR操作进行匹配,每个元素(组、种类、版本)中的字段将作为AND操作进行匹配。

        • resourceMatcher[].group:(可 选)要筛选的资源的组。

        • resourceMatcher[].KIND:(可 选)要筛选的资源种类。

        • resourceMatcher[].version:(可 选)要筛选的资源版本。

        • resourceMatcher[].names:(可 选)要筛选的资源的Kubernetes metadata.name字段中的名称。

        • resourceMatcher[].namespies:(可 选)要筛选的资源的Kubernetes metadata.name字段中的命名空间。

        • *resourceMatcher[].labelSelectors *:(可 选)资源的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,则应用程序将忽略全局设置,并可在快照期间写入文件系统。如果将其设置为 false,则应用程序将忽略全局设置,并且文件系统会在快照期间冻结。如果使用标注、但应用程序定义中没有虚拟机、则会忽略标注。如果不使用标注,则应用程序将遵循"全局Trident保护冻结设置"

    要在使用命令行界面创建应用程序时指定标注、可以使用标志。 --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"]}]'