本頁面說明如何建立 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 伺服器執行指令,請按照下列步驟操作:
- 如果沒有可用檔案,請登入並產生可用於可用區 Management API 伺服器的 kubeconfig 檔案。
- 如果是雙可用區 bucket,請按照下列步驟操作:
- 請向基礎架構運作人員 (IO) 確認,已為配對可用區建立
BucketLocationConfig自訂資源。 - 產生全域 API 伺服器的 kubeconfig 檔案。
- 請向基礎架構運作人員 (IO) 確認,已為配對可用區建立
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。
控制台
- 在導覽選單中,按一下「Object Storage」(物件儲存庫)。
- 在專案選取器中,選取要建立 bucket 的專案。
- 點選「建立 bucket」。
- 在 bucket 建立流程中,為專案內的所有 bucket 指派不重複的名稱。
- 輸入說明。
- 在「儲存空間級別」下方,選取「Standard」或「Nearline」。只有在啟用 Nearline Storage 時,系統才會顯示「Nearline」選項。
- 選用:按一下 toggle_off 切換鈕,設定資料保留政策並輸入偏好的天數。如需超過資料保留政策限制,請與 IO 聯絡。
- 點選「建立」。系統會顯示成功訊息,並將您導回「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 後,請執行下列指令,確認並查看 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