Релиз nxs-anomaly: отечественная альтернатива Grafana OnCall для управления дежурствами, маршрутизации оповещений и эскалации инцидентов. Доступен на GitHub
Все статьи

Новые возможности nxs-universal-chart 3.1.0

Умные автоматические перезапуски, новые субчарты и MCP-сервер — рассказываем о главных изменениях версии

Время чтения
6 минут
Раздел
Инструменты
Новые возможности nxs-universal-chart 3.1.0

Выпустили новую версию 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-приложений, так и для более сложных инфраструктурных сценариев.

Оставьте заявку, чтобы обсудить проект

Ваши контакты
О вашем проекте

Нажав на кнопку, соглашаюсь на обработку персональных данных, Ознакомлен со всеми документами, размещенными на сайте

См. Политику обработки персональных данных
См. Пользовательское соглашение