복원 집합 계획


이 페이지에서는 Google Kubernetes Engine(GKE)에서 백업을 복원하는 데 사용되는 Backup for GKE 복원 계획을 만드는 방법을 설명합니다.

복원 계획은 해당 백업 줄에 대해 미리 구성된 복원 시나리오입니다. 복원 계획은 관리자가 이러한 구성을 사용하도록 권한을 할당할 수 있습니다. 이러한 사용자는 이슈가 발생했을 때 빠르고 독립적인 방식으로 백업을 복원할 수 있습니다. 예를 들어 배포된 애플리케이션에서 소프트웨어 업데이트로 인해 영구 데이터가 손상되어, 애플리케이션 네임스페이스 상태가 잘못되고, 복원이 필요할 수 있습니다.

복원 중에는 일치하는 리소스 집합을 확인하고 해당 리소스에서 특정 속성의 현재 값을 새 값으로 바꾸는 변환 규칙을 선택적으로 적용할 수 있습니다.

시작하기 전에

백업 집합을 계획합니다.

필요한 역할

복원 계획을 만들고 관리하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 Backup for GKE 관리자(roles/gkebackup.admin) IAM 역할의 하위 집합인 Backup for GKE 복원 관리자(roles/gkebackup.restoreAdmin)를 부여해 달라고 요청하세요. 역할 부여에 대한 자세한 내용은 액세스 관리를 참조하세요.

커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.

복원 계획 만들기

Google Cloud CLI 또는 Google Cloud 콘솔을 사용하여 백업의 복원 계획을 만들 수 있습니다.

gcloud

복원 계획을 만들려면 다음 명령어를 실행합니다.

gcloud beta container backup-restore restore-plans create RESTORE_PLAN \
    --project=PROJECT_ID \
    --location=LOCATION \
    --backup-plan=BACKUP_PLAN \
    --cluster=CLUSTER \
    --namespaced-resource-restore-mode=NAMESPACED_RESOURCE_RESTORE_MODE \
    --all-namespaces \
    --cluster-resource-conflict-policy=CLUSTER_RESOURCE_CONFLICT_POLICY \
    --cluster-resource-scope-selected-group-kinds=CLUSTER_RESOURCE_SCOPE \
    --volume-data-restore-policy=VOLUME_DATA_RESTORE_POLICY

