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