이 페이지에서는 Google Distributed Cloud (GDC) 에어 갭에서 복원 계획을 만들고, 수정하고, 삭제하는 방법을 설명합니다.
복원 계획은 해당 백업 줄에 대해 미리 구성된 복원 시나리오입니다. 복원 계획은 백업 생성자 역할이 있는 사용자가 이러한 구성을 사용하도록 권한을 할당할 수 있습니다.
백업 생성자는 인시던트가 발생하면 백업을 빠르고 독립적으로 복원할 수 있습니다. 예를 들어 배포된 애플리케이션에서 소프트웨어 업데이트로 인해 영구 데이터가 손상되어, 애플리케이션 네임스페이스 상태가 잘못되고, 복원이 필요할 수 있습니다.
복원 중에는 일치하는 리소스 집합을 확인하고 해당 리소스에서 특정 속성의 현재 값을 새 값으로 바꾸는 대체 규칙 집합을 선택적으로 적용할 수 있습니다. 예를 들어 대체 규칙은 복원 중에 백업된 리소스의 네임스페이스를 변경하여 워크로드를 한 네임스페이스에서 다른 네임스페이스로 마이그레이션할 수 있습니다.
시작하기 전에
복원 계획을 만들려면 다음이 필요합니다.
필요한 ID 및 액세스 역할:
- 사용자 클러스터 백업 관리자: 사용자 클러스터의 백업 및 복원 계획과 같은 백업 리소스를 관리합니다. 조직 IAM 관리자에게 사용자 클러스터 백업 관리자 (
user-cluster-backup-admin) 역할을 부여해 달라고 요청하세요. 자세한 내용은 역할 정의를 참조하세요. - 애플리케이션 운영자인 경우 사용자 클러스터 백업 관리자 권한이 있는 관리자에게 복원 계획을 만들어 달라고 요청하세요.
- 사용자 클러스터 백업 관리자: 사용자 클러스터의 백업 및 복원 계획과 같은 백업 리소스를 관리합니다. 조직 IAM 관리자에게 사용자 클러스터 백업 관리자 (
복원 계획 만들기
GDC 콘솔 또는 API를 사용하여 복원 계획을 만듭니다.
콘솔
- GDC 콘솔에 로그인합니다.
- 탐색 메뉴에서 클러스터 백업 을 클릭합니다.
- 복원 계획 만들기 를 클릭합니다.
- 복원 계획 기본사항 섹션에서 다음 단계를 완료하고
다음을 클릭합니다.
- 복원 계획 이름에 복원 계획의 이름을 입력합니다.
- (선택사항) 복원 계획 설명 에 복원 계획에 대한 설명을 입력합니다.
- 소스 클러스터 목록에서 복원 계획의 소스 클러스터를 선택합니다.
- 프로젝트 목록에서 복원 계획의 프로젝트를 선택합니다.
- 소스 클러스터에 연결된 프로젝트를 선택합니다.
- 백업 계획 필드에서 복원하려는 백업에 해당하는 기존 클러스터의 백업 계획을 선택합니다.
- 대상 클러스터 필드에서 백업을 복원할 대상 클러스터를 선택합니다.
- 네임스페이스 범위 리소스 선택 섹션에서 다음 단계를 완료하고 다음을 클릭합니다.
- 복원할 네임스페이스를 선택합니다.
- 백업에서 복원할 네임스페이스를 지정하려면 선택한 네임스페이스 범위 리소스 를 클릭합니다.
- 클러스터 네임스페이스 수정 을 클릭한 후 클러스터 네임스페이스 추가 를 클릭하여 네임스페이스를 입력합니다.
- 네임스페이스 및 애플리케이션 이름을 지정하여 리소스를 추가하려면 선택된 보호되는 애플리케이션 을 클릭합니다.
- 백업에서 복원할 네임스페이스를 지정하려면 선택한 네임스페이스 범위 리소스 를 클릭합니다.
- 충돌 처리 방법을 선택합니다.
- 백업에서 복원 대상으로 지정된 네임스페이스가 대상 클러스터에 이미 있는 경우 복원이 실패하도록 하려면 충돌 시 복원 실패 (비파괴적) 를 클릭합니다.
- 백업에서 복원 대상으로 지정된 네임스페이스가 대상 클러스터에 이미 있는 경우 새 네임스페이스를 복원하기 전 기존 네임스페이스를 삭제하려면 롤백 (파괴적) 을 클릭합니다.
- 볼륨 데이터 복원 방법을 선택합니다.
- 새 영구 디스크의 백업에서 볼륨 데이터를 복원하려면 새 볼륨을 프로비저닝하고 백업에서 볼륨 데이터 복원 을 클릭합니다.
- 새
영구 볼륨을 프로비저닝하려면 볼륨 데이터를 복원하지 않음을 클릭합니다. 대상 클러스터에
PersistentVolumeClaim요구사항을 충족하는 결합되지 않은 영구 볼륨이 포함된 경우에는 클러스터가 볼륨에 결합됩니다. - 볼륨 백업 데이터를 복원하지 않으려면 데이터가 포함된 기존 볼륨 재사용 을 클릭합니다. 모든
PersistentVolumeClaims는 기존 영구 디스크를 참조하는 볼륨에 결합됩니다.
- 복원할 네임스페이스를 선택합니다.
- (선택사항) 클러스터 범위 리소스 선택 섹션에서 다음 단계를 완료하고 다음을 클릭합니다.
- 기존 리소스 버전을 그대로 두려면 클러스터 범위 리소스를 복원하지 않음을 클릭합니다.
- GroupKind별로 클러스터 범위 리소스 복원 을 클릭하여 이러한 리소스를 복원합니다.
- 클러스터 범위 리소스를 더 추가하려면 GroupKinds 수정 을 클릭합니다. 해당 유형 내의 리소스와 일치하도록 API 그룹 및 객체 종류 를 입력합니다.
- 대상 클러스터에 리소스가 없는 경우 리소스를 만들려면 기존 리소스 보존 을 클릭합니다.
- 대상 클러스터에 리소스가 이미 있는 경우 리소스를 삭제하려면 대상 클러스터의 리소스 덮어쓰기 를 클릭하고 백업에서 복사본을 복원합니다.
- (선택사항) 대체 규칙 추가 섹션에서
다음 단계를 완료하고 다음을 클릭합니다.
- 새 규칙 추가 를 클릭합니다.
- 클러스터 네임스페이스 상자에 해당 네임스페이스 내의 리소스와 일치하는 네임스페이스 목록을 입력합니다.
- GroupKinds를 추가하려면 GroupKind 추가 를 클릭하고 해당 유형 내의 리소스와 일치하도록 API 그룹 및 객체 종류 를 입력합니다.
- JSON 경로 필드에 일치하는 리소스 내에서 대체가 적용되는 필드에 대해 JSON 식별 경로를 입력합니다.
- 원래 값 패턴 필드에 새 값과 비교할 원래 패턴을 입력합니다.
- 새 값 필드에 일치하는 속성의 현재 값을 대체하는 새 값을 입력합니다.
- 저장 을 클릭합니다.
- 만들기 를 클릭합니다.
API
기존 ClusterBackupPlan에서 복원을 계획하려면 ClusterRestorePlan 커스텀 리소스를 만듭니다. ClusterRestorePlan은 백업 생성자가 복원할 수 있는 정확한 리소스 및 네임스페이스 집합을 할당합니다. 다음은 ClusterRestorePlan의 예입니다.
apiVersion: backup.gdc.goog/v1
kind: ClusterRestorePlan
metadata:
name: RESTORE_PLAN_NAME
namespace: PROJECT_NAME
spec:
targetCluster:
targetClusterType: UserCluster
targetClusterName:
kind: "Cluster"
name: CLUSTER_NAME
description: RESTORE_PLAN_DESCRIPTION
clusterBackupPlanName: CLUSTER_BACKUP_PLAN_NAME
clusterRestoreConfig:
volumeDataRestorePolicy: RestoreVolumeDataFromBackup
clusterResourceConflictPolicy: UseBackupVersion
namespacedResourceRestoreMode: DeleteAndRestore
namespacedResourceRestoreScope:
selectedNamespaces:
namespaces: [NAME_SPACE]
clusterBackupRepositoryRef: CLUSTER_BACKUP_REPOSITORY
substitutionRules:
- newValue: NEW_CONFIG_VALUE
originValuePattern: VALUE_PATTERN
target:
groupKinds:
jsonPath: '{.metadata.name}'
namespaces:
- NAME_SPACE
- newValue: NEW_CONFIG_VALUE
originValuePattern: VALUE_PATTERN
target:
groupKinds:
jsonPath: '{.metadata.name}'
namespaces:
- NAME_SPACE
다음을 바꿉니다.
RESTORE_PLAN_NAME을 복원 계획의 이름으로 바꿉니다.PROJECT_NAME을 GDC 프로젝트의 이름으로 바꿉니다.CLUSTER_NAME을 클러스터 이름으로 바꿉니다.
이 예시에서는 다음 값을 사용합니다.
값 |
속성 |
설명 |
|---|---|---|
targetClusterName |
이 계획이 연결된 프로젝트의 소스 클러스터 이름입니다. | |
description |
ClusterRestorePlan의 목적으로 사용자가 제공한 설명입니다. |
|
clusterBackupPlanName |
복원할 ClusterBackupPlan의 이름입니다.
ClusterBackupPlan은
ClusterRestorePlan과 동일한 네임스페이스에 있어야 합니다. |
|
clusterRestoreConfig |
복원 프로세스의 구성입니다. | |
volumeDataRestorePolicy |
다음 중 하나를 지정합니다.
|
|
clusterResourceConflictPolicy |
리소스가 클러스터에 이미 있는 경우와 같이 클러스터 리소스 충돌을 처리하는 동작을 지정합니다. 다음 중 하나를 지정합니다.
|
|
namespacedResourceRestoreMode |
복원 중인 네임스페이스 범위 리소스 집합이 대상 클러스터에 이미 있는 상황을 처리합니다. 다음 중 하나를 지정합니다.
|
|
namespacedResourceRestoreScope |
복원이 허용되는 Namespaces 또는
ProtectedApplications를 지정합니다.
|
|
clusterBackupRepositoryRef |
Restore
리소스를 저장할 저장소를 지정합니다. 이 저장소는 백업이 생성된 저장소와 다를 수 있습니다. 저장소는 클러스터의 ReadWrite
저장소여야 합니다. |
|
substitutionRules |
복원 중에 백업된 Kubernetes 리소스의 값을 대체하는 규칙입니다. 빈 목록은 대체가 발생하지 않음을 의미합니다.
대체 규칙은 정의된 순서대로 순차적으로 적용됩니다.
규칙에 의해 변경된 사항이 후속 규칙의 일치
로직에 영향을 줄 수 있으므로 이 순서는 중요합니다. 각 규칙은 일치시킬 target, originValuePattern (VALUE_PATTERN), 대체할 newValue (NEW_CONFIG_VALUE)를 지정합니다. target에는 규칙의 범위를 지정하는 namespaces (NAME_SPACE)가 포함될 수 있습니다. |
ClusterRestorePlan이 생성되면 백업 생성자 역할이 있는 사용자가 백업을 수동으로 복원할 수 있습니다.
복원 계획 보기
GDC 콘솔을 사용하여 복원 계획을 봅니다.
- GDC 콘솔에 로그인합니다.
- 탐색 메뉴에서 클러스터 백업 을 클릭합니다.
- 프로젝트 선택 을 클릭하여 역할에 따라 조직 또는 프로젝트를 선택합니다.
- 사용자 클러스터 백업 관리자: 조직의 모든 복원 계획을 보려면 조직을 선택하고 프로젝트의 모든 복원 계획을 보려면 프로젝트를 선택합니다.
- 백업 생성자: 프로젝트의 모든 복원 계획을 보려면 프로젝트를 선택합니다.
- 복원 계획 탭을 클릭합니다.
- 목록에서 복원 계획을 클릭하여 세부정보를 봅니다.
복원 계획 수정
수정하려는 복원 계획과 연결된 백업 저장소에 복원 계획이 생성될 때 연결된 클러스터(읽기 전용) 필드에 값이 있으면 두 번 생성됩니다. 복원 계획은 읽기-쓰기 클러스터와 읽기 전용 클러스터 모두에 전파됩니다.
읽기-쓰기 클러스터와 읽기 전용 클러스터가 모두 설정된 백업 저장소에서 소유한 복원 계획을 수정할 때는 TARGET CLUSTER가 읽기-쓰기 클러스터로 설정된 복원 계획을 수정해야 합니다.
GDC 콘솔을 사용하여 복원 계획을 수정합니다.
- GDC 콘솔에 로그인합니다.
- 탐색 메뉴에서 클러스터 백업 을 클릭합니다.
- 프로젝트 선택 을 클릭하여 역할에 따라 조직 또는 프로젝트를 선택합니다.
- 사용자 클러스터 백업 관리자: 조직의 모든 복원 계획을 보려면 조직을 선택하고 프로젝트의 모든 복원 계획을 보려면 프로젝트를 선택합니다.
- 백업 생성자: 프로젝트의 모든 복원 계획을 보려면 프로젝트를 선택합니다.
- 복원 계획 탭을 클릭합니다.
- 수정할 복원 계획의 이름을 클릭합니다.
- 계획 구성 탭을 클릭하여 수정할 수 있는 필드를 봅니다.
**네임스페이스 범위 리소스** 옆에 있는 edit 수정 아이콘을 클릭하여 해당 리소스를 수정합니다.
네임스페이스 범위 리소스 선택 섹션에서 백업에서 복원할 네임스페이스 범위 리소스를 선택합니다.
백업에서 선택한 네임스페이스에서 리소스를 복원하려면 선택한 네임스페이스 범위 리소스 를 선택합니다.
- 클러스터 네임스페이스 수정 을 선택하여 클러스터 네임스페이스를 선택합니다.
- 클러스터 네임스페이스 1 필드에 네임스페이스 이름을 입력합니다.
- 저장 버튼을 클릭합니다.
백업에서 선택된 보호되는 애플리케이션에서 리소스를 복원하려면 선택된 보호되는 애플리케이션 을 선택합니다.
- 보호되는 애플리케이션 수정 을 선택하여 네임스페이스 및 보호되는 애플리케이션을 선택합니다.
- 네임스페이스 1 필드에 네임스페이스 이름을 입력합니다.
- 보호되는 애플리케이션 1 필드에 보호되는 애플리케이션의 이름을 입력합니다.
- 저장 버튼을 클릭합니다.
**클러스터 범위 리소스** 옆에 있는 edit 수정 아이콘을 클릭하여 해당 리소스를 수정합니다.
(선택사항) 클러스터 범위 리소스 선택 섹션에서 API 그룹 및
GroupKinds를 지정하여 복원할 클러스터 범위 리소스를 선택하고 충돌을 해결할 방법을 결정합니다.- 복원 프로세스에서 클러스터 범위 리소스를 삭제하려면 클러스터 범위 리소스를 복원하지 않음을 선택합니다.
지정된
GroupKind로 리소스를 복원하려면 GroupKind별로 클러스터 범위 리소스 복원 을 선택합니다.GroupKind를 지정하려면 GroupKind 수정 버튼을 클릭합니다.GroupKind 추가 버튼을 클릭합니다.
GroupKind의 이름을 입력합니다.저장 버튼을 클릭합니다.
충돌 처리 섹션에서 리소스가 대상 클러스터에 이미 있는 경우 취할 작업을 결정합니다.
- 클러스터에 리소스가 아직 없는 경우 리소스를 만들려면 기존 리소스 보존 을 선택합니다.
- 기존 리소스를 삭제하고 이 리소스를 복원된 리소스로 바꾸려면 기존 리소스 덮어쓰기 를 선택합니다.
저장 버튼을 클릭하여 변경사항을 확인합니다.
대체 규칙 섹션에서 새 규칙 추가 버튼을 클릭하여 새 대체 규칙을 추가합니다.
- 클러스터 네임스페이스 필드에 이 대체 규칙을 적용할 클러스터 네임스페이스의 이름을 입력합니다.
- GroupKind 추가 버튼을 클릭하여 이 규칙을 특정
GroupKind객체에 적용합니다. - JSON 경로 필드에 대체할 리소스 속성의 경로를 JSON 형식으로 입력합니다.
- 원래 값 패턴 필드에 속성의 원래 값과 일치하는 정규 표현식을 입력합니다.
- 새 값 필드에 대상 필드를 대체하는 값을 입력합니다. 이 필드가 비어 있으면 대상 필드가 리소스에서 삭제됩니다.
- 저장 버튼 을 클릭하여 새 대체 규칙 만들기를 완료합니다.
대체 규칙 섹션에서 edit 수정 아이콘을 클릭하여 기존 대체 규칙을 수정합니다.
대체 규칙 섹션에서 delete 삭제 아이콘을 클릭하여 기존 대체 규칙을 삭제합니다.
복원 계획 삭제
RestorePlans 는 GDC 콘솔을 통해 또는 Kubernetes API 서버에서 직접 리소스를 삭제하여 삭제할 수 있습니다. 이렇게 하면 객체 저장소에서 연결된 RestorePlan 아티팩트가 정리됩니다.
콘솔
- GDC 콘솔에 로그인합니다.
- 탐색 메뉴에서 클러스터 백업 을 클릭합니다.
- 프로젝트 선택 을 클릭하여 역할에 따라 조직 또는 프로젝트를 선택합니다.
- 사용자 클러스터 백업 관리자: 조직의 모든 복원 계획을 보려면 조직을 선택하고 프로젝트의 모든 복원 계획을 보려면 프로젝트를 선택합니다.
- 백업 생성자: 프로젝트의 모든 복원 계획을 보려면 프로젝트를 선택합니다.
- 복원 계획 탭을 클릭합니다.
- 삭제할 복원 계획의 이름을 클릭합니다.
- delete 삭제 버튼을 클릭합니다.
- 필드에 복원 계획의 이름을 입력합니다.
- 삭제 버튼을 클릭하여 이 복원 계획의 삭제를 확인합니다.
API
복원 계획 리소스를 삭제합니다.
kubectl delete clusterRestoreplan RESTORE_PLAN_NAME -n NAMESPACE
다음을 바꿉니다.
RESTORE_PLAN_NAME: 복원 계획의 이름입니다.NAMESPACE: 복원 계획이 포함된 네임스페이스입니다.