프로젝트용 스토리지 버킷 만들기

이 페이지에서는 Google Distributed Cloud (GDC) 에어 갭 스토리지 버킷을 만드는 방법을 보여줍니다.

시작하기 전에

스토리지 버킷은 특정 프로젝트 범위의 리소스입니다. 프로젝트는 컨테이너 역할을 하며 버킷을 그룹화하고 Management API 서버를 통해 버킷을 관리할 수 있도록 합니다. 이 페이지에서 작업을 수행하려면 새 프로젝트를 만들거나 충분한 권한이 있는 기존 프로젝트를 선택해야 합니다.

필요한 IAM 역할

IAM 프로젝트 관리자에게 문의하여 프로젝트 네임스페이스에서 다음 역할을 요청하세요.

  • 프로젝트 버킷 관리자 (project-bucket-admin): 스토리지 버킷을 만들고, 업데이트하고, 삭제합니다.
  • 프로젝트 버킷 객체 뷰어 (project-bucket-object-viewer): 스토리지 버킷 및 객체의 세부정보를 보고 확인합니다.

자세한 내용은 버킷 액세스 권한 부여를 참조하세요.

개발 환경 준비

관리 API 서버 또는 전역 API 서버에 대해 명령어를 실행하려면 다음을 수행합니다.

  1. 로그인하고 생성합니다. 영역 관리 API 서버의 kubeconfig 파일이 없는 경우 kubeconfig 파일을 생성합니다.
  2. 이중 영역 버킷의 경우 다음을 수행합니다.

스토리지 버킷 이름 지정 가이드라인

버킷 이름은 다음 이름 지정 규칙을 준수해야 합니다.

  • 프로젝트 내에서 고유해야 합니다. 관리 API 서버는 버킷의 정규화된 이름에 고유한 프리픽스를 추가하여 조직 내에서 충돌이 발생하지 않도록 합니다. 조직 간에 프리픽스와 버킷 이름이 충돌하는 드문 경우 버킷 생성에 실패하고 '버킷 이름이 사용 중' 오류가 발생합니다.
  • 개인 식별 정보 (PII)를 포함하지 마세요.
  • DNS를 준수해야 합니다.
  • 1~55자여야 합니다.
  • 문자로 시작하고 문자, 숫자, 하이픈만 사용해야 합니다.

버킷 만들기

기본적으로 버킷은 Standard 스토리지 클래스를 사용합니다. 인프라 운영자 (IO)가 Nearline Storage를 사용 설정한 경우 액세스 빈도가 낮은 데이터에 대해 Nearline 스토리지 클래스를 선택할 수도 있습니다. Nearline Storage는 단일 영역 버킷과 이중 영역 버킷 모두에서 지원됩니다.

콘솔

  1. 탐색 메뉴에서 객체 스토리지 를 클릭합니다.
  2. 프로젝트 선택기에서 버킷을 만들 프로젝트를 선택합니다.
  3. 버킷 만들기 를 클릭합니다.
  4. 버킷 생성 흐름에서 프로젝트 내의 모든 버킷에서 고유한 이름을 할당합니다.
  5. 설명을 입력합니다.
  6. 스토리지 클래스에서 표준 또는 Nearline을 선택합니다. Nearline 옵션은 Nearline Storage가 사용 설정된 경우에만 표시됩니다.
  7. 선택사항: toggle_off 전환 버튼을 클릭하여 보관 정책을 설정하고 원하는 일수를 입력합니다. 보관 정책 한도를 초과해야 하는 경우 IO에 문의하세요.
  8. 만들기 를 클릭합니다. 성공 메시지가 표시되고 버킷 페이지로 다시 이동합니다.

새 버킷이 생성되었는지 확인하려면 몇 분 후에 버킷 페이지를 새로고침하고 버킷 상태가 Not ready에서 Ready으로 업데이트되는지 확인합니다.

API

영역 버킷을 만들려면 프로젝트 네임스페이스에 버킷 사양을 적용합니다.

kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG apply -f bucket.yaml

다음은 Standard 스토리지 클래스를 사용하는 버킷 사양의 예입니다.

apiVersion: object.gdc.goog/v1
kind: Bucket
metadata:
  name: BUCKET_NAME
  namespace: NAMESPACE_NAME
spec:
  description: DESCRIPTION
  storageClass: Standard
  bucketPolicy:
    lockingPolicy:
      defaultObjectRetentionDays: RETENTION_DAY_COUNT

