为 MinIO 创建 BucketClass

MinIO 通过 Container Object Storage Interface (COSI) 与 Kubernetes 集成,提供可扩展的、兼容 S3 的对象存储,适用于分析、备份与恢复以及 ML/AI 工作负载。在配置桶之前,需要定义一个 BucketClass

BucketClass 是一个模板资源,用于设置存储驱动、认证 Secret 以及应用于所有由其创建的桶的删除策略。

前提条件

需求说明
已准备好的 MinIO 集群按照 安装指南 准备 MinIO。
Alauda Container Platform COSI 插件必须安装 acp-cosiacp-cosi-minio。安装步骤请参见 安装 COSI 插件
包含 MinIO 凭证的 Kubernetes Secret步骤 2 中准备。

步骤 1 - 准备 MinIO 集群

确保已安装并可访问 MinIO 集群。请参考 MinIO 安装文档 部署和配置您的 MinIO 环境。

步骤 2 - 准备凭证 Secret

COSI 从 Kubernetes Secret 中获取 MinIO 凭证。收集以下值:

  • Endpoint - 例如 http://minio.minio-system.svchttps://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 的必要条件。

注意: 键名 区分大小写,必须严格为 EndpointAccessKeySecretKey

如果您偏好 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 操作流程

  1. 进入 Storage → Object StorageClass,点击 Create Object StorageClass

  2. 选择驱动为 MinIO Object Storage

  3. 配置以下字段:

    • Deletion Policy - 当 BucketClaim 被删除时,底层桶的处理方式(默认值:Delete)。
    • Secret - 选择步骤 2 中创建的 Secret(仅显示带有 app=minio 标签的 Secret)。
    • Allocate Projects - 可选:限制使用范围到特定项目。
  4. 点击 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:

kubectl get bucketclass

当 BucketClass 准备就绪后,创建引用该 BucketClass 的 BucketBucketClaim 资源,以配置由 MinIO 支持的兼容 S3 的对象存储。