• Русский
  • Создание BucketClass для MinIO

    MinIO интегрируется с Kubernetes через Container Object Storage Interface (COSI), обеспечивая масштабируемое объектное хранилище, совместимое с S3, для аналитики, резервного копирования и восстановления, а также для рабочих нагрузок ML/AI. Перед созданием бакетов необходимо определить BucketClass.

    BucketClass — это шаблонный ресурс, который задаёт драйвер хранения, секрет аутентификации и политику удаления, применяемую ко всем бакетам, созданным на его основе.

    Предварительные требования

    ТребованиеПримечания
    Кластер MinIO готов к использованиюПодготовьте MinIO, следуя руководству по установке.
    Плагины COSI для Alauda Container PlatformДолжны быть установлены acp-cosi и acp-cosi-minio. См. Установка плагинов COSI для инструкций.
    Kubernetes Secret с учётными данными MinIOПодготовлен на Шаге 2.

    Шаг 1 — Подготовка кластера MinIO

    Убедитесь, что кластер MinIO установлен и доступен. Следуйте документации по установке MinIO для развертывания и настройки вашей среды MinIO.

    Шаг 2 — Подготовка секрета с учётными данными

    COSI получает учётные данные MinIO из Kubernetes Secret. Соберите следующие значения:

    • Endpoint — например, http://minio.minio-system.svc или https://minio.example.com:9000
    • AccessKey
    • SecretKey

    Создайте Secret в целевом namespace и добавьте метку для обнаружения в 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 платформы.

    Примечание: Имена ключей чувствительны к регистру и должны быть точно 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

    1. Перейдите в Storage → Object StorageClass и нажмите Create Object StorageClass.

    2. Выберите драйвер MinIO Object Storage.

    3. Заполните следующие поля:

      • Deletion Policy — как будет обрабатываться базовый бакет при удалении его BucketClaim (по умолчанию: Delete).
      • Secret — выберите секрет, созданный на Шаге 2 (отображаются только секреты с меткой app=minio).
      • Allocate Projects — необязательно: ограничить использование определёнными проектами.
    4. Нажмите Create.

    Вариант 2 — YAML (GitOps-дружественный)

    Создайте файл minio-bucketclass.yaml. В примере ниже используется драйвер MinIO COSI и ссылка на секрет с правильными параметрами.

    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 создайте ресурсы Bucket или BucketClaim, ссылающиеся на него, чтобы обеспечить объектное хранилище, совместимое с S3, на базе MinIO.