다음을 바꿉니다.

  • RESTORE_PLAN: 만들려는 복원 계획의 이름입니다.
  • PROJECT_ID: Google Cloud 프로젝트의 ID입니다.
  • LOCATION: 리소스의 컴퓨팅 리전입니다(예: us-central1). 리소스 위치 정보를 참조하세요. 위치는 대상 클러스터가 있는 리전과 같은 리전이어야 합니다.
  • BACKUP_PLAN: 이 복원 계획으로 복원할 수 있는 백업 소스입니다.
    • projects/PROJECT_ID/locations/BACKUP_LOCATION/backupPlans/BACKUP_PLAN_NAME
  • CLUSTER: 백업을 복원할 대상 클러스터의 이름입니다.

    • 리전 클러스터: projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_NAME
    • 영역 클러스터: projects/PROJECT_ID/locations/ZONE/clusters/CLUSTER_NAME
  • NAMESPACED_RESOURCE_RESTORE_MODE: 네임스페이스 범위 리소스의 복원 시간 충돌을 처리하는 방법을 정의합니다. 네임스페이스 리소스는 항상 네임스페이스 또는 ProtectedApplication을 기준으로 그룹에 복원됩니다. 다음 옵션 중 하나를 선택하세요.

    • merge-skip-on-conflict: 충돌하는 개별 리소스를 건너뜁니다.
    • merge-replace-volume-on-conflict: 충돌하는 개별 리소스를 건너뛰고 기본 영구 볼륨 데이터를 바꿉니다.
    • merge-replace-on-conflict: 충돌하는 개별 리소스와 기본 영구 볼륨 데이터를 바꿉니다.
    • delete-and-restore: 대상 클러스터에 클러스터로 복원할 대상으로 지정된 것과 동일한 리소스 그룹이 포함된 경우 새 리소스가 복원되기 전 기존 리소스 그룹이 삭제됩니다.
    • fail-on-conflict: 백업에서 복원할 대상으로 지정된 리소스 그룹이 대상 클러스터에 이미 있으면 복원이 실패합니다.
  • --all-namespaces: 백업에서 모든 네임스페이스 범위 리소스를 복원합니다. 또는 다음을 지정합니다.

    • --excluded-namespaces를 목록에 있는 네임스페이스를 제외한 모든 네임스페이스를 복원할 NAMESPACE1,NAMESPACE2,...와 같은 네임스페이스 목록으로 바꿉니다.
    • --selected-applications를 복원할 NAMESPACE1/APP1,NAMESPACE2/APP2,...와 같은 ProtectedApplications 목록으로 바꿉니다.
    • --selected-namespaces를 복원할 NAMESPACE1,NAMESPACE2,...와 같은 네임스페이스 목록으로 바꿉니다.
    • --no-namespaces는 백업에서 네임스페이스 리소스를 복원하지 않습니다. 이 옵션은 --cluster-resource-scope-no-group-kinds와 함께 지정할 수 없습니다.

    복원 계획을 만들 때 이러한 옵션 중 하나를 지정해야 합니다.

  • CLUSTER_RESOURCE_CONFLICT_POLICY: 선택한 클러스터 리소스에 대해 복원 시 발생하는 충돌의 처리 방법을 정의합니다. 다음 옵션 중 하나를 선택하세요.

    • use-existing-version: 복원 중인 리소스가 이미 대상 클러스터에 있는 경우 Backup for GKE는 기존 리소스를 유지합니다.

    • use-backup-version: 복원 중인 리소스가 이미 대상 클러스터에 있는 경우 Backup for GKE는 기존 리소스를 백업의 새 리소스로 바꿉니다.

  • --cluster-resource-scope-selected-group-kinds: (선택사항) Group/Kind 형식의 선택한 그룹 종류로 클러스터 리소스를 복원합니다. CLUSTER_RESOURCE_SCOPE는 복원할 클러스터 리소스의 GroupKinds를 정의합니다. 예를 들면 apiextension.k8s.io/CustomResourceDefinition,storage.k8s.io/StorageClass입니다.

    또는 다음을 지정합니다.

    • cluster-resource-scope-all-group-kinds: 복원할 모든 클러스터 리소스 그룹 종류 선택
    • cluster-resource-scope-excluded-group-kinds: 목록에서 제외한 모든 클러스터 리소스 그룹 종류를 복원할 클러스터 리소스 그룹 종류 목록
    • cluster-resource-scope-no-group-kinds: 이 옵션은 --no-namespaces와 함께 지정할 수 없습니다.

    이러한 옵션을 지정하지 않으면 클러스터 리소스가 복원되지 않습니다.

  • VOLUME_DATA_RESTORE_POLICY: 복원된 볼륨의 데이터가 채워지는 방법을 정의합니다. 다음 옵션 중 하나를 선택하세요.

    • restore-volume-data-from-backup: 새 PV는 백업에서 해당 볼륨 백업 데이터를 사용하여 복원됩니다.

    • reuse-volume-handle-from-backup: PV는 백업에서 원본 PV의 볼륨 핸들을 사용하여 사전 프로비저닝됩니다.

    • no-volume-data-restoration: PV가 복원되지 않습니다. 복원 시 선택한 PVC만 복원하고 해당 스토리지 드라이버가 빈 PV를 동적으로 프로비저닝하거나 대역 외로 생성된 사전 프로비저닝된 PV에 바인딩할 것으로 예상합니다.

전체 옵션 목록은 gcloud beta container backup-restore restore-plans create 문서를 참조하세요.

모든 네임스페이스의 RestorePlan 만들기

다음 명령어는 모든 네임스페이스 및 클러스터 리소스를 복원하는 RestorePlan을 만듭니다.

gcloud beta container backup-restore restore-plans create RESTORE_PLAN \
    --location=LOCATION \
    --backup-plan=BACKUP_PLAN \
    --cluster=CLUSTER \
    --namespaced-resource-restore-mode=fail-on-conflict \
    --all-namespaces \
    --cluster-resource-conflict-policy=use-existing-version \
    --cluster-resource-scope-all-group-kinds \
    --volume-data-restore-policy=restore-volume-data-from-backup

