Skip to content

NodeFlow 2.1.0

Choose a tag to compare

@github-actions github-actions released this 29 Sep 14:24
· 5 commits to main since this release
7959170

NodeFlow 2.1.0

Panel 2.1.0 · Node Agent 2.1.0 · HAProxy renderer v21

Настройки HAProxy для ноды и полноценный редактор haproxy.cfg. Одна аддитивная миграция (000055). Ноды без новых настроек рендерятся байт в байт как в 2.0.1. Идея и первая версия — @fesevu (#15).

Новое

  • Настройки HAProxy ноды. В диалоге настроек ноды (шестерёнка), строкой под переключателем «Логи соединений HAProxy»: maxconn, nbthread, timeout connect, timeout client, timeout server. Пустое поле — значение по умолчанию. Настройки действуют на все маршруты ноды; изменение публикует новую ревизию, Agent применяет её reload без разрыва соединений. Хранятся в nodes.metadata.haproxy_settings. Обновлять Agent не нужно.
  • Редактор конфигурации HAProxy. Кнопка «Конфигурация HAProxy» на странице ноды открывает /nodes/:id/haproxy:
    • редактор Monaco (поставляется с Panel, грузится отдельно только на этой странице), подсветка синтаксиса HAProxy, миникарта, автодополнение;
    • подсказки на русском при наведении: секции, ~120 директив, параметры server/bind, алгоритмы balance, fetch-функции;
    • предупреждения об опасных местах; имена nf_be_*/nf_srv_* помечены «не переименовывать» — от них зависят статистика и квоты;
    • строка состояния: время и «Конфиг валиден» или «N ошибок, M предупреждений» (клик — к первой проблеме), список портов прослушивания;
    • кнопки: «Сохранить» (Ctrl+S), «Всё равно сохранить» (только при ошибках линтера), «Форматировать», «Применить на ноду» (сохраняет и применяет, перед применением — diff с применённым конфигом; при ошибках линтера — дополнительное подтверждение), «История», «Загрузить из маршрутов», «Вернуться к сборке из UI».
  • Проверка конфига. Линтер в браузере на каждое изменение и POST /api/v1/nodes/{id}/config-lint на Panel (задержка 250 мс). Проверка статическая (в образе Panel нет haproxy), списки ключевых слов сверены с исходниками HAProxy 2.8, 3.0 и 3.2. Находит: неизвестные секции, директивы, option, параметры server/bind, виды timeout; директиву не в той секции; лишние ,/; (например, option tcplog,); повторяющиеся имена proxy и серверов; use_backend/default_backend на несуществующий backend; неверные порты, адреса, длительности, значения mode/balance/hash-type/log; несбалансированные .if/.endif; конфиг больше 512 КиБ. Окончательная проверка — по-прежнему haproxy -c на ноде перед применением.
  • Ручное сохранение проверяется на Panel. С ошибками линтера API отвечает 422 config_lint_failed со списком проблем; "force": true сохраняет всё равно. Первая строка # Generated by NodeFlow. Do not edit. заменяется на # Edited manually in NodeFlow advanced editor., в конец добавляется перевод строки (иначе haproxy -c падает с Missing LF on last line).
  • Текст ошибки haproxy -c. Agent 2.1.0 при неудачной проверке отправляет строки [ALERT]/[WARNING] (путь временного файла заменён на haproxy.cfg, без цветовых кодов и строк с password/secret, до 1500 байт). Panel отдаёт их в config-state.last_error_detail, редактор показывает под ошибкой со ссылками на строки. Старые Agent сообщают только validation_failed.
  • «Добавить ноду»: переключатель «Логи соединений HAProxy» сразу в диалоге, значение передаётся в установку ноды.

Исправления

  • Ручной конфиг при политике файрвола apply ломал heartbeat Agent — каждый запрос завершался 500 desired firewall listener plan is incomplete. Теперь план файрвола берёт порты из listener_tcp_ports ручной ревизии (вычисляются по строкам bind). Для старых ручных ревизий без этого поля текущие порты сохраняются, ничего не закрывается.

Обновление с 2.0.1

  1. Panel. Повторно запустите установщик:

    curl -fsSL https://raw.githubusercontent.com/NodeFlow-dev/nodeflow/main/install.sh | sudo sh

    Вручную: в /opt/nodeflow/.env укажите NODEFLOW_VERSION=2.1.0 и выполните docker compose pull && docker compose up -d. Миграция 000055 только добавляет столбец (ADD COLUMN … NULL); откат — вернуть NODEFLOW_VERSION=2.0.1, столбец можно оставить.

  2. Node Agent. «Настройки → Node Agent» → «Обновить до 2.1.0». Нужно только для текста ошибки haproxy -c в редакторе; настройки HAProxy ноды и всё остальное работают с Agent 2.0.x.

Учтите: пока на ноде назначен ручной конфиг, маршруты этой ноды из UI не публикуются (409 advanced_config_active) — до «Вернуться к сборке из UI».

Обновляетесь с 1.0.x — сначала прочитайте заметки к релизу 2.0.0: там однократный drop-in systemd для pipe-буферов ядра.

Файлы релиза

  • NodeFlow-Panel-2.1.0-Agent-2.1.0-install-kit.tar.gz — install kit.
  • nodeflow-node-agent-2.1.0-linux-amd64, nodeflow-node-agent-2.1.0-linux-arm64 — бинарники Node Agent.

Panel поставляется образом ghcr.io/nodeflow-dev/nodeflow-panel:2.1.0 (linux/amd64 и linux/arm64). SHA-256 каждого файла — поле digest в API релиза; install.sh и install-node.sh сверяют его сами.