이 페이지에서는 ProtectedApplication 리소스를 사용하여 Google Distributed Cloud (GDC) 에어 갭 환경에서 백업 및 복원의 동작을 맞춤설정하는 방법을 설명합니다.
이 페이지에 설명된 단계는 선택사항이며 워크로드의 백업 및 복원을 성공적으로 구성하는 데 필요하지 않습니다. ProtectedApplication 리소스는 개별 스테이트풀(Stateful) 애플리케이션의 백업 및 복원을 맞춤설정하는 네임스페이스의 선택적 Kubernetes 리소스입니다. ProtectedApplication 리소스가 없으면 다음 제한사항이 적용됩니다.
- 백업 및 복원 범위 세부사항을 네임스페이스 수준으로 제한합니다.
- 백업 실행 중에 워크로드에서 플러시 및 정지 작업이 발생하지 않습니다.이로 인해 복원 후 디스크가 여러 개인 가상 머신이 비정상 종료 일관성을 유지하지 못할 수 있습니다.
ProtectedApplication 리소스는 개별 스테이트풀(Stateful) 애플리케이션의 백업 및 복원을 맞춤설정하는 데 사용되는 선택적 Kubernetes 네임스페이스 리소스입니다.
ProtectedApplication 리소스는 애플리케이션 인스턴스에 속하는 Kubernetes 리소스를 정의합니다. kubectl 명령어를 사용하여 다음과 같은 시나리오에서 이러한 애플리케이션의 백업 및 복원을 위한 구체적인 조정 사항을 수동으로 설정할 수 있습니다.
- 한 네임스페이스에서 다른 리소스와 독립적으로 백업 또는 복원될 수 있는 리소스 집합을 식별합니다.
ProtectedApplication은 백업 또는 복원 범위에 대해 식별할 수 있는 가장 세부적인 네임스페이스 항목입니다. ProtectedApplication가 백업 범위에 속할 때마다 전문 백업 오케스트레이션을 제공합니다. 특히ProtectedApplication에StatefulSet의 템플릿을 통해 직접 또는 간접적으로PersistentVolumeClaim(PVC) 리소스가 포함된 경우 볼륨을 백업하기 전후에 후크를 실행할 수 있습니다. 후크는 애플리케이션 컨테이너에서 실행되는 명령어입니다. 이러한 후크는 플러시, 정지 또는 정지 해제 작업에 자주 사용되며 애플리케이션에 일관된 백업을 제공합니다.
시작하기 전에
ProtectedApplication 리소스를 사용하려면 다음이 필요합니다.
- 백업 계획을 만들기 전에
ProtectedApplication리소스를 정의해야 합니다. 자세한 내용은 백업 집합 계획을 참고하세요. 필요한 ID 및 액세스 역할:
- 플랫폼 관리자 (PA) 사용자의 경우:
- 사용자 클러스터 백업 관리자: 사용자 클러스터의 백업 및 복원 계획과 같은 백업 리소스를 관리합니다. 조직 IAM 관리자에게 사용자 클러스터 백업 관리자 (
user-cluster-backup-admin) 역할을 부여해 달라고 요청하세요.
- 사용자 클러스터 백업 관리자: 사용자 클러스터의 백업 및 복원 계획과 같은 백업 리소스를 관리합니다. 조직 IAM 관리자에게 사용자 클러스터 백업 관리자 (
- 애플리케이션 운영자 (AO) 사용자의 경우:
- 백업 생성자: 수동 백업을 만들고 복원합니다. 프로젝트 IAM 관리자에게 백업 생성자 (
backup-creator) 역할을 부여해 달라고 요청하세요.
- 백업 생성자: 수동 백업을 만들고 복원합니다. 프로젝트 IAM 관리자에게 백업 생성자 (
- 자세한 내용은 역할 정의를 참고하세요.
- 플랫폼 관리자 (PA) 사용자의 경우:
보호된 애플리케이션 리소스 배포
다음은 백업 중에 애플리케이션과 연결된 모든 리소스를 백업하고 복원 중에 모든 리소스를 복원하는 ProtectedApplication 리소스가 포함된 Deployment 사양의 예입니다.
apiVersion: v1
kind: Namespace
metadata:
name: USER_CLUSTER_NS
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: protected-application-deployment
namespace: USER_CLUSTER_NS
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: USER_CLUSTER_NS
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_APP_NAME
namespace: USER_CLUSTER_NS
spec:
resourceSelection:
type: Selector
selector:
matchLabels:
app: protected
components:
- name: application-deployment
resourceKind: Deployment
resourceNames:
- protected-application-deployment
strategy:
type: BackupAllRestoreAll
다음을 바꿉니다.
USER_CLUSTER_NS: 보호된 애플리케이션이 있는 사용자 클러스터 내의 네임스페이스입니다.PROTECTED_APP_NAME:ProtectedApplication의 이름입니다.
이 예시에는 ProtectedApplication에 다음 값이 포함됩니다.
| 값 | 설명 |
|---|---|
resourceSelection |
보호된 애플리케이션에 속하는 리소스를 식별하는 방법을 정의합니다.
|
components |
배포 또는 스테이트풀 세트와 같은 보호된 애플리케이션의 구성요소 목록입니다.
|
backupScope의 selectedApplications 목록에 ProtectedApplication를 지정합니다. 예를 들면 다음과 같습니다.
apiVersion: backup.gdc.goog/v1
kind: BackupPlan
metadata:
name: BACKUP_PLAN
namespace: USER_CLUSTER_NS
spec:
clusterName: USER_CLUSTER
backupSchedule:
cronSchedule: CRON_SCHEDULE
paused: BACKUP_SCHEDULE_STATUS
backupConfig:
backupScope:
selectedApplications:
namespacedNames:
- name: PROTECTED_APP_NAME
namespace: USER_CLUSTER_NS
backupRepository: BACKUP_REPOSITORY
retentionPolicy:
backupDeleteLockDays: BACKUP_DELETE_LOCK_DAYS
backupRetainDays: BACKUP_RETAIN_DAYS
다음을 바꿉니다.
BACKUP_PLAN: 백업 계획의 이름입니다.USER_CLUSTER: 사용자 클러스터의 이름입니다.CRON_SCHEDULE: 백업을 예약할 시기를 나타내는 crontab 일정입니다(예:"*/30 * * * *"). 예약된 백업 간의 최소 간격은 10분입니다.BACKUP_SCHEDULE_STATUS:true이면 정기 백업이 예약되지 않습니다.PROTECTED_APP_NAME:ProtectedApplication리소스에 지정한 이름입니다.BACKUP_REPOSITORY: 백업을 저장하는 데 사용하는 백업 저장소의 이름입니다.BACKUP_DELETE_LOCK_DAYS: 백업 생성 후 지정된 일수 동안 백업이 삭제되지 않도록 합니다(예:10 days).BACKUP_RETAIN_DAYS: 백업을 보관할 총 일수를 정의합니다. 이 기간이 지나면 백업이 자동으로 삭제됩니다. 이 값을 높게 설정하면 스토리지가 소진될 수 있고, 낮게 설정하면 데이터 손실 위험이 증가할 수 있습니다. 지정하지 않으면 이 값은 기본적으로 35로 설정됩니다. 보관 정책은 저장 위치의 보관 정책을 재정의하지 않으며 90일을 초과할 수도 없습니다.
다음 단계
- 보호된 애플리케이션 전략을 선택하려면 보호된 애플리케이션 전략을 참고하세요.