本頁面說明如何使用 ProtectedApplication
資源,在 Google Distributed Cloud (GDC) 氣隙環境中自訂備份和還原作業的行為。
本頁說明的步驟為選用步驟,不影響工作負載的備份和還原設定。ProtectedApplication
資源是命名空間中的選用 Kubernetes 資源,可自訂個別有狀態應用程式的備份和還原作業。如果沒有 ProtectedApplication
資源,則適用下列限制:
- 您將備份和還原範圍的精細程度限制在命名空間層級。
- 備份執行期間,工作負載不會發生排清和靜止作業。這可能會導致還原後,具有多個磁碟的虛擬機器無法保持當機一致性。
ProtectedApplication
資源是選用的 Kubernetes 命名空間資源,用於自訂個別有狀態應用程式的備份和還原作業。ProtectedApplication
資源會定義哪些 Kubernetes 資源屬於應用程式例項。您可以使用 kubectl
指令手動設定專門的協調程序,在下列情況下備份及還原這些應用程式:
- 識別命名空間中的一組資源,這些資源可能會獨立於該命名空間中的其他資源進行備份或還原。「命名空間」
ProtectedApplication
是您可為備份或還原範圍識別的最精細命名空間實體。 - 每當
ProtectedApplication
屬於備份範圍時,提供專門的備份協調作業。具體來說,如果ProtectedApplication
包含PersistentVolumeClaim
(PVC) 資源 (直接或透過StatefulSet
中的範本),您可以在備份磁碟區前後執行 hook。Hook 是在應用程式容器中執行的指令。這些掛鉤通常用於排清、靜止或取消靜止作業,並提供應用程式一致性備份。
事前準備
如要使用 ProtectedApplication
資源,您必須具備下列條件:
- 您必須先定義
ProtectedApplication
資源,才能建立備份方案。詳情請參閱「規劃備份作業集」。 必要的身分與存取權角色:
- 平台管理員 (PA) 使用者:
- 使用者叢集備份管理員:管理使用者叢集中的備份和還原方案等備份資源。請要求機構 IAM 管理員授予您「使用者叢集備份管理員」角色 (
user-cluster-backup-admin
)。
- 使用者叢集備份管理員:管理使用者叢集中的備份和還原方案等備份資源。請要求機構 IAM 管理員授予您「使用者叢集備份管理員」角色 (
- 適用於應用程式運算子 (AO) 使用者:
- 備份建立者:建立手動備份及還原。請專案 IAM 管理員授予您備份建立者 (
backup-creator
) 角色。
- 備份建立者:建立手動備份及還原。請專案 IAM 管理員授予您備份建立者 (
- 詳情請參閱「角色定義」。
- 平台管理員 (PA) 使用者:
部署受保護的應用程式資源
以下是 Deployment
規格的範例,其中包含 ProtectedApplication
資源,可在備份期間備份與應用程式相關聯的所有資源,並在還原期間還原所有資源:
apiVersion: v1
kind: Namespace
metadata:
name: "applications"
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: protected-application-deployment
namespace: applications
labels:
app: protected
spec:
selector:
matchLabels:
app: nginx
replicas: 2
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: unprotected-application-deployment
namespace: applications
labels:
app: unprotected
spec:
selector:
matchLabels:
app: nginx
replicas: 2
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
---
apiVersion: gkebackup.gke.io/v1
kind: ProtectedApplication
metadata:
name: protected-application-test
namespace: applications
spec:
applicationName: protectedApplication
resourceSelection:
type: Selector
selector:
matchLabels:
app: protected
components:
- name: protect-application-deployment
resourceKind: Deployment
resourceNames:
- protected-application-deployment
strategy:
type: BackupAllRestoreAll
在 backupScope
的 selectedApplications
清單中指定 ProtectedApplication
。例如:
apiVersion: backup.gdc.goog/v1
kind: BackupPlan
metadata:
name: protected-application-backupplan-test
namespace: applications
spec:
clusterName: "cluster-sample"
backupSchedule:
cronSchedule: "*/30 * * * *"
paused: true
backupConfig:
backupScope:
selectedApplications:
namespacedNames:
- name: protected-application-test
namespace: applications
backupRepository: "backup-repository"
retentionPolicy:
backupDeleteLockDays: 10
backupRetainDays: 10
這個範例包含下列值:
值 | 說明 |
---|---|
resourceSelection |
定義如何識別屬於受保護應用程式的資源:
|
components |
受保護應用程式的元件清單,例如部署作業或有狀態集:
|
後續步驟
- 如要選取受保護的應用程式策略,請參閱受保護的應用程式策略。