本页面介绍了如何创建 Google Distributed Cloud (GDC) 网闸隔离存储桶。
准备工作
存储桶是限定于特定项目的资源。项目充当容器,对存储桶进行分组,并支持通过 Management API 服务器对其进行管理。您必须先创建一个新项目,或选择一个您拥有足够权限的现有项目,然后才能执行本页面上的操作。
所需 IAM 角色
请与您的 IAM 项目管理员联系,请求在项目命名空间中授予以下角色:
- Project Bucket Admin (
project-bucket-admin):创建、更新和删除存储桶。 - Project Bucket Object Viewer (
project-bucket-object-viewer):查看和检查存储桶和对象的详细信息。
如需了解详情,请参阅授予存储桶访问权限。
准备环境
如需针对管理 API 服务器或全局 API 服务器运行命令,请执行以下操作:
- 如果您没有可用区级管理 API 服务器的 kubeconfig 文件,请登录并生成该文件。
- 对于双可用区存储桶,请执行以下操作:
- 请与您的基础架构运维人员 (IO) 确认,是否已为您的配对可用区创建
BucketLocationConfig自定义资源。 - 为全局 API 服务器生成 kubeconfig 文件。
- 请与您的基础架构运维人员 (IO) 确认,是否已为您的配对可用区创建
存储桶命名准则
存储桶名称必须遵循以下命名惯例:
- 在项目中必须是唯一的。Management API 服务器会为存储桶的完全限定名称添加唯一前缀,以确保组织内不会发生冲突。如果不同组织的前缀和存储桶名称发生冲突(这种情况不太可能发生),则存储桶创建会失败,并显示“存储桶名称已被使用”错误。
- 请勿包含任何个人身份信息 (PII)。
- 符合 DNS 规范。
- 包含至少 1 个字符,且不超过 55 个字符。
- 以字母开头,且只能使用字母、数字和连字符。
创建存储桶
默认情况下,存储桶使用 Standard 存储类别。如果基础架构运维人员 (IO) 已启用 Nearline Storage,您还可以为访问频率较低的数据选择 Nearline 存储类别。单可用区和双可用区存储桶均支持 Nearline Storage。
控制台
- 在导航菜单中,点击对象存储。
- 在项目选择器中,选择要在其中创建存储桶的项目。
- 点击创建存储桶。
- 在存储桶创建流程中,为存储桶分配一个在项目内所有存储桶中唯一的名称。
- 请输入说明
- 在存储类别下,选择标准或 Nearline。只有在启用了 Nearline Storage 的情况下,Nearline 选项才会显示。
- 可选:点击 toggle_off 切换开关以设置保留政策,然后输入您偏好的天数。如果您需要超出保留政策限制,请与您的 IO 联系。
- 点击创建。系统会显示一条成功消息,并将您定向回存储桶页面。
如需验证您是否已成功创建新存储桶,请在几分钟后刷新存储桶页面,并检查存储桶状态是否已从 Not ready 更新为 Ready。
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。
API
如需创建可用区级存储桶,请将存储桶规范应用于项目命名空间:
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 的存储桶规范示例:
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 服务器执行。
如需创建双区域存储桶,请针对全局 API 服务器应用规范:
kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f bucket.yaml
验证存储桶和相关资源的创建
创建存储桶后,运行以下命令以确认并查看存储桶的详细信息:
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG describe buckets BUCKET_NAME -n PROJECT_NAMESPACE
Status 部分有两个重要字段:Encryption(用于加密详细信息)和 Fully Qualified 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: 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
您还可以运行以下命令,验证是否已创建所需的 AEADKeys:
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG get aeadkeys -n PROJECT_NAMESPACE -l cmek.security.gdc.goog/resource-name=FULLY_QUALIFIED_BUCKET_NAME