新增和保護 Kubernetes 應用程式
NetApp Backup and Recovery 可讓您透過網頁 UI 或套用自訂資源檔案來新增 Kubernetes 應用程式。應用程式可以是以命名空間為基礎,由標準 Kubernetes 資源組成,或是以 VM 為基礎,由一個或多個虛擬機組成。
組織管理員或SnapCenter管理員。"了解NetApp Backup and Recovery存取角色" 。 "了解所有服務的NetApp Console存取角色" 。
新增並保護新的 Kubernetes 應用程式
保護 Kubernetes 應用程式的第一步是在 NetApp Backup and Recovery 中建立應用程式。建立應用程式後,Backup and Recovery 功能就能辨識 Kubernetes 叢集上正在執行的應用程式。
在新增和保護 Kubernetes 應用程式之前,您需要"發現 Kubernetes 工作負載"。
-
在NetApp Backup and Recovery中,選擇 Inventory。
-
選擇一個 Kubernetes 實例,然後選擇「檢視」以查看與該實例關聯的資源。
-
選擇“應用程式”標籤。
-
選擇*建立應用程式*。
-
輸入應用程式的名稱。
-
從 Cluster 清單中,選擇託管應用程式的叢集。
-
在 Filters 下,選擇 Namespace 以按命名空間篩選應用程式。
-
或者,選擇以下任意欄位來搜尋您想要保護的資源:
-
關聯的命名空間
-
資源類型
-
標籤選擇器
-
選擇 Add cluster-scoped resources 可新增叢集層級的資源。如果選擇新增,這些資源將在建立應用程式時新增到應用程式中。
-
或者,選擇“搜尋”以根據您的搜尋條件尋找資源。
Backup and Recovery 不會儲存搜尋參數或結果;這些參數用於在選定的 Kubernetes 叢集中搜尋可以包含在應用程式中的資源。
-
-
-
Backup and Recovery 會顯示符合您搜尋條件的資源清單。
-
如果清單包含您想要保護的資源,請選擇「下一步」。
-
(可選)在「策略」區域中,選擇現有保護策略來保護應用程序,或建立新策略。如果不選擇策略,則建立的應用程式將不帶保護策略。你可以"新增保護策略"之後。
-
在*Prescripts and postscripts*區域中,啟用並配置您想要在備份操作之前或之後執行的任何prescript或postscript執行掛鉤。若要啟用處方或附言,您必須至少已建立了一個"執行鉤子模板"。
-
選擇“創建”。
應用程式建立完成後,將顯示在 Kubernetes 清單的 Applications 標籤中的應用程式清單中。Backup and Recovery 可根據您的設定保護應用程式,您可以在 Monitoring 區域中監控進度。
-
在NetApp Backup and Recovery中,選擇 Inventory。
-
選擇一個 Kubernetes 實例,然後選擇「檢視」以查看與該實例關聯的資源。
-
選擇“應用程式”標籤。
-
選擇*建立應用程式*。
-
輸入應用程式的名稱。
-
從 Cluster 清單中,選擇託管應用程式的叢集。
-
在 Filters 下,選擇 Virtual machines 以建立基於 VM 的應用程式。
-
透過選擇命名空間並可選擇性地包含標籤選取器,尋找要新增至應用程式的虛擬機器。
如果您從清單中選擇 VM,則應用程式定義是靜態的——之後不會向應用程式新增新的 VM(您需要編輯應用程式才能新增和保護它們)。如果您使用標籤選擇器,則無法選擇個別 VM 或編輯產生的清單,但之後任何與選擇器相符的 VM 都會自動包含在內並受到保護。 選取的虛擬機器會顯示在右側清單中。
-
如果清單中包含您要保護的 VM,請選取 * 下一步 * 。
-
(可選)在「策略」區域中,選擇現有保護策略來保護應用程序,或建立新策略。如果不選擇策略,則建立的應用程式將不帶保護策略。你可以"新增保護策略"之後。
-
在*Prescripts and postscripts*區域中,啟用並配置您想要在備份操作之前或之後執行的任何prescript或postscript執行掛鉤。若要啟用處方或附言,您必須至少已建立了一個"執行鉤子模板"。
-
選擇“創建”。
應用程式已建立並出現在 Kubernetes 清單的 應用程式 標籤中的應用程式清單中。 NetApp Console會根據您的設定啟用對應用程式的保護,並且您可以在備份和還原的*監控*區域中監控進度。
-
建立目的地應用程式 CR 檔案:
-
建立自訂資源(CR)檔案並將其命名為(例如、
my-app-name.yaml)。 -
設定下列屬性:
-
metadata.name:(必填)應用程式自訂資源的名稱。請記住您選擇的名稱,因為保護作業所需的其他 CR 檔案會參照此值。
-
spec.includedNamespaces:(必要)使用命名空間和標籤選擇器來指定應用程式使用的命名空間和資源。應用程式命名空間必須包含在此清單中。標籤選擇器是可選的,可用來篩選每個指定命名空間中的資源。
-
spec.includedClusterScopedResources:(選用)使用此屬性指定要包含在應用程式定義中的叢集範圍資源。此屬性可讓您根據資源的群組、版本、類型和標籤來選擇這些資源。
-
groupVersionKind:(必要)指定叢集範圍資源的 API 群組、版本和類型。
-
labelSelector:(可選)依照標籤篩選叢集範圍的資源。
-
-
-
如有需要,請設定下列註解:
-
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
-
(選用)新增篩選條件,包含或排除標記有特定標籤的資源:
-
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"。當兩者 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"] -
-
建立與您的環境相符的應用程式 CR 後、套用該 CR。例如:
kubectl apply -f my-app-name.yaml