Стадия жизненного цикла модуля: Общедоступная версия

У модуля есть требования для установки

v0.5.38

Дата релиза: 2026-10-19

Драйверы ceph-csi и CSI-сайдкары (sidecar — вспомогательные контейнеры CSI-драйвера) пишут логи с подробностью, заданной logLevel модуля, а не всегда на уровне трассировки.

Ключевые изменения

Изменения в этом релизе:

  • Плагины ceph-csi для RBD и CephFS и CSI-сайдкары модуля берут подробность klog из logLevel в ModuleConfig csi-ceph. При значении по умолчанию INFO они запускаются с --v=2 вместо --v=5, и объём их логов заметно уменьшается.

Улучшения

В этом релизе улучшено:

  • Подробность klog у плагинов ceph-csi для RBD и CephFS (controller и node) и у CSI-сайдкаров следует logLevel: ERROR даёт --v=0, WARN — --v=1, INFO (по умолчанию) — --v=2, DEBUG — --v=4, TRACE — --v=5. Раньше все они работали с --v=5 независимо от logLevel.

Рекомендации по обновлению

Перед обновлением учтите следующее:

  • Поды ceph-csi и CSI-сайдкаров один раз перезапускаются, чтобы получить новые аргументы. Чтобы сохранить прежние подробные логи, задайте logLevel: TRACE в ModuleConfig csi-ceph.

v0.5.37

Дата релиза: 2026-10-01

Несколько CephClusterConnection к одному кластеру Ceph больше не ломают тома друг друга: RBD-тома отключаются с секретом своего подключения, подключение не удаляется, пока оно нужно томам или снимкам, а новое условие показывает тома, которые общая конфигурация ceph-csi обслужить не может. Ceph CSI обновлён до v3.18.0.

Ключевые изменения

Изменения в этом релизе:

  • RBD-тома отключаются с секретом своего CephClusterConnection. Раньше при двух подключениях к одному кластеру Ceph отключение могло выполняться от пользователя другого подключения, падать с Operation not permitted и оставлять VolumeAttachment, из-за чего следующее подключение тома блокировалось ошибкой Multi-Attach.
  • Удаляемый CephClusterConnection сохраняет свой Secret и финализатор (finalizer — метка, удерживающая объект от удаления), пока они нужны PersistentVolume или VolumeSnapshotContent, и сообщает об этом в условии Ready с причиной PersistentVolumesExist или VolumeSnapshotContentsExist.
  • Новое условие ClusterConfigConflict у CephClusterConnection перечисляет тома, которым нужен другой пользователь Ceph или другая группа подтомов CephFS, чем записаны в общей конфигурации ceph-csi для их кластера.

Новый функционал

В этом релизе добавлено:

  • У CephClusterConnection появилось условие ClusterConfigConflict. ceph-csi хранит одну запись конфигурации на кластер Ceph: в ней пользователь одного подключения для RBD и группа подтомов одного подключения для CephFS. Условие равно True с причиной VolumesNeedOtherSettings, если томам, созданным через подключение, нужен другой пользователь или другая группа, чем в этой записи; в сообщении названы до десяти таких PersistentVolume и подключение, настройки которого хранит запись. В остальных случаях условие равно False с причиной ServedByClusterConfig. Условие выставляется на каждом подключении к общему кластеру и обновляется, когда перечисленные тома меняют фазу или удаляются. Затронуты RBD-тома, созданные до этого релиза, у подключения которых другой пользователь (их нельзя отключить от узла), и тома CephFS в другой группе подтомов (их можно смонтировать, но нельзя удалить, расширить или снять с них снимок).
  • В DKP 1.78 и новее модуль поставляет роли доступа в схеме RBACv2 capability/scope (возможность и область действия): d8:system-capability:csi-ceph:view и d8:system-capability:csi-ceph:edit для ресурсов CephClusterConnection, CephClusterAuthentication, CephStorageClass и CephMetadataBackup. В более ранних версиях DKP роли d8:manage:permission:module:csi-ceph:view и d8:manage:permission:module:csi-ceph:edit создаются без изменений.

Улучшения

