이 페이지에서는 복원 프로세스 중에 Kubernetes 리소스를 수정하는 방법을 설명합니다.
개요
복원 프로세스의 일환으로 Kubernetes 리소스를 수정해야 하는 이유에는 몇 가지가 있습니다. 예를 들면 다음과 같습니다.
다른 스토리지 프로비저닝 도구를 사용하여 PVC를 프로비저닝할 수 있습니다(예: Kubernetes 트리 내 드라이버에서 CSI 드라이버로 이동).
다른 이름으로 네임스페이스를 복원할 수 있습니다.
Deployment 또는 StatefulSet에서 복제본 수를 변경할 수 있습니다.
Backup for GKE는 선택적으로 RestorePlan
의 일부로 정의할 수 있는 대체 규칙이라고 하는 메커니즘을 제공합니다.
대체 규칙은 지정된 일치 기준과 대체 필드 값의 집합입니다. 다음과 같이 복원 프로세스에서 대체 규칙을 사용할 수 있습니다.
먼저 Backup for GKE는 복원 구성의 범위 매개변수(예: 네임스페이스, 그룹/종류)를 기반으로 복원할 리소스 집합을 계산합니다.
Backup for GKE는 복원하기 위해 선택된 각 리소스를 정렬된 대체 규칙 목록에 따라 평가합니다. 규칙이 리소스와 일치하면 리소스가 대체 필드 값으로 업데이트됩니다. 모든 리소스가 모든 규칙과 일치하므로 같은 리소스에 여러 대체가 수행될 수 있습니다.
모든 규칙이 평가되면 Backup for GKE에서 대상 클러스터에 결과 리소스 집합을 만듭니다.
대체 규칙 매개변수
대체 규칙을 정의하려면 다음 매개변수를 제공합니다.
매개변수 | 필수 | Description(설명) |
---|---|---|
targetNamespaces | 선택사항 |
네임스페이스 목록입니다. 리소스가 이 규칙과 일치하려면 네임스페이스가 지정된 리소스이며 지정된 네임스페이스 중 하나가 있어야 합니다.
|
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'