Доступно в редакциях: Ultimate/EE
Входит в расширения: Продвинутое хранение данных
Стадия жизненного цикла модуля: Экспериментальная версия
У модуля есть требования для установки
Модуль sds-object предоставляет S3-совместимое объектное хранилище в кластере Deckhouse Kubernetes Platform (DKP). Пользователь создаёт ресурс Bucket и получает S3-бакет, не разворачивая и не обслуживая хранилище самостоятельно.
Администратор настраивает хранилище на базе SeaweedFS или Ceph RGW и создаёт для пользователей один или несколько классов ObjectStore. Пользователю достаточно выбрать подходящий класс — настраивать само хранилище ему не требуется.
Основные возможности
Модуль предоставляет следующие возможности:
- Самостоятельное создание S3-бакетов с помощью ресурса Bucket.
- Получение отдельных учётных данных с правами
ReadOnlyилиReadWriteс помощью BucketAccess. Для ротации учётных данных используется аннотацияstorage.deckhouse.io/rotate; пересоздавать BucketAccess не требуется. - Создание нескольких классов ObjectStore с разными хранилищами, параметрами и квотами. Ограничения можно задавать на уровне класса или отдельного бакета.
- Сохранение данных после удаления Bucket при использовании
reclaimPolicy: Retainи повторное подключение к ним при создании Bucket с тем же именем в том же неймспейсе. - Настройка публичного чтения через
accessPolicy: PublicRead, версионирования, lifecycle, Object Lock и серверного шифрования объектов. - Доступ к бакетам извне кластера через опубликованный S3-эндпоинт.
- Контроль состояния ресурсов. Текущее состояние и причины проблем доступны в поле
status, включаяconditions. Для хранилищ вstatusтакже доступны сведения об использовании ёмкости и результатах проверки целостности данных.
Как работает модуль
Создание бакета и получение доступа к нему происходит следующим образом:
- Администратор создаёт SeaweedFSStore или SDSElasticStore и настраивает хранилище.
- Администратор создаёт ObjectStore, связывает его с хранилищем через
storeRefи задаёт параметры бакетов по умолчанию. - Пользователь создаёт Bucket и указывает класс ObjectStore в
spec.objectStoreRef. - Модуль создаёт связанный ресурс BucketContents и S3-бакет в выбранном хранилище. BucketContents хранит сведения о созданном S3-бакете и хранилище, в котором находятся его данные.
- Пользователь создаёт BucketAccess. Модуль создаёт Secret с S3-эндпоинтом, именем бакета и учётными данными.
При удалении Bucket поведение данных определяется параметром reclaimPolicy. Значение Retain сохраняет данные и BucketContents, а Delete удаляет бакет вместе с данными.
Изменение или удаление класса ObjectStore не меняет хранилище уже созданного Bucket: ссылка на него сохраняется в BucketContents.
Пошаговый пример — в разделе «Использование».
Требования
Для работы модуля и выбранного хранилища должны выполняться следующие требования:
- Deckhouse Kubernetes Platform версии 1.72 или новее.
- Для хранилища на базе Ceph RGW требуется модуль
sds-elasticи готовый ElasticCluster. - Для хранилища на базе SeaweedFS отдельный модуль хранения не требуется.
- Для нескольких filer SeaweedFS требуется общее PostgreSQL-хранилище метаданных. Можно использовать PostgreSQL, управляемый модулем
managed-postgres(metadataStore: Postgres), или внешний PostgreSQL (metadataStore: External). ЗначениеmetadataStore: LevelDBподдерживает только один filer.
Ограничения
У модуля есть следующие ограничения:
- Подключение существующего S3-бакета не поддерживается: ресурс Bucket всегда создаёт новый бакет.
- Совместный доступ к одному бакету из нескольких неймспейсов не поддерживается.
quota.maxObjectsне применяется для SeaweedFS;quota.maxSizeприменяется для обоих бэкендов, а Ceph RGW также применяет ограничение по количеству объектов.- Object Lock можно настроить только при создании Bucket. Для него требуется включённое версионирование, а
reclaimPolicy: Deleteиспользовать нельзя. - К ключевым параметрам, которые нельзя изменить после создания, относятся:
Bucket.spec.objectStoreRefиBucket.spec.objectLock;BucketAccess.spec.bucketRef;ObjectStore.spec.storeRef;SeaweedFSStore.spec.masters,storage.class,replication,metadataStoreиreclaimPolicy;SDSElasticStore.spec.elasticClusterRefиreclaimPolicy. После включения серверного шифрования в режимеServerManagedего также нельзя отключить для существующего хранилища.
SeaweedFSStore.spec.volumeServersможно только увеличивать: удаление volume-сервера удаляет его PersistentVolumeClaim (PVC) вместе с хранящимися на нём объектами; предварительное перемещение данных не выполняется.SeaweedFSStore.spec.replicationпринимает только форму00z: все volume-серверы работают в одном кластере Kubernetes с топологией SeaweedFS по умолчанию, поэтому копии нельзя разместить в другой стойке или дата-центре.- Пулы метаданных Ceph RGW (
SDSElasticStore.spec.metadataPool) всегда реплицируются: erasure-coded-пулы не поддерживают операцииomap, необходимые метаданным RGW. - Отключение модуля при наличии управляемых хранилищ и бакетов может привести к недоступности или потере данных.