В этом релизе улучшено:

  • Контроллер модуля больше не хранит managedFields объектов PersistentVolume и VolumeAttachment в своём кеше, где лежат объекты всех CSI-драйверов кластера, поэтому его потребление памяти меньше растёт с числом томов.

Исправления

В этом релизе исправлено:

  • Каждый RBD StorageClass теперь содержит параметры csi.storage.k8s.io/controller-publish-secret-name и csi.storage.k8s.io/controller-publish-secret-namespace, поэтому в каждом новом RBD PersistentVolume для отключения указан Secret его собственного CephClusterConnection. Раньше ceph-csi брал секрет для отключения из единственной записи конфигурации на кластер Ceph, которую контроллер перезаписывал данными подключения, обработанного последним. При двух подключениях к одному кластеру, например одном для RBD и другом для CephFS, у пользователя которого нет доступа к RBD-пулам, отключение завершалось ошибкой, и том нельзя было подключить на другом узле. Для RBD-томов, созданных до обновления и по-прежнему зависящих от этой записи, запись сохраняет подключение, от которого зависят тома, а удаление одного из подключений к кластеру больше не убирает запись, нужную остальным.
  • Удаление CephClusterConnection больше не оставляет его тома в нерабочем состоянии. Раньше его Secret удалялся сразу, и созданный через него том уже нельзя было отключить, расширить или удалить. Теперь подключение остаётся, пока его Secret нужен хотя бы одному PersistentVolume (подключённому к узлу, в фазе Bound или ещё не занятому, либо в фазе Released/Failed с политикой возврата Delete) и пока на него ссылается хотя бы один VolumeSnapshotContent с политикой удаления Delete. Его условие Ready равно False с причиной PersistentVolumesExist или, если остались только снимки, VolumeSnapshotContentsExist, а в сообщении названы до десяти таких объектов. PersistentVolume в фазе Released или Failed с политикой Retain, не подключённый ни к одному узлу, подключение не удерживает, поэтому такой том не блокирует удаление ElasticCluster в sds-elastic. Подключение удаляется сразу после исчезновения последнего тома или снимка.
  • Группа подтомов CephFS в общей записи конфигурации ceph-csi больше не переключается на группу другого CephClusterConnection, когда второе подключение к тому же кластеру создаёт свой первый том CephFS. Раньше созданные до этого тома CephFS после такого переключения уже нельзя было удалить или расширить. Теперь группа определяется по subvolumePath существующих томов, а мониторы в записи берутся из всех подключений к кластеру.

Рекомендации по обновлению

Перед обновлением учтите следующее:

  • Контроллер один раз пересоздаёт каждый существующий RBD StorageClass, чтобы добавить параметры секрета для отключения: в Kubernetes parameters у StorageClass неизменяемы. Существующие PersistentVolume и PVC не затрагиваются: секрет для отключения есть только у томов, созданных после обновления, а более старые RBD-тома по-прежнему отключаются через общую запись конфигурации ceph-csi.
  • После обновления проверьте условие ClusterConfigConflict в кластерах, где к одному кластеру Ceph ведут несколько CephClusterConnection. В FAQ приведена команда, которая выводит затронутые подключения, и описано, как дать перечисленным RBD-томам отключиться: выдать пользователю подключения, настройки которого хранит запись, доступ к их пулам.
  • Удаление CephClusterConnection теперь ждёт, пока не исчезнут PersistentVolume и VolumeSnapshotContent, которым нужен его Secret. Чтобы удаление завершилось, удалите их или VolumeSnapshot перечисленных объектов VolumeSnapshotContent. Для этого контроллер получает права на чтение PersistentVolume, VolumeAttachment и VolumeSnapshotContent.
  • В DKP 1.78 и новее роли ClusterRole d8:manage:permission:module:csi-ceph:* заменены на d8:system-capability:csi-ceph:*. Доступ, выданный через агрегацию ролей Deckhouse, продолжает работать; привязку, созданную вручную к одной из старых ролей, нужно перевести на новое имя.

Документация

Изменения в документации:

  • В FAQ описано, почему CephClusterConnection не удаляется и какие PersistentVolume и VolumeSnapshotContent его удерживают, а также что означает условие ClusterConfigConflict, как найти затронутые подключения и как дать перечисленным RBD-томам отключиться.

