이 페이지에서는 에어 갭이 있는 Google Distributed Cloud (GDC)에서 가상 머신 (VM)의 백업 저장소를 만드는 방법을 설명합니다.
백업 또는 스냅샷을 만들기 전에 여러 백업 또는 스냅샷 간에 공유할 수 있는 백업 저장소를 하나 이상 정의해야 합니다. 백업 저장소는 백업 시스템에 백업을 저장하거나 검색할 위치를 알려줍니다. VM의 백업 저장소는 관리 API 서버로 제한됩니다.
시작하기 전에
백업 저장소를 만들기 전에 기본 스토리지를 프로비저닝하고 다음을 비롯한 필요한 권한을 구성해야 합니다.
- 객체 스토리지 버킷 및 S3 호환 엔드포인트
- 버킷에 대한 액세스 권한이 부여된 서비스 계정 및 해당 S3 사용자 인증 정보
필요한 IAM 역할:
- 조직 백업 관리자: 사용자 클러스터의 백업 및 복원 계획과 같은 백업 리소스를 관리합니다.
- 보안 비밀 뷰어: 프로젝트의 Kubernetes 보안 비밀을 봅니다.
조직 IAM 관리자에게 조직 백업 관리자 (
organization-backup-admin) 및 보안 비밀 뷰어 (secret-viewer) 역할을 부여해 달라고 요청하세요. 자세한 내용은 역할 정의를 참고하세요.
백업 저장소 만들기
GDC 콘솔 또는 API를 사용하여 저장소를 만듭니다.
콘솔
- GDC 콘솔에 로그인합니다.
- 탐색 메뉴에서 가상 머신 백업 > 저장소를 클릭합니다.
- 저장소 만들기를 클릭합니다.
- 저장소 이름과 설명(선택사항)을 입력합니다.
S3 URI 엔드포인트 필드에 객체 스토리지 사이트의 정규화된 도메인 이름이 포함된 엔드포인트(예:
https://objectstorage.ORG.ZONE.DOMAIN.SUFFIX:PORT)를 입력합니다. 예를 들면https://objectstorage.org-1.zone1.google.gdch.test입니다.Bucket커스텀 리소스에서 값을 가져오려면 다음 명령어를 실행합니다.kubectl get Bucket BUCKET_NAME -n NAMESPACE -o json | jq -r '.status.endpoint'버킷 이름 필드에 버킷의 정규화된 도메인 이름을 입력합니다. GDC 콘솔의 버킷 세부정보 페이지에서 이 이름을 가져올 수 있습니다. 또는
Bucket커스텀 리소스에서 값을 가져오려면 다음 명령어를 실행하세요.kubectl get Bucket BUCKET_NAME -n NAMESPACE -o json | jq -r '.status.fullyQualifiedName'버킷 리전 필드에 버킷이 생성된 리전을 입력하고 버킷 커스텀 리소스에서 값을 가져오려면 다음 명령어를 실행합니다.
kubectl get Bucket BUCKET_NAME -n NAMESPACE -o json | jq -r '.status.region'액세스 키 ID 및 액세스 키 필드에 액세스 키 ID와 보안 비밀 액세스 키를 입력합니다. 이러한 사용자 인증 정보를 획득하는 방법에 대한 자세한 내용은 스토리지 버킷 액세스 권한 부여 및 획득을 참고하세요.
만들기를 클릭합니다.
API
S3 사용자 인증 정보를 사용하여 BackupRepository 커스텀 리소스를 만듭니다.
S3 사용자 인증 정보가 포함된 보안 비밀의 이름을 가져옵니다.
export PROJECT_NAME=PROJECT_NAME export SA_NAME=SA_NAME kubectl get secrets --namespace $PROJECT_NAME -o json | jq -r --arg USER_NAME "${SA_NAME:?}" '.items[] | select( (.metadata.annotations."object.gdc.goog/subject"==$USER_NAME)) | .metadata.name'명령어에서 반환된 비밀 이름을 기록하고 다음 단계에서
SECRET_NAME로 사용해야 합니다.다음을 바꿉니다.
PROJECT_NAME: 프로젝트의 이름SA_NAME: 객체 스토리지에 액세스하는 데 사용되는 서비스 계정의 이름입니다.
FQDN 및 엔드포인트와 같은 버킷 세부정보를 가져오려면 출력에서
fullyQualifiedName및zonalEndpoints값을 추출합니다.kubectl get buckets -n PROJECT_NAME BUCKET_NAME -o yaml관리 API 서버 내에
BackupRepository를 만듭니다.apiVersion: backup.gdc.goog/v1 kind: BackupRepository metadata: name: REPOSITORY_NAME spec: secretReference: namespace: PROJECT_NAME name: SECRET_NAME endpoint: ENDPOINT type: "S3" s3Options: bucket: BUCKET_FQDN region: REGION forcePathStyle: FORCE_PATH_STYLE importPolicy: IMPORT_POLICY다음을 바꿉니다.
REPOSITORY_NAME: 백업 저장소의 이름PROJECT_NAME: 프로젝트의 이름SA_NAME: 객체 스토리지에 액세스하는 데 사용되는 서비스 계정의 이름입니다.SECRET_NAME:kubectl get secrets명령어에서 반환된 보안 비밀의 이름입니다.ENDPOINT: 스토리지 시스템의 정규화된 도메인 이름입니다(예:https://objectstorage.google.gdch.test).type필드에는S3값만 지원됩니다.BUCKET_FQDN: 버킷의 정규화된 이름입니다.REGION: 버킷이 생성된 리전입니다.FORCE_PATH_STYLE:forcePathStyle필드를 사용하여 객체의 경로 스타일 URL을 강제합니다. 이 필드의 값은true또는false이어야 합니다.IMPORT_POLICY: 다음 중 하나로 설정합니다.ReadWrite: 이 저장소를 사용하여 백업, 백업 계획, 복원을 예약하거나 만들 수 있습니다.ReadOnly: 이 저장소는 백업을 가져오고 보는 데만 사용할 수 있습니다. 이 저장소에서는 새 백업이나 리소스를 만들 수 없지만 복원에서는 읽기 전용 백업을 사용하여 복원할 수 있습니다. 백업 저장소를 ReadOnly로 사용할 수 있는 빈도에는 제한이 없습니다.
BackupRepository는 이름이 동일한 읽기-쓰기 지원BackupRepository리소스를 관리 API 서버에 만듭니다.