네임스페이스를 롤백하기 위한 RestorePlan 만들기

다음 명령어는 백업에서 네임스페이스 my-ns를 롤백하는 RestorePlan을 만듭니다.

gcloud beta container backup-restore restore-plans create RESTORE_PLAN \
    --location=LOCATION \
    --backup-plan=BACKUP_PLAN \
    --cluster=CLUSTER \
    --namespaced-resource-restore-mode=delete-and-restore \
    --selected-namespaces=my-ns \
    --cluster-resource-conflict-policy=use-existing-version \
    --cluster-resource-scope-selected-group-kinds=apiextension.k8s.io/CustomResourceDefinition,storage.k8s.io/StorageClass \
    --volume-data-restore-policy=restore-volume-data-from-backup

ProtectedApplication을 롤백하여 RestorePlan을 만들어 원래 볼륨을 다시 연결

다음 명령어는 RestorePlan을 생성하여 원본 볼륨을 다시 연결하기 위해 ProtectedApplication my-ns/my-app을 롤백합니다.

gcloud beta container backup-restore restore-plans create RESTORE_PLAN \
    --location=LOCATION \
    --backup-plan=BACKUP_PLAN \
    --cluster=CLUSTER \
    --namespaced-resource-restore-mode=delete-and-restore \
    --selected-applications=my-ns/my-app \
    --cluster-resource-conflict-policy=use-existing-version \
    --cluster-resource-scope-no-group-kinds \
    --volume-data-restore-policy=reuse-volume-handle-from-backup

클러스터 리소스만 복원하는 RestorePlan 만들기

다음 명령어는 모든 클러스터 리소스를 복원하는 RestorePlan을 만듭니다.

gcloud beta container backup-restore restore-plans create RESTORE_PLAN \
    --location=LOCATION \
    --backup-plan=BACKUP_PLAN \
    --cluster=CLUSTER \
    --namespaced-resource-restore-mode=fail-on-conflict \
    --no-namespaces \
    --cluster-resource-conflict-policy=use-existing-version \
    --cluster-resource-scope-all-group-kinds

콘솔