Зависимости

Обновления зависимостей:

  • ceph-csi: 3.16.3 → 3.18.0 (changelog)
    • Апстрим (исходный проект ceph-csi) уже содержит обновления зависимостей, которые вносил наш патч с исправлениями CVE, поэтому этот патч удалён; два функциональных патча, включая резерв ext4 для суперпользователя, перенесены на новый тег без изменения поведения.

v0.5.36

Дата релиза: 2026-09-14

Небольшой релиз: модуль по умолчанию пишет логи на уровне INFO, а пин golang.org/x/crypto больше не показывается сканерами как критичная находка в образе хуков.

Ключевые изменения

Изменения в этом релизе:

  • Значение logLevel по умолчанию теперь INFO, а не DEBUG, поэтому кластер, где параметр не задан явно, получает от модуля заметно меньше логов.
  • Пин golang.org/x/crypto поднят до v0.57.0, что убирает CVE-2026-56854, CVE-2026-56855 и CVE-2026-78662 из результатов сканирования образа хуков модуля.

Улучшения

В этом релизе улучшено:

  • Значение logLevel по умолчанию теперь INFO, а не DEBUG — его получит кластер, в котором параметр не задан явно.

Обновления безопасности

Обновления безопасности в этом релизе:

  • Пин golang.org/x/crypto поднят с v0.53.0 до v0.57.0 во всех компонентах, что убирает CVE-2026-56854, CVE-2026-56855 и CVE-2026-78662 из результатов сканирования образа хуков модуля. Ни одна из трёх не была достижима: уязвимый пакет x/crypto/ssh не попадает ни в один поставляемый модулем бинарный файл, поэтому исправлена находка сканера, а не эксплуатируемая уязвимость.

Рекомендации по обновлению

Перед обновлением учтите следующее:

  • Руками делать ничего не нужно. Кластеру, который полагался на прежнюю подробность логов, следует явно задать logLevel: DEBUG в конфигурации модуля, поскольку значение по умолчанию теперь INFO.

v0.5.35

Дата релиза: 2026-09-10

StorageClass для RBD теперь может оставлять часть файловой системы под нужды суперпользователя, контроллер модуля отдаёт метрики в Prometheus, а драйвер Ceph CSI обновлён до v3.16.3.

Ключевые изменения

Изменения в этом релизе:

  • CephStorageClass может через аннотацию storage.deckhouse.io/ext4-reserved-percent попросить резервировать долю каждого нового тома с ext4 под суперпользователя.
  • Контроллер модуля публикует свои метрики — число и длительность reconcile, глубину очереди, задержки обращений к API, — и Prometheus собирает их через ServiceMonitor.
  • Ceph CSI обновлён с v3.15.1 до v3.16.3.

Новый функционал

В этом релизе добавлено:

  • CephStorageClass принимает аннотацию storage.deckhouse.io/ext4-reserved-percent: целое число процентов от 0 до 50, которое mkfs.ext4 оставляет суперпользователю. Работает для классов с type: RBD, чьи тома форматируются в ext4, и игнорируется для CephFS и для томов с XFS; по умолчанию не резервируется ничего. Значение вне диапазона или не число переводит CephStorageClass в фазу Failed с причиной в conditions, а не ломает создание тома позже.
  • Метрики контроллера отдаются в Prometheus: ServiceMonitor собирает их для job csi-ceph-controller через kube-rbac-proxy, а сам контроллер держит endpoint на loopback.

Улучшения

В этом релизе улучшено:

  • По умолчанию контроллер пишет логи на уровне info, а не debug, поэтому на спокойном кластере лог больше не заполняется подробностями каждого reconcile; вернуть прежнюю подробность можно через LOG_LEVEL=debug.

Исправления

В этом релизе исправлено:

  • Правка аннотаций у CephStorageClass обрабатывается сразу. Раньше до reconciler доходили только изменения spec и меток, поэтому параметр, заданный аннотацией, применялся лишь после того, как ресурс менялся чем-то ещё.
  • Поды CSI больше не ждут в ContainerCreating на свежей установке, пока не появится первый CephClusterConnection: ConfigMap ceph-csi-config, который создаёт контроллер, монтируется как необязательный, а его замена больше не выводит драйвер из строя на несколько минут.

