복원 중 리소스 수정(지원 중단됨)


이 페이지에서는 복원 프로세스 중에 Kubernetes 리소스를 수정하는 방법을 설명합니다.

개요

복원 프로세스의 일환으로 Kubernetes 리소스를 수정해야 하는 이유에는 몇 가지가 있습니다. 예를 들면 다음과 같습니다.

  • 다른 스토리지 프로비저닝 도구를 사용하여 PVC를 프로비저닝할 수 있습니다(예: Kubernetes 트리 내 드라이버에서 CSI 드라이버로 이동).

  • 다른 이름으로 네임스페이스를 복원할 수 있습니다.

  • Deployment 또는 StatefulSet에서 복제본 수를 변경할 수 있습니다.

Backup for GKE는 선택적으로 RestorePlan의 일부로 정의할 수 있는 대체 규칙이라고 하는 메커니즘을 제공합니다.

대체 규칙은 지정된 일치 기준과 대체 필드 값의 집합입니다. 다음과 같이 복원 프로세스에서 대체 규칙을 사용할 수 있습니다.

  1. 먼저 Backup for GKE는 복원 구성의 범위 매개변수(예: 네임스페이스, 그룹/종류)를 기반으로 복원할 리소스 집합을 계산합니다.

  2. Backup for GKE는 복원하기 위해 선택된 각 리소스를 정렬된 대체 규칙 목록에 따라 평가합니다. 규칙이 리소스와 일치하면 리소스가 대체 필드 값으로 업데이트됩니다. 모든 리소스가 모든 규칙과 일치하므로 같은 리소스에 여러 대체가 수행될 수 있습니다.

  3. 모든 규칙이 평가되면 Backup for GKE에서 대상 클러스터에 결과 리소스 집합을 만듭니다.

대체 규칙 매개변수

대체 규칙을 정의하려면 다음 매개변수를 제공합니다.

매개변수 필수 Description(설명)
targetNamespaces 선택사항 네임스페이스 목록입니다. 리소스가 이 규칙과 일치하려면 네임스페이스가 지정된 리소스이며 지정된 네임스페이스 중 하나가 있어야 합니다.
  • 이 매개변수에 어떠한 값도 제공하지 않으면 모든 리소스가 일치합니다(모든 네임스페이스가 지정된 리소스 및 클러스터 범위 리소스).
  • 빈 문자열('")이 제공되면 클러스터 범위 리소스와만 일치합니다. Google Cloud 콘솔에서 네임스페이스 리소스 제외를 선택하여 목록을 비어 있는 단일 문자열로 설정할 수 있습니다.
targetGroupKinds 선택사항 다음은 Kubernetes 리소스 그룹/종류 튜플 목록입니다.
  • 이 매개변수에 어떠한 값도 제공하지 않으면 모든 리소스가 일치합니다(그룹/종류에 따른 제한 없음).
  • 그룹/종류가 하나 이상 제공되는 경우 리소스가 규칙과 일치하려면 리소스 중 하나가 일치해야 합니다.
targetJsonPath 필수 리소스와 일치하는 JSONPath 표현식입니다. 이 규칙은 리소스와 일치할 뿐만 아니라 리소스의 특정 속성과도 일치합니다.
originalValuePattern 선택사항 속성의 현재 값과 일치하는 정규 표현식입니다. 제공되지 않으면 속성이 항상 일치합니다.
newValue 필수 일치하는 속성 값에 사용할 새 값입니다.

Google Cloud 콘솔에서 대체 규칙을 정의하는 방법에 대한 자세한 내용은 복원 집합 계획을 참조하세요.

gcloud CLI를 사용하여 대체 규칙을 정의하려면 substitutionRules의 YAML 배열이 포함된 파일을 만들고 gcloud beta container backup-restore restore-plans create 명령어에 --substitution-rules-file= 매개변수를 포함합니다.

대체 규칙 예시

다음 예시는 gcloud CLI에서 사용하는 YAML 형식으로 제공됩니다.

StorageClass 변경

이 예시에서는 복원된 모든 PersistentVolumeClaim 리소스의 StorageClass를 standard에서 premium-rwo로 변경합니다.

substitutionRules:
- targetGroupKinds:
  - resourceGroup: ''
    resourceKind: PersistentVolumeClaim
  targetJsonPath: "{..storageClassName}"
  originalValuePattern: standard
  newValue: premium-rwo

네임스페이스 클론

이 예시에서는 네임스페이스를 알파에서 베타로 클론하여 새 네임스페이스 'beta'를 만들고 모든 리소스를 'alpha'에서 새로운 'beta' 네임스페이스로 복원합니다. 이 예시에서는 네임스페이스 자체와 네임스페이스 내의 리소스용으로 각각 하나씩 대체 규칙 2개가 필요합니다.

substitutionRules:
- targetNamespaces:
  - ''
  targetGroupKinds:
  - resourceGroup: ''
    resourceKind: Namespace
  targetJsonPath: "{.metadata.name}"
  originalValuePattern: alpha
  newValue: beta
- targetNamespaces:
  - alpha
  targetJsonPath: "{.metadata.namespace}"
  originalValuePattern: alpha
  newValue: beta

클론된 네임스페이스에서 StorageClass 및 복제본 수 변경

이 예시에서는 네임스페이스를 클론한 후 일련의 변경사항을 새 네임스페이스의 리소스에 적용합니다.

  • PVC의 StorageClass를 standard에서 premium-rwo로 변경

  • Deployments의 복제본 수를 7개에서 3개로 변경

substitutionRules:
- targetNamespaces:
  - ''
  targetGroupKinds:
  - resourceGroup: ''
    resourceKind: Namespace
  targetJsonPath: "{.metadata.name}"
  originalValuePattern: alpha
  newValue: beta
- targetNamespaces:
  - alpha
  targetJsonPath: "{.metadata.namespace}"
  originalValuePattern: alpha
  newValue: beta
- targetNamespaces:
  - beta
  targetGroupKinds:
  - resourceGroup: ''
    resourceKind: PersistentVolumeClaim
  targetJsonPath: "{..storageClassName}"
  originalValuePattern: standard
  newValue: premium-rwo
- targetNamespaces:
  - beta
  targetGroupKinds:
  - resourceGroup: apps
    resourceKind: Deployment
  targetJsonPath: "{$.spec.replicas}"
  originalValuePattern: '7'
  newValue: '3'