다음 안내에 따라 Google Cloud 콘솔에서 복원 계획을 만듭니다.

  1. Google Cloud 콘솔에서 Google Kubernetes Engine 페이지로 이동합니다.

    Google Kubernetes Engine으로 이동

  2. 탐색 메뉴에서 Backup for GKE를 클릭합니다.

  3. 복원 계획 만들기를 클릭합니다.

  4. 계획 이름 지정 및 클러스터 선택 섹션에서 다음을 완료하고 다음을 클릭합니다.

    1. 복원 계획 이름과 선택적인 설명을 입력합니다.
    2. 복원하려는 백업에 해당하는 기존 클러스터에 대해 백업 계획을 선택합니다.
    3. 백업을 복원할 대상 클러스터를 선택합니다.
  5. 네임스페이스 범위 리소스 선택 섹션에서 다음을 완료하고 다음을 클릭합니다.

    1. 복원할 네임스페이스를 선택합니다.

      • 백업에서 모든 네임스페이스 범위 리소스를 복원하려면 모든 네임스페이스 범위 리소스를 클릭합니다.
        1. 예외 섹션에서 네임스페이스 추가를 클릭하여 백업의 모든 네임스페이스를 제외합니다.
      • 백업에서 복원할 네임스페이스를 지정하려면 선택한 네임스페이스 범위 리소스를 클릭합니다.
      • 네임스페이스 및 애플리케이션 이름을 지정하여 리소스를 추가하려면 선택된 보호되는 애플리케이션을 클릭합니다.
      • 네임스페이스 리소스를 복원하지 않으려면 네임스페이스 리소스 없음을 클릭합니다.
    2. 네임스페이스 리소스가 선택된 경우 충돌을 처리하는 방법을 선택합니다.

      • 특정 리소스가 이미 있는 경우 병합 건너뛰기(비파괴적)를 클릭하고 백업에서 리소스 복원을 건너뜁니다.
      • 특정 리소스가 이미 있는 경우 병합 교체 볼륨(파괴적)을 클릭하여 해당 리소스 복원을 건너뛰고 볼륨 데이터 복원 정책을 사용하여 기본 영구 볼륨을 바꿉니다. 병합 교체 볼륨은 데이터 전용 복원을 수행합니다.
      • 특정 리소스가 이미 있는 경우 병합 교체(파괴적)를 클릭하고 볼륨 데이터 복원 정책에 따라 해당 리소스를 백업 및 연결된 볼륨 데이터의 리소스로 바꿉니다.
      • 백업에서 복원 대상으로 지정된 네임스페이스가 대상 클러스터에 이미 있는 경우 복원이 실패하도록 하려면 충돌 시 복원 실패(비파괴적)를 클릭합니다.
      • 백업에서 복원 대상으로 지정된 네임스페이스가 대상 클러스터에 이미 있는 경우 새 네임스페이스를 복원하기 전 기존 네임스페이스를 삭제하려면 롤백(파괴적)을 클릭합니다.
    3. 볼륨 데이터를 복원할 방법을 선택하고 다음을 클릭합니다.

      • 새 영구 디스크의 백업에서 볼륨 데이터를 복원하려면 새 볼륨을 프로비저닝하고 백업에서 볼륨 데이터 복원을 클릭합니다.
      • 새 영구 볼륨을 프로비저닝하려면 볼륨 데이터를 복원하지 않음을 클릭합니다. 대상 클러스터에 PersistentVolumeClaim 요구사항을 충족하는 결합되지 않은 영구 볼륨이 포함된 경우에는 클러스터가 볼륨에 결합됩니다.
      • 볼륨 백업 데이터를 복원하지 않으려면 데이터가 포함된 기존 볼륨 재사용을 클릭합니다. 모든 PersistentVolumeClaims는 기존 영구 디스크를 참조하는 볼륨에 결합됩니다.
  6. (선택사항) 클러스터 범위 리소스 선택 섹션에서 다음을 완료하고 다음을 클릭합니다.

    1. 복원할 그룹 종류를 선택합니다.

      • 백업에서 모든 클러스터 범위의 리소스를 복원하려면 모든 클러스터 범위 리소스를 클릭합니다.
        1. 백업에서 모든 클러스터 범위 리소스를 제외하려면 예외 섹션에서 그룹 종류 추가를 클릭합니다.
      • 복원할 백업의 클러스터 범위 리소스를 지정하려면 선택한 클러스터 범위 리소스를 클릭합니다. apiextensions.k8s.io/CustomResourceDefinitionstorage.k8s.io/StorageClass가 기본적으로 선택됩니다. 클러스터 범위 리소스를 더 추가하려면 그룹 종류 추가를 클릭합니다.
      • 클러스터 리소스를 복원하지 않도록 선택하려면 클러스터 범위 리소스 없음을 클릭합니다.
    2. 클러스터 범위 리소스가 선택된 경우 충돌을 처리하는 방법을 선택합니다.

      • 대상 클러스터에 리소스가 이미 있는 경우 대상 클러스터에 리소스 유지를 클릭하여 리소스를 건너뜁니다.
      • 대상 클러스터에 리소스가 이미 있는 경우 리소스를 삭제하려면 대상 클러스터의 리소스 바꾸기를 클릭하고 백업에서 복사본을 복원합니다.

  7. (선택사항) 변환 규칙 추가 섹션에서 다음을 완료하고 다음을 클릭합니다.

    1. 규칙 추가를 클릭하고 선택적인 설명을 입력합니다.
    2. 특정 조건과 일치하는 리소스로 변환 규칙을 제한하려면 리소스 조건 및 작업 지정 섹션에서 다음을 수행합니다.
      1. 네임스페이스 조건을 클릭하고 해당 네임스페이스 내의 리소스와 일치하는 네임스페이스 목록을 입력합니다.
      2. 그룹 종류 조건을 클릭하고 API 그룹 종류를 입력한 후 객체 종류를 입력합니다. 이렇게 하면 해당 유형 내의 리소스에 맞는 API 그룹을 찾습니다.
      3. JSON 경로 조건을 클릭하고 변환이 적용되는 일치하는 리소스 내의 필드를 식별하는 JSON 경로를 입력합니다.
      4. 일치하는 속성의 현재 값을 바꿀 새 값을 입력하거나 특정 값 바꾸기(정규 표현식 사용) 체크박스를 선택합니다. 그런 후 해당 리소스의 현재 값과 비교할 패턴을 입력합니다.
    3. 변경사항 저장을 클릭합니다.
  8. 복원 계획 세부정보를 검토하고 계획 만들기를 클릭합니다.

