為專案建立儲存空間 bucket

本頁面說明如何建立 Google Distributed Cloud (GDC) 實體隔離儲存空間 bucket。

事前準備

Storage bucket 是特定專案範圍內的資源。專案就像容器,可將 bucket 分組,並透過 Management API 伺服器管理。您必須先建立新專案,或選取具備足夠權限的現有專案,才能執行這個頁面的作業。

必要的 IAM 角色

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

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

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

準備環境

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

  1. 如果沒有可用檔案,請登入並產生可用於可用區 Management API 伺服器的 kubeconfig 檔案。
  2. 如果是雙可用區 bucket,請按照下列步驟操作:

Storage bucket 命名規範

bucket 名稱必須符合下列命名慣例:

  • 在專案中不得重複。Management API 伺服器會在 bucket 的完整名稱前加上不重複的前置字串,確保組織內不會發生衝突。如果不同組織的前置字元和 bucket 名稱發生衝突 (這種情況不太可能發生),bucket 建立作業會失敗,並顯示「bucket name in use」(bucket 名稱已在使用中) 錯誤。
  • 請勿提供任何個人識別資訊 (PII)。
  • 符合 DNS 規範。
  • 長度介於 1 到 55 個字元。
  • 開頭須為英文字母,只能使用英文字母、數字和連字號。

建立值區

根據預設,bucket 會使用 Standard 儲存空間級別。如果基礎架構運作人員 (IO) 已啟用 Nearline Storage,您也可以為不常存取的資料選取 Nearline 儲存空間級別。Nearline Storage 支援單一可用區和雙可用區 bucket。

控制台

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

如要確認是否成功建立新的 bucket,請在幾分鐘後重新整理「Bucket」頁面,並確認 bucket 狀態是否從 Not ready 更新為 Ready。

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」。

API

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

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 的 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 伺服器的雙區域 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。

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

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

kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f bucket.yaml

建立 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,加密上傳至 bucket 的物件。

範例如下:

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

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

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