Skip to main content
本繁體中文版使用機器翻譯,譯文僅供參考,若與英文版本牴觸,應以英文版本為準。

使用Trident Protect 定義管理應用程式

貢獻者 netapp-mwallis netapp-shwetav Copilot netapp-aruldeepa

您可以透過建立應用程式 CR 和關聯的 AppVault CR 來定義要使用Trident Protect 管理的應用程式。

建立 AppVault CR

您需要建立一個 AppVault CR,該 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*: ( _required )應用程式自訂資源的名稱。請注意您選擇的名稱,因為保護作業所需的其他 CR 檔案都會參照此值。

      • * spec.includedNamespaces*: ( _required )使用命名空間和標籤選取器來指定應用程式使用的命名空間和資源。應用程式命名空間必須是此清單的一部分。標籤選取器為選用項目,可用於篩選每個指定命名空間內的資源。

      • * spec.includedClusterScopedResources*: ( Optional )使用此屬性來指定要包含在應用程式定義中的叢集範圍資源。此屬性可讓您根據這些資源的群組,版本,種類和標籤來選取這些資源。

        • groupVersionKind :( _required _ )指定叢集範圍資源的 API 群組,版本及種類。

        • *labelSelector * :( Optional )根據叢集範圍的資源標籤來篩選資源。

      • metadata.annotations.protect.trident.netapp.io/skip-vm-freeze: (可選) 此註解僅適用於從虛擬機定義的應用程序,例如 KubeVirt 環境,其中檔案系統凍結發生在快照之前。指定此應用程式在快照期間是否可以寫入檔案系統。如果設定為 true,應用程式將忽略全域設置,並且可以在快照期間寫入檔案系統。如果設定為 false,應用程式將忽略全域設置,並且在快照期間檔案系統將被凍結。如果指定了註解,但應用程式定義中沒有虛擬機,則忽略該註解。如未特別說明,則申請流程如下:"全球Trident Protect 冷凍設置"

如果您需要在建立應用程式之後套用此註釋,可以使用下列命令:

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 中定義的資源。新增下列資源配置工具參數、以定義要納入或排除的資源:

      • resourceFilter.resourceMatchers :一組 resourceMatcher 物件。如果您在此陣列中定義多個元素,它們會比對為 OR 作業,而每個元素(群組,種類,版本)內的欄位會比對為 AND 作業。

        • resourceMatchers[].group :( Optional )要篩選的資源群組。

        • resourceMatchers[].cher :( Optional )要篩選的資源種類。

        • resourceMatchers[].version :( Optional )要篩選的資源版本。

        • 要篩選之資源的 Kubernetes metadata.name 欄位中的 * resourceMatchers[].names* :( Optional )名稱。

        • 要篩選之資源的 Kubernetes metadata.name 欄位中的 * resourceMatchers[].names* :( Optional )命名空間。

        • 資源的 Kubernetes metadata.name 欄位中的 *resourceMatchers[].labelSelectors * :( Optional ) Label 選取器字串,如中所定義 "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 Protect 冷凍設置"

    若要在使用 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"]}]'