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

新增和保護 Kubernetes 應用程式

貢獻者 netapp-mwallis

NetApp Backup and Recovery讓您輕鬆發現 Kubernetes 集群,而無需產生和上傳 kubeconfig 檔案。您可以使用從NetApp Console使用者介面複製的簡單命令連接 Kubernetes 叢集並安裝所需的軟體。

所需的NetApp Console角色

組織管理員或SnapCenter管理員。"了解NetApp Backup and Recovery存取角色""了解所有服務的NetApp Console存取角色"

新增並保護新的 Kubernetes 應用程式

保護 Kubernetes 應用程式的第一步是在NetApp Backup and Recovery中建立應用程式。建立應用程式時,您會讓控制台了解 Kubernetes 叢集上正在執行的應用程式。

開始之前

在新增和保護 Kubernetes 應用程式之前,您需要"發現 Kubernetes 工作負載"

使用 Web UI 新增應用程式
步驟
  1. 在NetApp Backup and Recovery中,選擇 Inventory

  2. 選擇一個 Kubernetes 實例,然後選擇「檢視」以查看與該實例關聯的資源。

  3. 選擇“應用程式”標籤。

  4. 選擇*建立應用程式*。

  5. 輸入應用程式的名稱。

  6. 或者,選擇以下任意欄位來搜尋您想要保護的資源:

    • 關聯集群

    • 關聯的命名空間

    • 資源類型

    • 標籤選擇器

  7. (可選)選擇「叢集範圍資源」以選擇任何在叢集層級範圍限定的資源。如果包含這些資源,它們會在建立應用程式時新增到應用程式中。

  8. 或者,選擇“搜尋”以根據您的搜尋條件尋找資源。

    註 控制台不會儲存搜尋參數或結果;這些參數用於在選定的 Kubernetes 叢集中搜尋可包含在應用程式中的資源。
  9. 控制台顯示符合您的搜尋條件的資源清單。

  10. 如果清單包含您想要保護的資源,請選擇「下一步」。

  11. (可選)在「策略」區域中,選擇現有保護策略來保護應用程序,或建立新策略。如果不選擇策略,則建立的應用程式將不帶保護策略。你可以"新增保護策略"之後。

  12. 在*Prescripts and postscripts*區域中,啟用並配置您想要在備份操作之前或之後執行的任何prescript或postscript執行掛鉤。若要啟用處方或附言,您必須至少已建立了一個"執行鉤子模板"

  13. 選擇“創建”。

結果

應用程式已建立並出現在 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:(選用)使用此註釋指示 Backup and Recovery 保護或停止保護應用程式。可能的值為 protect`或 `unprotect

      • protect.trident.netapp.io/protection-policy-name:(選用)使用此註解指定要用於保護此應用程式的 Backup and Recovery 保護原則名稱。此保護原則必須已存在於 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 運算匹配,每個元素內的欄位(group、kind、version)之間按 AND 運算匹配。

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

        • resourceMatchers[].kind:(可選)要篩選的資源類型。

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

        • resourceMatchers[].names:(可選)要過濾的資源的 Kubernetes metadata.name 欄位中的名稱。

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

        • resourceMatchers[].labelSelectors:(可選)資源在 Kubernetes metadata.name 欄位中定義的標籤選擇器字串 "Kubernetes 說明文件"。例如: "trident.netapp.io/os=linux"

          註 當兩者 resourceFilterlabelSelector 同時使用時, 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