Новые возможности nxs-universal-chart 3.1.0
Умные автоматические перезапуски, новые субчарты и MCP-сервер — рассказываем о главных изменениях версии
Выпустили новую версию nxs-universal-chart — 3.1.0. Релиз объединяет изменения, накопленные в версиях 3.0.10–3.0.21, и добавляет новые возможности для работы с Kubernetes и OpenShift.
В этой версии появились умные чексуммы для автоматического перезапуска рабочих нагрузок, 12 новых субчартов, общие настройки для рабочих нагрузок, поддержка projected volumes и дополнительные возможности для работы с ServiceAccount. Также были исправлены ошибки, расширены процессы автоматической проверки и документация, а для работы с chart появился MCP-сервер.
Что такое nxs-universal-chart
nxs-universal-chart — Helm-чарт, который позволяет разворачивать практически любые приложения в Kubernetes и OpenShift без написания собственных шаблонов.
Ресурсы приложения описываются через единый values.yaml, на основании которого chart генерирует Deployment, Service, Ingress и другие необходимые ресурсы.
Основные изменения
Умные чексуммы в autoRolloutChecksums
Одно из ключевых изменений релиза — обновлённая логика autoRolloutChecksums.
Ранее chart добавлял в аннотации рабочих нагрузок чексуммы всех ConfigMap, Secret и SealedSecret, входящих в релиз. Из-за этого изменение любого ConfigMap могло приводить к перезапуску всех рабочих нагрузок, даже если они не использовали изменившийся ресурс.
Теперь nxs-universal-chart анализирует реальные связи между рабочими нагрузками и конфигурационными ресурсами.
Учитываются:
- envConfigmaps;
- envSecrets;
- envsFromConfigmap;
- envsFromSecret;
- типизированные volumes.
При этом глобальные envs и secretEnvs по-прежнему учитываются в аннотациях всех рабочих нагрузок.
Такой подход позволяет избежать лишних перезапусков приложений и уменьшить количество ненужных изменений и синхронизаций в инструментах GitOps, например Argo CD и Flux.
Расширение экосистемы: 12 новых субчартов
В версии 3.1.0 добавлено 12 новых субчартов.
Инфраструктура данных:
- nuc-clickhouse
- nuc-elk
- nuc-rabbitmq
- nuc-strimzi-kafka-operator
Базы данных через операторы:
- nuc-mongodb-percona-operator
- nuc-mysql-percona-operator
- nuc-cloudnativepg
- nuc-valkey
Оркестрация и безопасность:
- nuc-fluxcd
- nuc-envoy-gateway
- nuc-external-secrets
- nuc-keycloak-operator
Каждый субчарт включается отдельным параметром, например:
nuc-clickhouse:
enabled: true
Пока субчарт не включён, его наличие не влияет на формирование остальных ресурсов.
Новые общие настройки для рабочих нагрузок
В nxs-universal-chart появились общие параметры, которые позволяют задавать настройки сразу для нескольких типов рабочих нагрузок.
- generic.nodeSelector — задаёт общий селектор нод для всех рабочих нагрузок. Например, если у вас есть пул nodepool: apps и нужно направить все поды приложения именно туда, достаточно задать nodeSelector один раз вместо дублирования настройки в каждом Deployment.
- generic.resources — задаёт значения requests и limits по умолчанию для контейнеров. Это особенно актуально для команд, где политика «никаких подов без ресурсных лимитов» уже является частью admission-контроллера: разумные значения можно задать глобально и переопределять только там, где это необходимо.
- generic.podSecurityContext и generic.containerSecurityContext — задают общие контексты безопасности с поддержкой mergeWithGeneric: true. Это позволяет не заменять глобальные настройки, а дополнять их параметрами конкретной рабочей нагрузки.
- generic.automountServiceAccountToken — управляет автоматическим монтированием токена сервисного аккаунта для подов. Это позволяет отключить его по умолчанию для всех рабочих нагрузок, если он не требуется.
- servicesGeneral — задаёт общие labels и annotations для всех ресурсов Service, включая автоматически создаваемые governing Service для StatefulSet.
Projected volumes и imagePullSecrets для ServiceAccount
Для volumes добавлена поддержка типа projected. Такой volume позволяет объединить в один источник несколько типов данных:
- ServiceAccountToken;
- ConfigMap;
- Secret;
- DownwardAPI.
Это, в частности, удобно при использовании workload identity и IRSA/pod identity.
Также расширены возможности настройки imagePullSecrets для ServiceAccount:
- serviceAccountDefaultImagePullSecretName;
- serviceAccountGeneral.imagePullSecrets;
- индивидуальные настройки для отдельных ServiceAccount.
Исправления
Обработка null-записей
Исправлена обработка null-элементов внутри deployments, cronJobs, jobs и hooks.
Такие записи больше не приводят к ошибкам при формировании шаблонов.
Наследование параметров CronJob
Исправлено наследование параметров:
- cronJobsGeneral.suspend;
- cronJobsGeneral.singleOnly.
Теперь значение конкретного CronJob корректно переопределяет общее значение. В том числе корректно обрабатываются false и null.
envConfigmaps и envSecrets
Исправлена обработка пустых и null-элементов в envConfigmaps и envSecrets. Такие элементы пропускаются, а пустые envFrom больше не создаются.
Также исправлена обработка нескольких ссылок на ConfigMap и Secret — все указанные источники сохраняются.
Удаление ConfigMap и Secret при helm uninstall
Исправлено удаление ConfigMap и Secret, для которых используются стандартные Helm hooks. Теперь такие ресурсы корректно удаляются при выполнении helm uninstall.
Чексуммы для General.envConfigmaps и General.envSecrets
Исправлен автоматический сбор чексумм для ресурсов, указанных через General.envConfigmaps и General.envSecrets.
CI/CD: GitHub Actions
Для проекта добавлена конфигурация GitHub Actions, которая запускает проверки при каждом Pull Request.
В автоматические проверки входят:
- lint;
- проверка безопасности;
- проверки работоспособности;
- модульные тесты;
- сквозные тесты.
Это позволяет автоматически проверять изменения перед их попаданием в основную ветку.
Каталог примеров
В репозитории появился каталог samples с готовыми конфигурациями для распространённых сценариев развёртывания.
Примеры проходят проверки работоспособности и позволяют быстрее начать работу с chart.
В версии 3.1.0 добавлены примеры для:
- nuc-fluxcd;
- nuc-external-secrets;
- nuc-mongodb-percona-operator;
- nuc-envoy-gateway;
- nuc-valkey.
Документация
Обновлена документация по зависимым субчартам.
Дополнительно описаны:
- поведение deploymentsGeneral и cronJobsGeneral при работе с источниками переменных окружения;
- обработка пустых значений;
- порядок переопределения параметров.
Также были приведены в порядок файлы values с примерами: из них удалены пустые необязательные maps, а обязательные параметры заполнены конкретными значениями.
MCP-сервер
Для nxs-universal-chart появился MCP-сервер — инструмент, позволяющий AI-ассистентам работать с chart через Model Context Protocol.
MCP позволяет использовать nxs-universal-chart из AI-инструментов вроде Claude, Cursor и Copilot.
Генерация values.yaml
MCP-сервер умеет генерировать values.yaml на основе описания приложения обычным языком.
Например: Напиши values файл для деплоя WordPress с MySQL через Percona XtraDB Cluster, Redis-кешем на базе Valkey, TLS от cert-manager и ингрессом nginx. Namespace — production.
При генерации сервер учитывает полный контракт values.yaml, доступные субчарты и структуру параметров.
Результат дополнительно проверяется по values.schema.json.
Проверка Helm-чартов
MCP-сервер предоставляет инструменты для проверки конфигурации:
- валидация по values.schema.json;
- helm lint;
- helm template;
- kubeconform.
kubeconform проверяет результат относительно официальных Kubernetes-схем и схем CRD. Это позволяет обнаруживать устаревшие API и несовместимые поля ещё до развёртывания.
Документация по Helm-чартам
Через MCP можно получать информацию о поддерживаемых Kubernetes-ресурсах, JSON Schema, зависимостях и параметрах chart.
Для поиска используются:
- README.md;
- docs/;
- values.yaml;
- values.schema.json;
- шаблоны ресурсов.
Сайт nuc.nixys.ru
Для nxs-universal-chart и его субчартов доступен отдельный сайт — nuc.nixys.ru.
На сайте можно:
- Посмотреть каталог субчартов — ознакомиться с доступными субчартами и информацией о них.
- Создать values.yaml — собрать конфигурацию с помощью визуального генератора без ручного редактирования большого количества параметров.
- Использовать готовые шаблоны — выбрать конфигурацию для типового сценария в разделе Templates.
- Перенести Docker Compose — преобразовать существующую конфигурацию приложения в формат для nxs-universal-chart с помощью инструмента Migrate from Docker Compose.
Кому стоит обновиться до версии 3.1.0
Обновление особенно актуально для пользователей nxs-universal-chart 3.0.x, которые сталкивались с:
- лишними перезапусками из-за autoRolloutChecksums;
- большим количеством ненужных изменений и синхронизаций в GitOps;
- проблемами с общими настройками CronJob.
Также версия будет полезна тем, кто планирует использовать:
- Percona operators;
- CloudNativePG;
- ELK;
- ClickHouse;
- Envoy Gateway;
- Valkey.
Обновление обратно совместимо: существующие values.yaml продолжают работать без изменений, а новые параметры являются необязательными и имеют безопасные значения по умолчанию.
Заключение
Версия nxs-universal-chart 3.1.0 расширяет набор поддерживаемых компонентов и сценариев развёртывания, уменьшает количество лишних перезапусков рабочих нагрузок и добавляет новые инструменты для генерации и проверки конфигураций.
Вместе с новыми субчартами, улучшениями автоматических проверок, каталогом примеров и MCP-сервером nxs-universal-chart становится удобнее использовать как для стандартных Kubernetes-приложений, так и для более сложных инфраструктурных сценариев.
Оставьте заявку, чтобы обсудить проект
Спасибо за обращение
Мы свяжемся с вами в ближайшее время.