이 문서에서는 ProtectedApplication 리소스를 사용하여 Google Distributed Cloud (GDC) 에어 갭에서 백업 및 복원 동작을 맞춤설정하는 방법을 설명합니다.
이 단계는 선택사항이며 워크로드의 백업 및 복원을 구성하는 데 필요하지 않습니다. ProtectedApplication 리소스는 개별 스테이트풀(Stateful) 애플리케이션의 백업 및 복원을 맞춤설정하는 네임스페이스의 선택적 Kubernetes 리소스입니다. ProtectedApplication 리소스가 없으면 다음 제한사항이 적용됩니다.
- 백업 및 복원 범위 세분화 수준을 네임스페이스 수준으로 제한합니다.
- 백업 실행 중에는 워크로드에서 플러시 및 정지 작업이 발생하지 않습니다.이로 인해 여러 디스크가 있는 가상 머신이 복원 후 비정상 종료 일관성이 없을 수 있습니다.
ProtectedApplication 리소스는 개별 스테이트풀(Stateful) 애플리케이션의 백업 및 복원을 맞춤설정하는 데 사용되는 선택적 Kubernetes 네임스페이스 리소스입니다.
ProtectedApplication 리소스는 애플리케이션 인스턴스에 속하는 Kubernetes 리소스를 정의합니다. kubectl 명령어를 사용하여 구체적인 조정 사항을 수동으로 설정하여 다음 시나리오에서 이러한 애플리케이션의 백업 및 복원을 만들 수 있습니다.
- 한 네임스페이스에서 다른 리소스와 독립적으로 백업 또는 복원될 수 있는 리소스 집합 식별.
ProtectedApplication은 백업 또는 복원 범위에 대해 식별할 수 있는 가장 세분화된 네임스페이스 항목입니다. ProtectedApplication가 백업 범위에 속할 때마다 특수한 백업 조정을 제공합니다. 특히ProtectedApplication에PersistentVolumeClaim(PVC) 리소스가 직접 포함되거나StatefulSet의 템플릿을 통해 포함된 경우 볼륨을 백업하기 전후에 후크를 실행할 수 있습니다. 후크는 애플리케이션 컨테이너에서 실행되는 명령어입니다. 이러한 후크는 플러시, 정지 또는 정지 해제 작업에 자주 사용되며 애플리케이션에 일관된 백업을 제공합니다.
시작하기 전에
백업 계획을 만들기 전에 ProtectedApplication 리소스를 정의하세요. 자세한 내용은 백업 집합 계획을 참조하세요.
IAM 역할 요청
ProtectedApplication 리소스를 사용하려면 IAM 조직 관리자 또는 IAM 프로젝트 관리자에게 다음 역할 중 하나를 부여해 달라고 요청하세요.
사용자 클러스터 백업 관리자 (
user-cluster-backup-admin): 사용자 클러스터에서 백업 및 복원 계획과 같은 백업 리소스를 만들고, 가져오고, 나열하고, 감시하고, 업데이트하고, 패치하고, 삭제합니다. IAM 조직 관리자에게 문의하여 이 역할을 요청하세요.백업 생성자 (
backup-creator): 수동 백업 요청 및 수동 복원 요청을 만들고, 가져오고, 나열하고, 감시하고, 업데이트하고, 패치하고, 삭제합니다. IAM 프로젝트 관리자에게 문의하여 이 역할을 요청하세요.
보호되는 애플리케이션 리소스 배포
다음 yaml 스니펫은 백업 중 애플리케이션과 연결된 모든 리소스를 백업하고 복원 중 모든 리소스를 복원하는 ProtectedApplication 리소스가 있는 Deployment 사양의 예시입니다.
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 |
배포 또는 스테이트풀셋과 같은 보호된 애플리케이션의 구성요소 목록:
|
다음 단계
- 보호된 애플리케이션 전략을 선택하려면 보호된 애플리케이션 전략을 참조하세요.