新增和保護 Kubernetes 應用程式
NetApp Backup and Recovery讓您輕鬆發現 Kubernetes 集群,而無需產生和上傳 kubeconfig 檔案。您可以使用從NetApp Console使用者介面複製的簡單命令連接 Kubernetes 叢集並安裝所需的軟體。
組織管理員或SnapCenter管理員。"了解NetApp Backup and Recovery存取角色" 。 "了解所有服務的NetApp Console存取角色" 。
新增並保護新的 Kubernetes 應用程式
保護 Kubernetes 應用程式的第一步是在NetApp Backup and Recovery中建立應用程式。建立應用程式時,您會讓控制台了解 Kubernetes 叢集上正在執行的應用程式。
在新增和保護 Kubernetes 應用程式之前,您需要"發現 Kubernetes 工作負載"。
-
在NetApp Backup and Recovery中,選擇 Inventory。
-
選擇一個 Kubernetes 實例,然後選擇「檢視」以查看與該實例關聯的資源。
-
選擇“應用程式”標籤。
-
選擇*建立應用程式*。
-
輸入應用程式的名稱。
-
或者,選擇以下任意欄位來搜尋您想要保護的資源:
-
關聯集群
-
關聯的命名空間
-
資源類型
-
標籤選擇器
-
-
(可選)選擇「叢集範圍資源」以選擇任何在叢集層級範圍限定的資源。如果包含這些資源,它們會在建立應用程式時新增到應用程式中。
-
或者,選擇“搜尋”以根據您的搜尋條件尋找資源。
控制台不會儲存搜尋參數或結果;這些參數用於在選定的 Kubernetes 叢集中搜尋可包含在應用程式中的資源。 -
控制台顯示符合您的搜尋條件的資源清單。
-
如果清單包含您想要保護的資源,請選擇「下一步」。
-
(可選)在「策略」區域中,選擇現有保護策略來保護應用程序,或建立新策略。如果不選擇策略,則建立的應用程式將不帶保護策略。你可以"新增保護策略"之後。
-
在*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