为 MinIO 创建 BucketClass
MinIO 通过 Container Object Storage Interface (COSI) 与 Kubernetes 集成,提供可扩展的、兼容 S3 的对象存储,适用于分析、备份与恢复以及 ML/AI 工作负载。在配置桶之前,需要定义一个 BucketClass。
BucketClass 是一个模板资源,用于设置存储驱动、认证 Secret 以及应用于所有由其创建的桶的删除策略。
目录
前提条件
| 需求 | 说明 |
|---|
| 已准备好的 MinIO 集群 | 按照 安装指南 准备 MinIO。 |
| Alauda Container Platform COSI 插件 | 必须安装 acp-cosi 和 acp-cosi-minio。安装步骤请参见 安装 COSI 插件。 |
| 包含 MinIO 凭证的 Kubernetes Secret | 在 步骤 2 中准备。 |
步骤 1 - 准备 MinIO 集群
确保已安装并可访问 MinIO 集群。请参考 MinIO 安装文档 部署和配置您的 MinIO 环境。
步骤 2 - 准备凭证 Secret
COSI 从 Kubernetes Secret 中获取 MinIO 凭证。收集以下值:
Endpoint - 例如 http://minio.minio-system.svc 或 https://minio.example.com:9000
AccessKey
SecretKey
在目标命名空间中创建 Secret,并为 UI 发现添加标签:
kubectl create secret generic minio-credentials -n <YOUR_NAMESPACE> \
--from-literal=Endpoint=http://<YOUR_MINIO_ENDPOINT> \
--from-literal=AccessKey=<YOUR_ACCESS_KEY> \
--from-literal=SecretKey=<YOUR_SECRET_KEY>
kubectl label secret minio-credentials -n <YOUR_NAMESPACE> app=minio
重要提示: 标签 app=minio 是平台 UI 列出该 Secret 的必要条件。
注意: 键名 区分大小写,必须严格为 Endpoint、AccessKey 和 SecretKey。
如果您偏好 GitOps,可以声明式定义 Secret:
apiVersion: v1
kind: Secret
metadata:
name: minio-credentials
namespace: <YOUR_NAMESPACE>
labels:
app: minio
type: Opaque
stringData:
Endpoint: http://<YOUR_MINIO_ENDPOINT>
AccessKey: <YOUR_ACCESS_KEY>
SecretKey: <YOUR_SECRET_KEY>
步骤 3 - 创建 BucketClass
选项 1 - UI 操作流程
-
进入 Storage → Object StorageClass,点击 Create Object StorageClass。
-
选择驱动为 MinIO Object Storage。
-
配置以下字段:
- Deletion Policy - 当 BucketClaim 被删除时,底层桶的处理方式(默认值:
Delete)。
- Secret - 选择步骤 2 中创建的 Secret(仅显示带有
app=minio 标签的 Secret)。
- Allocate Projects - 可选:限制使用范围到特定项目。
-
点击 Create。
选项 2 - YAML(支持 GitOps)
创建 minio-bucketclass.yaml。以下示例使用 MinIO COSI 驱动,并指向正确的 Secret 引用。
apiVersion: objectstorage.k8s.io/v1alpha1
kind: BucketClass
driverName: minio.objectstorage.k8s.io
metadata:
labels:
project.cpaas.io/name: null
project.cpaas.io/ALL_ALL: "true"
name: minio-bucket-class
annotations:
cpaas.io/display-name: BucketClass for MinIO
cpaas.io/access-mode: ""
cpaas.io/features: ""
parameters:
providerSecretName: <your-secret-name>
providerSecretNamespace: <your-secret-namespace>
deletionPolicy: Delete
应用清单:
kubectl apply -f minio-bucketclass.yaml
验证与后续步骤
验证 BucketClass:
当 BucketClass 准备就绪后,创建引用该 BucketClass 的 Bucket 或 BucketClaim 资源,以配置由 MinIO 支持的兼容 S3 的对象存储。