다음은 Nearline 스토리지 클래스를 사용하는 버킷 사양의 예입니다.

apiVersion: object.gdc.goog/v1
kind: Bucket
metadata:
  name: BUCKET_NAME
  namespace: NAMESPACE_NAME
spec:
  description: DESCRIPTION
  storageClass: Nearline
  bucketPolicy:
    lockingPolicy:
      defaultObjectRetentionDays: RETENTION_DAY_COUNT

다음은 암호화 버전이 v1인 버킷 사양의 예입니다.

apiVersion: object.gdc.goog/v1
kind: Bucket
metadata:
  name: BUCKET_NAME
  namespace: NAMESPACE_NAME
  labels:
    object.gdc.goog/encryption-version: v1
spec:
  description: DESCRIPTION
  storageClass: Standard
  bucketPolicy:
    lockingPolicy:
      defaultObjectRetentionDays: RETENTION_DAY_COUNT

자세한 내용은 버킷 API 참조를 확인하세요.

다음은 전역 API 서버의 이중 영역 버킷 사양의 예입니다.

apiVersion: object.global.gdc.goog/v1
kind: Bucket
metadata:
  name: BUCKET_NAME
  namespace: PROJECT_NAME
spec:
  location: LOCATION_NAME
  description: Sample DZ Bucket
  storageClass: Standard

Nearline Storage를 사용하여 이중 영역 버킷을 만들려면 storageClass: Nearline을 설정합니다.

이중 영역 버킷에는 V2 암호화만 지원되며 이중 영역 버킷 리소스를 만들거나 업데이트하거나 삭제하는 모든 작업은 전역 API 서버에 대해 수행해야 합니다.

이중 영역 버킷을 만들려면 전역 API 서버에 사양을 적용합니다.

kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f bucket.yaml

gdcloud

Nearline 스토리지 클래스를 사용하여 gdcloud로 단일 영역 버킷을 만들려면 다음 안내를 따르세요.

gdcloud storage buckets create BUCKET_NAME \
    --location=ZONE_NAME \
    --location-type=SingleZone \
    --storage-class=Nearline

전역 위치를 사용하여 gdcloud로 이중 영역 버킷을 만들려면 다음 안내를 따르세요.

gdcloud storage buckets create BUCKET_NAME \
    --location=ZONE_1,ZONE_2 \
    --location-type=AsyncDualZone \
    --storage-class=Nearline

--storage-class가 생략되면 기본적으로 Standard가 사용됩니다.

자세한 내용은 gdcloud storage buckets create를 참조하세요.

버킷을 만든 후 다음 명령어를 실행하여 버킷의 세부정보를 확인합니다.

kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG describe buckets BUCKET_NAME -n PROJECT_NAMESPACE

상태 섹션에는 암호화 (암호화 세부정보) 및 정규화된 이름 (FULLY_QUALIFIED_BUCKET_NAME 포함)이라는 두 가지 중요한 필드가 있습니다.

암호화 v1

이 정보는 버킷 내에 저장된 객체를 암호화하는 데 사용되는 암호화 키를 참조하는 obj-FULLY_QUALIFIED_BUCKET_NAME이라는 AEADKey에 관한 것입니다. 예를 들면 다음과 같습니다.

Status:
  Encryption:
    Key Ref:
      Kind: AEADKey
      Name: obj-FULLY_QUALIFIED_BUCKET_NAME
      Namespace: PROJECT_NAMESPACE
    Type: CMEK

암호화 v2

이 정보는 활성 기본 AEADKey의 참조 역할을 하는 kek-ref-FULLY_QUALIFIED_BUCKET_NAME이라는 Secret에 관한 것입니다. 활성 기본 AEADKey는 특정 AEADKey가 지정되지 않은 경우 버킷에 업로드된 객체를 암호화하기 위해 무작위로 선택됩니다.

예를 들면 다음과 같습니다.

Status:
  Encryption:
    Key Ref:
      Kind: Secret
      Name: kek-ref-FULLY_QUALIFIED_BUCKET_NAME
      Namespace: PROJECT_NAMESPACE
    Type: CMEK

다음 명령어를 실행하여 필요한 AEADKey가 생성되었는지 확인할 수도 있습니다.

kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG get aeadkeys -n PROJECT_NAMESPACE -l  cmek.security.gdc.goog/resource-name=FULLY_QUALIFIED_BUCKET_NAME