복원 계획 보기

gcloud CLI 또는 Google Cloud 콘솔을 사용하여 복원 계획과 세부정보를 볼 수 있습니다.

gcloud

프로젝트 및 위치 내에 있는 모든 복원 계획을 나열하려면 다음 명령어를 실행합니다.

gcloud beta container backup-restore restore-plans list \
    --project=PROJECT_ID \
    --location=LOCATION

list 명령어의 경우에만 PROJECT_ID를 제외한 모든 매개변수의 값으로 -를 제공할 수 있습니다. - 값은 와일드 카드로 사용됩니다. 명령줄 옵션을 지정하지 않거나 속성을 설정하지 않은 경우에는 - 값이 모든 매개변수의 기본값입니다.

전체 옵션 목록은 gcloud beta container backup-restore restore-plans list 문서를 참조하세요.

복원 계획의 세부정보를 보려면 다음 명령어를 실행합니다.

gcloud beta container backup-restore restore-plans describe RESTORE_PLAN \
     --project=PROJECT_ID \
     --location=LOCATION

콘솔

다음 안내에 따라 Google Cloud 콘솔에서 복원 계획 및 세부정보를 확인합니다.

  1. Google Cloud 콘솔에서 Google Kubernetes Engine 페이지로 이동합니다.

    Google Kubernetes Engine으로 이동

  2. 탐색 메뉴에서 Backup for GKE를 클릭합니다.

  3. 복원 계획 탭을 클릭합니다.

  4. 백업 계획을 확장하고 복원 계획 이름을 클릭합니다.

  5. 세부정보를 보려면 세부정보 탭을 클릭합니다.

복원 계획 업데이트

gcloud CLI를 사용하여 복원 계획 및 해당 세부정보를 업데이트합니다.

gcloud

예를 들어 새 설명을 추가해서 복원 계획을 업데이트하려면 다음 명령어를 실행합니다.

gcloud beta container backup-restore restore-plans update RESTORE_PLAN \
    --project=PROJECT_ID \
    --location=LOCATION \
    --description=DESCRIPTION

전체 옵션 목록은 gcloud beta container backup-restore restore-plans update 문서를 참조하세요.

콘솔

다음 안내에 따라 Google Cloud 콘솔에서 복원 계획을 업데이트합니다.

  1. Google Cloud 콘솔에서 Google Kubernetes Engine 페이지로 이동합니다.

    Google Kubernetes Engine으로 이동

  2. 탐색 메뉴에서 Backup for GKE를 클릭합니다.

  3. 복원 계획 탭을 클릭합니다.

  4. 복원 계획 이름을 클릭합니다.

  5. 세부정보 탭을 클릭합니다.

  6. 수정을 클릭하여 계획 섹션을 수정하고 변경사항 저장을 클릭합니다.

복원 계획 삭제

gcloud CLI 또는 Google Cloud 콘솔을 사용해서 복원 계획을 삭제할 수 있습니다. 복원 계획을 삭제하면 모든 하위 복원 계획도 삭제됩니다.

gcloud

복원 계획을 삭제하려면 다음 명령어를 실행합니다.

gcloud beta container backup-restore restore-plans delete RESTORE_PLAN \
    --project=PROJECT_ID \
    --location=LOCATION

전체 옵션 목록은 gcloud beta container backup-restore restore-plans delete 문서를 참조하세요.

콘솔

다음 안내에 따라 Google Cloud 콘솔에서 복원 계획을 삭제합니다.

  1. Google Cloud 콘솔에서 Google Kubernetes Engine 페이지로 이동합니다.

    Google Kubernetes Engine으로 이동

  2. 탐색 메뉴에서 Backup for GKE를 클릭합니다.

  3. 복원 계획 탭을 클릭합니다.

  4. 클러스터를 확장하고 계획 이름을 클릭합니다.

  5. 계획 삭제를 클릭합니다.

  6. 복원 계획 이름을 입력한 후 확인 대화상자에서 복원 계획 삭제를 클릭합니다.

다음 단계