이 페이지에서는 Google Distributed Cloud (GDC) 오프라인 이중 영역 버킷의 백업 저장소를 구성하는 방법을 설명합니다. 이를 통해 영역 장애 발생 시 다운타임을 최소화하면서 중요한 데이터와 애플리케이션의 고가용성을 유지할 수 있습니다. 이 페이지에서는 이중 영역 버킷을 만들고, 버킷 보안 비밀을 복사하고, 여러 영역에 백업 저장소를 설정하는 단계를 설명합니다.
이 페이지는 조직 내에서 리소스를 관리하는 플랫폼 관리자 그룹의 IT 관리자와 GDC 유니버스에서 애플리케이션을 개발하고 유지관리하는 애플리케이션 운영자 그룹의 애플리케이션 개발자를 대상으로 합니다.
자세한 내용은 GDC 오프라인 문서의 대상을 참고하세요.
시작하기 전에
GDC 이중 영역 버킷의 백업 및 복원 서비스를 사용하려면 다음이 필요합니다.
- 최소 2개의 영역으로 프로비저닝된 환경입니다.
- 전역 조직 클라이언트 또는 전역 루트 클라이언트에 대한 액세스 권한
- 워크로드가 프로젝트 내에서 프로비저닝된 경우 전역 조직 클라이언트를 사용합니다.
- 워크로드가 루트에 프로비저닝된 경우 전역 루트 클라이언트를 사용합니다.
- 이중 영역 버킷을 만드는 데 필요한
global-project-bucket-admin역할
이중 영역 버킷 만들기
이중 리전 버킷을 만들려면 먼저 버킷이 상주할 프로젝트 리소스를 만들어야 합니다. 프로젝트를 만들려면 다음 단계를 따르세요.
전역 조직 클러스터에서 프로젝트 리소스를 만듭니다.
apiVersion: resourcemanager.global.gdc.goog/v1 kind: Project metadata: namespace: platform name: PROJECT_NAME labels: object.gdc.goog/tenant-category: user다음을 바꿉니다.
PROJECT_NAME: 프로젝트의 이름입니다.
이중 영역 버킷을 만듭니다.
apiVersion: object.global.gdc.goog/v1 kind: Bucket metadata: name: BUCKET_NAME namespace: PROJECT_NAME spec: location: LOCATION_TYPE description: DESCRIPTION storageClass: Standard다음을 바꿉니다.
BUCKET_NAME: 버킷의 이름입니다.LOCATION_TYPE: 복제 유형입니다. 동기식 복제의 경우 값은syncz1z2입니다. 비동기 복제의 경우 값은asyncz1z2입니다.DESCRIPTION: 버킷에 대한 텍스트 설명입니다.
서비스 계정과 Identity and Access Management (IAM) 역할 바인딩을 만들어 버킷에 필요한 권한을 부여합니다.
apiVersion: v1 kind: ServiceAccount metadata: name: BUCKET_NAME-sa namespace: PROJECT_NAME --- apiVersion: iam.global.gdc.goog/v1 kind: IAMRoleBinding metadata: namespace: PROJECT_NAME name: BUCKET_NAME-admin-binding spec: roleRef: apiGroup: iam.global.gdc.goog kind: IAMRole name: project-bucket-object-admin subjects: - kind: ServiceAccount name: BUCKET_NAME-sa namespace: PROJECT_NAME버킷 상태가
ready로 표시될 때까지 기다립니다.
버킷 보안 비밀을 두 영역에 모두 복사합니다.
버킷과 필요한 권한이 구성되면 주석으로 식별할 수 있는 보안 비밀이 전역 조직 클러스터에 생성됩니다.
버킷의 주석으로 보안 비밀이 생성되었는지 확인합니다.
export BUCKET_SECRET=$(kubectl get secret -n PROJECT_NAME -o jsonpath="{range .items[*]}{.metadata.name}{':'}{.metadata.annotations['object\.gdc\.goog/subject']}{'\n'}{end}" | grep :BUCKET_NAME | cut -f1 -d :)보안 비밀 콘텐츠를 가져옵니다.
kubectl get secret -n PROJECT_NAME BUCKET_SECRET -o yaml > bucket_secret.yamlzone-1 및 zone-2의 조직 관리 클러스터에 동일한 보안 비밀을 만듭니다. 생성 오류를 방지하려면 YAML 파일에서
resourceVersion,uid,creationTimeStamp를 삭제해야 합니다.# zone-1 kubectl apply -f bucket_secret.yaml # zone-2 kubectl apply -f bucket_secret.yaml
백업 저장소 만들기
버킷과 보안 비밀이 구성되면 zone-1과 zone-2에 백업 저장소를 만듭니다.
FQDN 및 엔드포인트와 같은 버킷 세부정보를 가져오려면 전역 조직 클러스터에서 다음 명령어를 사용하세요. 출력에서
fullyQualifiedName및zonalEndpoints을 추출합니다.kubectl get buckets.object.global.gdc.goog -n PROJECT_NAME BUCKET_NAME -o yaml관리 클러스터의 zone-1에 읽기-쓰기 백업 저장소를 만들려면 다음 명령어를 사용합니다. zone-1의 영역 엔드포인트를 사용해야 합니다.
apiVersion: backup.gdc.goog/v1 kind: BackupRepository metadata: annotations: backup.gdc.goog/dz-bucket: "true" backup.gdc.goog/dz-bucket-info-namespace: PROJECT_NAME finalizers: - backup.gdc.goog/sentinel-finalizer generation: 1 name: BACKUP_REPOSITORY_NAME spec: endpoint: ENDPOINT force: false importPolicy: ReadWrite s3Options: bucket: BUCKET_FULL_NAME forcePathStyle: true region: zone2 secretReference: name: BUCKET_SECRET namespace: PROJECT_NAME type: S3다음을 바꿉니다.
BACKUP_REPOSITORY_NAME: 백업 저장소의 이름ENDPOINT: 영역 1의 영역 엔드포인트입니다.BUCKET_FULL_NAME: 정규화된 버킷의 이름입니다.BUCKET_SECRET: 버킷의 보안 비밀입니다.
백업 저장소에서 생성 성공 여부를 확인합니다.
kubectl get backuprepositories.backup.gdc.goog BACKUP_REPOSITORY_NAME이중 영역 버킷 주석으로 백업 저장소에 주석을 추가합니다.
kubectl -n PROJECT_NAME annotate --overwrite backuprepositories.backup.gdc.goog BACKUP_REPOSITORY_NAME backup.gdc.goog/dz-bucket="true" kubectl -n PROJECT_NAME annotate --overwrite backuprepositories.backup.gdc.goog BACKUP_REPOSITORY_NAME backup.gdc.goog/dz-bucket-info-namespace=PROJECT_NAME관리 클러스터의 zone-2에 읽기 전용 저장소를 만듭니다. 이 명령어에는 zone-2의 영역별 엔드포인트를 사용합니다.
apiVersion: backup.gdc.goog/v1 kind: ClusterBackupRepository metadata: annotations: backup.gdc.goog/dz-bucket: "true" backup.gdc.goog/dz-bucket-info-namespace: PROJECT_NAME finalizers: - backup.gdc.goog/sentinel-finalizer generation: 1 name: BACKUP_REPOSITORY_NAME spec: endpoint: ENDPOINT force: false importPolicy: ReadOnly s3Options: bucket: BUCKET_FULL_NAME forcePathStyle: true region: zone2 secretReference: name: BUCKET_SECRET namespace: PROJECT_NAME type: S3백업 저장소에서 생성 성공 여부를 확인합니다.
kubectl get backuprepositories.backup.gdc.goog BACKUP_REPOSITORY_NAME다음 주석으로 기본 백업 저장소 리소스에 주석을 답니다.
kubectl -n PROJECT_NAME annotate --overwrite backuprepositories.backup.gdc.goog BACKUP_REPOSITORY_NAME backup.gdc.goog/dz-bucket="true" kubectl -n PROJECT_NAME annotate --overwrite backuprepositories.backup.gdc.goog BACKUP_REPOSITORY_NAME backup.gdc.goog/dz-bucket-info-namespace=PROJECT_NAME
워크로드를 백업 저장소에 백업
백업 저장소를 구성한 후 단계에 따라 워크로드를 백업하고 복원합니다.