Стадия жизненного цикла модуля: 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-proxyscheduler 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