本页面介绍了如何使用 ProtectedApplication 资源来自定义 Google Distributed Cloud (GDC) 气隙环境中的备份和恢复行为。
本页面介绍的步骤是可选的,并非成功配置工作负载的备份和恢复所必需的步骤。ProtectedApplication
资源是命名空间中的可选 Kubernetes 资源,用于自定义各个有状态应用的备份和恢复。如果没有 ProtectedApplication
资源,则适用以下限制:
- 您将备份和恢复范围的粒度限制为命名空间级。
- 在备份执行期间,工作负载上不会发生清空和静默操作。这可能会导致恢复后具有多个磁盘的虚拟机不具有崩溃一致性。
ProtectedApplication 资源是可选的 Kubernetes 命名空间资源,用于自定义各个有状态应用的备份和恢复。
ProtectedApplication
资源定义了哪些 Kubernetes 资源属于应用实例。在以下场景中,您可以使用 kubectl 命令手动设置专用编排,以创建这些应用的备份和恢复:
- 用于标识命名空间中的一组资源,这些资源可以独立于该命名空间中的其他资源进行备份或恢复。
ProtectedApplication是您可以为备份或恢复范围标识的最细粒度的命名空间实体。 - 用于在
ProtectedApplication属于备份范围时提供专用备份编排。特别是,如果ProtectedApplication直接或通过StatefulSet中的模板包含PersistentVolumeClaim(PVC) 资源,您可以在备份卷之前和之后运行钩子。 钩子是在应用容器中运行的命令。这些钩子通常用于清空、静默或取消静默操作,并提供应用一致性备份。
准备工作
如需使用 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
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 |
受保护应用的组件列表,例如部署或有状态集:
|
后续步骤
- 如需选择受保护的应用策略,请参阅受保护的应用策略。