為專案建立儲存空間 bucket

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

事前準備

儲存空間值區是範圍僅限特定專案的資源。專案會做為容器,將值區分組,並透過 Management API 伺服器管理這些值區。如要在此頁面執行作業,您必須建立新專案,或選取具備足夠權限的現有專案。

必要的 IAM 角色

請與 IAM 專案管理員聯絡,要求在專案命名空間中取得下列角色:

  • 專案值區管理員 (project-bucket-admin):建立、更新及刪除儲存空間值區。
  • 專案值區物件檢視者 (project-bucket-object-viewer):查看及檢查儲存空間值區和物件的詳細資料。

詳情請參閱「授予 bucket 存取權」。

準備環境

如要對管理 API 伺服器或全域 API 伺服器執行指令,請按照下列步驟操作:

  1. 如果沒有區域管理 API 伺服器的 kubeconfig 檔案,請登入並產生該檔案。
  2. 如果是雙區域值區,請執行下列操作:

Storage 值區命名規範

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

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

建立 Bucket

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

控制台

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

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

API

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

kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG 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 參考資料。

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

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

如要建立雙區域 bucket,請對全域 API 伺服器套用規格:

kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f bucket.yaml

gdcloud

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

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

如要使用全域位置建立雙區域 bucket,請使用 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。

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

kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG 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 --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG get aeadkeys -n PROJECT_NAMESPACE -l  cmek.security.gdc.goog/resource-name=FULLY_QUALIFIED_BUCKET_NAME