Зависимости

Обновления зависимостей:

  • ceph-csi: 3.15.1 → 3.16.3 (changelog)
    • Набор наших патчей пересобран на новом теге: то, что вошло в upstream, убрано, а оставшиеся обновления зависимостей, закрывающие уязвимости 2026 года, сведены в один патч.

v0.5.34

  • Исправление: релизный образ больше не собирается из кэша с устаревшим changelog.yaml — зависимости git-маппинга привязаны к стадии install, на которой файл и копируется
  • Обновление базовых образов до v2.1.4
  • Внутренние изменения в сборке модуля

v0.5.33

  • Исправление: контроллеру выданы права patch на events вместо list — повторная запись события больше не отклоняется по правам
  • Фиксы CVE
  • Обновление базовых образов до v2.1.2, Go до 1.26.6 и lib-helm до 1.72.14
  • Внутренние изменения в сборке: обновлён CI, в релизный образ добавлены crds, docs и openapi

v0.5.32

  • CephStorageClass, CephClusterConnection и CephClusterAuthentication публикуют status.conditions и status.observedGeneration. Поле status.phase сохраняет прежний набор значений и свою колонку, но теперь вычисляется из условия Ready
  • CephClusterAuthentication получил запись статуса, которой у него не было, и публикует условие Deprecated вместо Ready — этот ресурс не приводится к желаемому состоянию
  • Обновление базовых образов до v1.3.25 и lib-helm до 1.72.13

v0.5.31

  • Модуль snapshot-controller больше не обязательная зависимость: VolumeSnapshotClass создаётся только при наличии CRD snapshot.storage.k8s.io, иначе CephStorageClass обрабатывается без снапшотной части; после установки CRD перезапуск контроллера не требуется
  • Исправление: при отключённом msCrcData управляемые StorageClass переводятся на msgr1 (ms_mode=legacy) — иначе ядерные клиенты krbd и CephFS отбрасывали кадры без CRC и монтирование завершалось таймаутом при исправном кластере
  • Обновление базовых образов, Go 1.26.5 и lib-helm до 1.72.12
  • Устранены уязвимости в сторонних зависимостях
  • Внутренние изменения в сборке модуля и CI, добавлены e2e-тесты

v0.5.30

  • Исправление: валидация CephStorageClass больше не отклоняет ресурс с пустым блоком параметров противоположного типа (rbd или cephFS)
  • Обновление базовых образов, Go 1.26.5 и lib-helm до 1.72.9
  • Внутренние изменения в сборке модуля

v0.5.29

  • Исправлено формирование секрета доступа к registry (deckhouse-registry): теперь в него попадают данные авторизации только активного источника образов

v0.5.28

  • В образ CSI node добавлены утилиты e2fsck и fsck для проверки файловых систем

v0.5.27

  • При пробросе меток из CephStorageClass в StorageClass теперь исключаются метки с заданными игнорируемыми префиксами
  • Обновление базовых образов и lib-helm до 1.72.0

v0.5.26

  • Реконсиляция при изменении меток CephStorageClass для проброса в управляемый StorageClass Kubernetes
  • Обновление базовых образов, Go 1.25.10 и lib-helm 1.71.12

v0.5.25

  • Исправлены PromQL-выражения в алертах StorageClass — приведены к корректному формату меток kube_storageclass_labels и переименована группа в kubernetes.ceph.storage_class
  • Добавлено русское описание для CRD CephMetadataBackup

v0.5.24

  • Внутренние изменения в структуре и сборке модуля

v0.5.23

  • Обновление базовых образов, Go 1.25.10 и lib-helm 1.71.11
  • Внутренние изменения в сборку модуля

v0.5.22

  • Исправления в структуру модуля

v0.5.21

  • Добавлен параметр msCrcData для отключения проверки CRC32C на data-фреймах Ceph; при изменении ceph-config CSI-поды (RBD/CephFS) автоматически перезапускаются

v0.5.20

  • Изменения в CI: DistroPackagesProxy и env прокси в werf, доработки CVE-сканов (role_name, checkout, ограничения сканирования)
  • Добавлены кластерные роли user-authz в шаблонах

