為專案建立儲存空間 bucket

本頁說明如何建立 Google Distributed Cloud (GDC) 離線儲存空間值區。

事前準備

專案命名空間可管理 Management API 伺服器中的 bucket 資源。您必須擁有專案,才能使用 bucket 和物件。

您也必須具備適當的 bucket 權限,才能執行下列作業。請參閱「授予 bucket 存取權」。

Storage 值區命名規範

值區名稱必須遵循下列命名慣例:

  • 在專案中不得重複。管理 API 伺服器會在儲存區的完整名稱前加上不重複的前置字元,確保機構內不會發生衝突。萬一發生前置字串和 bucket 名稱在不同機構之間衝突的情況,bucket 建立作業會失敗,並顯示「bucket 名稱已在使用中」錯誤。
  • 請勿加入任何個人識別資訊 (PII)。
  • 符合 DNS 規定。
  • 至少 1 個字元,最多 55 個字元。
  • 開頭須為英文字母,只能使用英文字母、數字和連字號。

建立值區

根據預設,bucket 會使用 Standard 儲存空間級別。如果基礎架構營運商 (IO) 已啟用 Nearline Storage,您也可以為存取頻率較低的資料選取 Nearline 儲存空間級別。單一區域和雙區域 bucket 皆支援 Nearline Storage。

控制台

  1. 在導覽選單中,按一下「物件儲存空間」
  2. 在專案選擇器中,選取要建立值區的專案。
  3. 按一下「建立值區」
  4. 在建立 bucket 的流程中,指派在專案內所有 bucket 中不重複的名稱。
  5. 輸入說明。
  6. 在「儲存空間級別」下方,選取「Standard」或「Nearline」。只有在啟用 Nearline Storage 時,系統才會顯示「Nearline」選項。
  7. 選用:按一下「toggle_off」toggle_off切換鈕,設定保留政策並輸入偏好的天數。如要超出保留政策限制,請與 IO 聯絡。
  8. 點選「建立」。系統會顯示成功訊息,並將你導回「Buckets」(值區) 頁面。

如要確認是否已成功建立新值區,請在幾分鐘後重新整理「Buckets」(值區) 頁面,並檢查值區狀態是否從 Not ready 更新為 Ready

API

如要建立 bucket,請將 bucket 規格套用至專案命名空間:

kubectl apply -f bucket.yaml

以下是使用 Standard 儲存空間級別的 bucket 規格範例:

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 儲存空間級別的 bucket 規格範例:

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 的 bucket 規格範例:

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

詳情請參閱 Bucket API 參考資料

以下是 org-admin 全球 API 中的雙區域 bucket 規格範例:

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 儲存空間建立雙區域 bucket,請設定 storageClass: Nearline

請注意,雙區域值區僅支援 V2 加密,且建立、更新或刪除雙區域值區資源的所有作業,都必須透過全域 API 伺服器執行。

gdcloud

如要使用 Nearline 儲存空間級別,透過 gdcloud 建立單一區域 bucket,請執行下列操作:

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

如要使用全域位置,透過 gdcloud 建立雙區域 bucket,請執行下列操作:

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

如果省略 --storage-class,系統預設會使用 Standard

詳情請參閱 gdcloud storage buckets create

建立 bucket 後,您可以執行下列指令來確認並檢查 bucket 的詳細資料:

kubectl describe buckets BUCKET_NAME -n PROJECT_NAMESPACE

「狀態」部分有兩個重要欄位:「加密」 (加密詳細資料) 和「完整名稱」 (包含 FULLY_QUALIFIED_BUCKET_NAME)。

加密 v1

這項資訊與名為 obj-FULLY_QUALIFIED_BUCKET_NAME 的 AEADKey 有關,該金鑰用於加密儲存在 bucket 中的物件。範例如下:

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

加密 v2

這項資訊與名為 kek-ref-FULLY_QUALIFIED_BUCKET_NAME 的 Secret 有關,該 Secret 可做為有效預設 AEADKey 的參照。如果未指定特定 AEADKey,系統會從有效預設 AEADKey 中隨機選取,用於加密上傳至值區的物件。

範例如下:

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

您也可以執行下列指令,確認已建立必要的 AEADKey:

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