为项目创建存储分区

本页面介绍了如何创建 Google Distributed Cloud (GDC) 气隙存储分区。

准备工作

项目命名空间用于管理 Management API 服务器中的存储桶资源。您必须拥有一个项目才能使用存储分区和对象。

您还必须拥有相应的存储桶权限才能执行以下操作。请参阅授予存储桶访问权限

存储桶命名准则

存储分区名称必须遵循以下命名惯例:

  • 在项目中必须是唯一的。管理 API 服务器会在存储桶的完全限定名称前添加唯一前缀,以确保组织内不会发生冲突。如果不同组织之间出现前缀和存储桶名称冲突,则存储桶创建会失败,并显示“存储桶名称已被使用”错误。
  • 请勿包含任何个人身份信息 (PII)。
  • 符合 DNS 规范。
  • 至少包含 1 个字符,最多包含 55 个字符。
  • 以字母开头,且只能使用字母、数字和连字符。

创建存储桶

默认情况下,存储分区使用 Standard 存储类别。如果您的基础设施运营商 (IO) 已启用 Nearline Storage,您还可以为访问频率较低的数据选择 Nearline 存储类别。Nearline Storage 支持单可用区存储分区和双可用区存储分区。

控制台

  1. 在导航菜单中,点击对象存储
  2. 在项目选择器中,选择要创建存储桶的项目。
  3. 点击创建存储桶
  4. 在存储桶创建流程中,分配一个在项目中的所有存储桶中唯一的名称。
  5. 请输入说明
  6. 存储类别下,选择标准Nearline。只有在启用 Nearline Storage 后,系统才会显示 Nearline 选项。
  7. 可选:点击 toggle_off 开关以设置保留政策,然后输入您偏好的天数。如果您需要超出保留政策限额,请与您的 IO 联系。
  8. 点击创建。系统会显示一条成功消息,然后您会被重定向回 Buckets 页面。

如需验证您是否已成功创建新存储桶,请在几分钟后刷新存储桶页面,并检查存储桶状态是否已从 Not ready 更新为 Ready

API

如需创建存储桶,请将存储桶规范应用于项目命名空间:

kubectl 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

如需了解详情,请参阅 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 的双可用区存储桶,请设置 storageClass: Nearline

请注意,双区域存储桶仅支持 V2 加密,并且创建、更新或删除双区域存储桶资源的所有操作都必须针对全球 API 服务器执行。

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

该信息与名为 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