Стадия жизненного цикла модуляGeneral Availability

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

v0.4.9

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

Prometheus снова собирает метрики контроллера, а узел, репозитории которого не дают NFSv3-userspace, получает его из модуля — раньше на таком узле любое монтирование NFSv3 висело вечно.

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

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

  • Там, где пакетный менеджер узла не может установить rpcbind и nfs-common/nfs-utils, модуль ставит оба демона из собственного образа nfs-tools. Без них под CSI-узла на таком узле вообще не стартует, а любое монтирование NFSv3 висит вечно.
  • kube-rbac-proxy перед метриками контроллера снова имеет право проверять запросы сбора: с тех пор как метрики ушли за него, каждый сбор отклонялся и таргет контроллера в Prometheus оставался недоступным.

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

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

  • На узле, репозитории которого не могут предоставить rpcbind и nfs-common/nfs-utils, NodeGroupConfiguration откатывается на собственный пакетный образ модуля nfs-tools: содержимое распаковывается в /var/lib/deckhouse/sds/csi-nfs, демоны поднимаются юнитами d8-csi-nfs-rpcbind.service и d8-csi-nfs-rpc-statd.service. Пакеты дистрибутива остаются предпочтительным путём, узел со своим rpcbind остаётся нетронутым. Это касается только NFSv3, то есть кластеров с v3support: true; NFSv4 ни одного из этих демонов не требует. Кроме того, шаг установки теперь роняет шаг bashible, если сокет портмаппера не отвечает, — вместо сообщения об успехе и узла с зависающими монтированиями.

Улучшения

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

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

Исправления

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

  • Prometheus не мог собирать метрики контроллера модуля: kube-rbac-proxy перед ними не имел права создавать TokenReview и SubjectAccessReview, которыми авторизуется каждый сбор, поэтому все сборы отклонялись и таргет оставался недоступным. Затронуты кластеры на v0.4.8, где метрики были переведены за прокси.
  • rpc.statd из собственного пакета модуля находит sm-notify и больше не стартует с пустым файлом состояния, поэтому перезагрузившийся узел оповещает о перезагрузке узлы, удерживающие на нём блокировки NFSv3.

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

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

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

v0.4.8

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

Метрики контроллера и scheduler extender теперь публикуются через kube-rbac-proxy и собираются Prometheus, а все компоненты пишут логи в общем структурированном формате.

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

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

  • Контроллер и scheduler extender больше не отдают метрики без аутентификации: каждый слушает на 127.0.0.1, а публикует их kube-rbac-proxy в том же поде — по TLS и с проверкой прав.
  • Метрики scheduler extender — счётчики reconciliation, длина очереди, показатели Go runtime — впервые попадают в Prometheus, через новый PodMonitor.

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

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

  • PodMonitor с именем csi-nfs-scheduler-extender отдаёт метрики scheduler extender в Prometheus. Он создаётся только там, где есть тип PodMonitor, поэтому на кластер без мониторинга это не влияет.

Улучшения

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

  • Контроллер, scheduler extender и webhooks переведены на общий логгер storage-модулей: сообщения несут структурированные поля key=value и имя написавшего их компонента вместо префиксов вида [main]. Всё, что разбирает эти логи по старой форме, придётся поправить.
  • У kube-rbac-proxy scheduler extender сознательно нет readiness-пробы: sidecar (вспомогательный контейнер), который отдаёт только метрики, не должен уметь остановить обращения kube-scheduler к extender.

Исправления

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

  • ServiceMonitor контроллера теперь создаётся при наличии типа ServiceMonitor, а не только когда модуль operator-prometheus-crd числится включённым. Раньше его метрики — в том числе срок действия сертификатов RPC-with-TLS, которые в этом модуле ничто не перевыпускает — оставались несобранными в том converge (сходимость конфигурации), где CRD Prometheus-оператора только что применились.
  • VerticalPodAutoscaler для scheduler extender закрыт такой же проверкой, поэтому он больше не пропускается в converge, где CRD VPA ставятся вместе с модулем.

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

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

  • Эндпоинты метрик контроллера и scheduler extender больше недоступны по IP пода без учётных данных. Для их сбора нужно право get на deployments/prometheus-metrics для d8-csi-nfs-controller и csi-nfs-scheduler-extender соответственно.

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

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

  • Руками делать ничего не нужно: ServiceMonitor поставляется вместе с модулем и обновляется вместе с ним, новый PodMonitor появляется сам.
  • Порт метрик в Service контроллера переименован из metrics в https-metrics и теперь работает по HTTPS. Если у вас была своя конфигурация сбора, направленная на прежний порт по HTTP, её нужно перенацелить на прокси и снабдить токеном Prometheus.

v0.4.7

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

v0.4.6

  • Исправление: успешное монтирование больше не считается ошибкой — в образ добавлен /etc/mtab (симлинк на /proc/self/mounts), из-за отсутствия которого mount возвращал код 16. Обёртка wrap-mount, маскировавшая эту ошибку, удалена
  • Исправление: VPA переведён с устаревшего режима обновления Auto на InPlaceOrRecreate
  • Исправление: контроллеру выданы права patch на events вместо list — повторная запись события больше не отклоняется по правам
  • Добавлены метрики срока действия сертификатов RPC-with-TLS — csi_nfs_tls_certificate_not_after_timestamp_seconds и csi_nfs_tls_certificate_not_before_timestamp_seconds, по одной серии на каждый сертификат из ConfigMap tlshd-conf, — и три правила алертинга: CsiNfsTLSCertificateExpiringSoon (осталось меньше 14 дней), CsiNfsTLSCertificateExpired и CsiNfsTLSCertificateNotYetValid
  • Обновление базовых образов до v2.1.2, Go до 1.26.6 и lib-helm до 1.72.14
  • Фиксы CVE

