创建存储桶

本页面将引导您完成以下操作:为 Google Distributed Cloud (GDC) 空气隔离项目创建存储桶。其中介绍了前提条件、创建和验证步骤以及命名准则。这有助于您建立合规且配置完善的对象存储,以满足隔离部署的需求。

本页面面向的受众群体包括基础设施运维人员组中的 IT 管理员或应用运维人员组中的开发者,他们希望在 GDC 气隙环境内为项目预配和管理对象存储分区。如需了解详情,请参阅 GDC 气隙环境文档的受众群体

准备工作

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

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

存储桶命名准则

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

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

创建存储桶

控制台

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

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

CLI

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

kubectl apply -f bucket.yaml

以下是分桶规范的示例:

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

以下示例展示了加密版本为 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

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

gdcloud

如需使用 gdcloud 创建存储桶,请按照 gdcloud storage buckets create 中的说明操作。

创建存储桶后,您可以运行以下命令来确认并检查存储桶的详细信息:

kubectl describe buckets BUCKET_NAME -n NAMESPACE_NAME

状态部分包含两个重要字段:加密(用于显示加密详细信息)和完全限定名(包含 FULLY_QUALIFIED_BUCKET_NAME)。

加密 v1

此信息涉及名为 obj-FULLY_QUALIFIED_BUCKET_NAME 的 AEADKey,它用作对用于加密存储分区内存储的对象的加密密钥的引用。示例如下:

Status:
  Encryption:
    Key Ref:
      Kind: AEADKey
      Name: obj-FULLY_QUALIFIED_BUCKET_NAME
      Namespace: NAMESPACE_NAME
    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: NAMESPACE_NAME
    Type: CMEK

您还可以运行以下命令来验证是否已创建所需的 AEADKey:

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

创建存储桶后,您可以在授予存储桶访问权限时创建政策文件,并将该政策分配给存储桶,从而代表应用运营方 (AO) 管理存储桶。