v0.5.19

  • Добавлены недостающие точки монтирования в distroless-образе csi-ceph
  • Обновление базовых образов и lib-helm

v0.5.18

  • Фикс CVE
  • Правки в документации

v0.5.17

  • Обновление module-sdk для фикса CVE
  • Обновление базовых образов и golang
  • Отключение запроса Capacity со стороны k8s (CSI не поддерживает выдачу Capacity)
  • Переработка документации

v0.5.16

  • Обновление module-sdk для фикса CVE

v0.5.15

  • Обновлена версия базовых образов
  • Обновлена зависимость Deckhouse до 1.72
  • Обновлен CSI до 3.15.1
  • Переработка манифестов
  • Исправлена ошибка при создании VolumeSnapshotClasses

v0.5.14

  • Исправление в документации
  • Фикс HA-mode, теперь он работает корректно
  • Убран функционал scheduler, остававшийся для совместимости со старыми версиями Deckhouse

v0.5.13

  • Обновлена версия базовых образов
  • Исправлены Prometheus правила
  • Исправлены CVE
  • Обновлена зависимость Deckhouse до 1.71
  • Обновлена версия Go до 1.24.10

v0.5.12

  • Обновлена версия Go до 1.24.9
  • Обновлена lib-helm до deckhouse_lib_helm-1.64.1

v0.5.11

  • Исправлена ошибка генерации configmap с данными для подключения к кластеру

v0.5.10

  • Исправлены CVE в ceph-csi

v0.5.9

  • Обновлена версия ceph-csi до v3.15.0

v0.5.8

  • Обновлена версия Go до 1.24.8
  • Обновлена lib-helm до deckhouse_lib_helm-1.63.6

v0.5.7

  • Добавлены файлы release notes

v0.5.6

  • Добавлена дополнительные монтирования для поддержки containerd v2

v0.5.5

  • Добавлена информация о необходимости snapshot-controller для работы модуля
  • Добавлен readonlyRootFilesystem для большей безопасности модуля

v0.5.4

  • Фиксы CVE

v0.5.3

  • Добавлена зависимость от snapshot-controller
  • Фиксы CVE

v0.5.2

  • Добавлены фиксы для поддержки containerd v2
  • Фиксы при обработке CephClusterConnection

v0.5.1

  • Добавлена поддержка subvolume group при указании данных кластера (также поле учитывается при миграции с ceph-csi)

v0.5.0

  • Добавлено автоматическое создание аннотаций VolumeSnapshotClassName у StorageClass для корректной работы snapshot-controller
  • Обновлен CSI до 3.14.2
  • Добавлена настройка для указания количество рабочих потоков у csi provisioner

v0.4.4

  • Рефакторинг модуля, правки в документацию и процесс сборки
  • Добавлена поддержка HA mode у CSI контроллера

v0.4.3

  • Технический релиз, рефакторинг модуля

v0.3.2

  • Обновление lib-helm и правки в патч кода CSI

v0.3.1

  • Правки в хук для автоматического слияния ресурсов CephClusterAuthorization и CephClusterConnection (теперь учитываются VolumeSnapshots, а не только PV)
  • Чистка metadata из образов (более чистые образы для уменьшения вопросов от ИБ клиентов)

v0.3.0

  • Исправлена ошибка генерации внутреннего configmap с настройками ceph
  • Добавлен хук для автоматического слияния ресурсов CephClusterAuthorization и CephClusterConnection (останется только CephClusterConnection со всеми необходимыми полями)

v0.2.2

  • Добавлены лейблы на наши CRD для корректной работы Deckhouse backup
  • Исправлены темплейты csi controller для корректной работы

v0.2.1

  • Обновление golang до актуальной 1.22.6 и замена устаревшей библиотеки логирования для закрытия известных уязвимостей

v0.2.0

  • Добавлены liveness и readiness пробы
  • Обновлена версия ceph-csi до 3.12.1, а также обновлены зависимости, про старые версии которых есть известные CVE
  • В RBD StorageClass включены фичи, нужные DVP: exclusive-lock,object-map,fast-diff