v0.4.5

  • Исправление: опциональные ресурсы (например, scheduler-extender) теперь включаются по наличию соответствующего CRD, а не по списку модулей
  • Внутренние изменения в сборке модуля

v0.4.4

  • NFSStorageClass публикует status.conditions и status.observedGeneration; условие Ready показывает, применил ли контроллер текущую спецификацию, добавлена колонка Ready. Поле status.phase сохраняет прежний набор значений и свою колонку
  • Исправление: сообщение условия обрезается до допустимой схемой длины — иначе API-сервер отклонял запись статуса
  • Обновление базовых образов до v1.3.25 и lib-helm до 1.72.13

v0.4.3

  • Модуль snapshot-controller больше не обязательная зависимость: VolumeSnapshotClass (общий и на каждый NFSStorageClass) создаётся только при наличии CRD snapshot.storage.k8s.io, иначе NFSStorageClass обрабатывается без снапшотной части
  • Обновление базовых образов, Go 1.26.5 и lib-helm до 1.72.12
  • Устранена уязвимость в gRPC (GHSA-hrxh-6v49-42gf)
  • Внутренние изменения в сборке модуля

v0.4.2

  • Исправлен запуск tlshd: обёртка использует пути установки пакета ktls-utils, поэтому контейнеры net-handshake-checker в csi-controller и csi-node больше не падают с ошибкой «no such file or directory»
  • Исправлены монтирования NFSv3: в образ добавлен файл /etc/netconfig, без которого вызовы SUN RPC из userspace не проходили дальше portmapper (NFSv4 не затронут)
  • Исправлена идемпотентность CreateVolume/CreateSnapshot: повторный вызов больше не перезаписывает данные уже созданного тома — ранее это приводило к невозможности загрузки ВМ с только что клонированных дисков
  • Обновление базовых образов, Go 1.26.5 и lib-helm до 1.72.10
  • Актуализирована документация: README, примеры, FAQ и описания CR
  • Внутренние изменения в сборке модуля и CI, добавлен набор e2e-тестов

v0.4.1

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

v0.4.0

  • Исправлено формирование секрета доступа к registry (deckhouse-registry): теперь в него попадают данные авторизации только активного источника образов
  • Переход на distroless-образы
  • Обновление базовых образов container-base до v1.1.8, Go 1.26.4 и lib-helm до 1.72.4

v0.3.27

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

v0.3.26

  • Метки из NFSStorageClass теперь пробрасываются в управляемый StorageClass Kubernetes
  • Обновление базовых образов, Go 1.25.10 и lib-helm 1.71.12

v0.3.25

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

v0.3.24

  • Исправление: добавлены точки монтирования в distroless-образе csi-nfs-scheduler-extender
  • Документация: руководство по установке NFS-сервера для RedOS
  • Внутренние изменения в структуре и сборке модуля

v0.3.23

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

v0.3.22

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

v0.3.21

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

v0.3.20

  • Установка пакетов в NodeGroupConfiguration больше не приводит к падению скрипта при ошибках

v0.3.19

  • Обновление базовых образов и lib-helm

v0.3.18

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

v0.3.17

  • Обновление базовых образов и версии golang
  • Обновление хуков, работающих при удалении модуля
  • Отключен запрос Capacity со стороны k8s (CSI не поддерживает выдачу Capacity)

v0.3.16

  • Обновление module-sdk для фикса CVE
  • Рефакторинг манифестов
  • Исправление ошибки размещения подов на нодах при отсутствии NFSStorageClass

v0.3.15

  • Обновлена версия базовых образов
  • Правки в документацию
  • Правки манифестов модуля
  • Обновление версии CSI до актуальной v4.12.1
  • Фиксы CVE

v0.3.14

  • Правки в документацию
  • Изменения в сборке для CSE версии

v0.3.13

  • Обновлена версия базовых образов
  • Фиксы CVE
  • Обновлена версия golang до 1.24.10

v0.3.12

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

v0.3.11

  • Фиксы CVE

v0.3.10

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

v0.3.9

  • Фиксы для поддержки containerd v2
  • Фиксы для лучшей поддержки centos-like дистрибутивов
  • Некоторые изменения в структуре модуля

v0.3.8

  • Добавлены требования для DVP в документацию

v0.3.7

  • Удаление устаревшего кода

v0.3.6

  • Добавлены файлы release notes
  • Перевод хуков в модуле c python на golang

v0.3.5

  • Добавлена поддержка containerd v2

v0.3.4

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

v0.3.3

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

v0.3.2

  • Фиксы CVE

v0.3.1

  • Сервисный аккаунт изменен на “csi”
  • Добавлена зависимость от snapshot-controller
  • Внутренние изменения для поддержки containerd v2
  • Фиксы CVE
  • Правки в документацию

v0.3.0

  • Добавлена поддержка HA mode в контроллере
  • Фиксы для корректной работы volume snapshots
  • Обновление версии CSI до актуальной v4.11.0

v0.2.5

  • Багфикс CSI (была пропущена точка монтирования /tmp)

v0.2.4

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

v0.2.3

  • Добавлена валидация base64-сертификатов в MC
  • Исправления в механизме RPC-with-TLS
  • Рефакторинг модуля

v0.1.10

  • Множественные фиксы и улучшения в RBAC, работе с MC, контроллерах
  • Добавлена возможность указывать workload node selector, с учетом чего будут деплоится компоненты csi-nfs и полезная пользовательская нагрузка

v0.1.9

  • Поправлены healthcheck порты для csi
  • Поправлена установка и запуск rpcbind