本文档介绍了如何使用 ProtectedApplication 资源在 Google Distributed Cloud (GDC) 网闸隔离配置中自定义备份和恢复行为。
这些步骤是可选的,并非成功为工作负载配置备份和恢复所必需。ProtectedApplication 资源是命名空间中的可选 Kubernetes 资源,用于自定义各个有状态应用的备份和恢复。如果没有 ProtectedApplication 资源,则存在以下限制:
- 您将备份和恢复范围的粒度限制在命名空间级别。
- 在备份执行期间,工作负载不会发生刷新和静默操作。这可能会导致具有多个磁盘的虚拟机在恢复后不具有崩溃一致性。
ProtectedApplication 资源是可选的 Kubernetes 命名空间资源,用于自定义各个有状态应用的备份和恢复。ProtectedApplication 资源定义了哪些 Kubernetes 资源属于应用实例。您可以使用 kubectl 命令手动设置专用编排,以便在以下场景中创建这些应用的备份和恢复:
- 识别命名空间中可独立于该命名空间中的其他资源进行备份或恢复的一组资源。
ProtectedApplication是您可以为备份或恢复范围标识的最精细的命名空间实体。 - 每当
ProtectedApplication属于备份范围时,提供专门的备份编排。具体而言,如果ProtectedApplication直接或通过StatefulSet中的模板包含PersistentVolumeClaim(PVC) 资源,您可以在备份卷之前和之后运行钩子。钩子是在应用容器中运行的命令。这些钩子通常用于清空操作和对操作进行静默或取消静默处理,从而提供应用一致性备份。
准备工作
在创建备份方案之前,请先定义 ProtectedApplication 资源。如需了解详情,请参阅规划一组备份。
申请 IAM 角色
如需使用 ProtectedApplication 资源,请让您的 IAM 组织管理员或 IAM 项目管理员为您授予以下角色之一:
用户集群备份管理员 (
user-cluster-backup-admin):在用户集群中创建、获取、列出、监视、更新、修补和删除备份资源(例如备份和恢复方案)。请与您的 IAM 组织管理员联系,申请此角色。Backup Creator (
backup-creator):创建、获取、列出、监视、更新、修补和删除手动备份请求和手动恢复请求。请与您的 IAM 项目管理员联系,请求授予此角色。
部署受保护的应用资源
以下 yaml 代码段是一个 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 |
受保护应用的组件列表,例如部署或有状态集:
|
后续步骤
- 如需选择受保护的应用策略,请参阅受保护的应用策略。