Repository navigation
NodeFlow 2.0.1
NodeFlow 2.0.1
Panel 2.0.1 · Node Agent 2.0.1 · HAProxy renderer v21
Исправительный релиз поверх 2.0.0 и одна новая настройка ноды. Миграций базы данных нет, существующие маршруты и ноды рендерятся байт в байт как в 2.0.0.
Новое
- «Логи соединений HAProxy» в настройках ноды. Переключатель в диалоге настроек ноды (API: поле
haproxy_logsу ноды, хранится вnodes.metadata). По умолчанию включено — конфиг не меняется. Выключено: изhaproxy.cfgэтой ноды убираютсяlog /dev/log …вglobal,log global,option tcplogиoption dontlognullвdefaultsиoption tcplogу frontend'ов, поэтому rsyslog больше не пишет каждое соединение в/var/log/haproxy.log. Нужно для нод с маленьким диском. Сообщения HAProxy о запуске и ошибках конфигурации по-прежнему попадают в journal. Переключение публикует новую ревизию конфига ноды, Agent применяет её обычным reload без разрыва соединений. Клиенты API, которые не передают поле, не сбрасывают сохранённое значение.
Исправления
- Маршрут с одним сервером не сохранялся с ошибкой
sticky_mode must be source, source_table, leastconn or roundrobin. Редактор отправляетsticky_mode: noneдля одиночного сервера (и для одного домена в режиме DNS-пула), а проверка одиночных маршрутов не принималаnone. Теперьnoneпринимается и означает «без закрепления», как у маршрутов с несколькими серверами. Если открыть и сохранить существующий маршрут из одного сервера с закреплением клиента, из его backend исчезнут строкиbalance/stick: для одного сервера они ничего не меняли. - Редактор маршрутов проверяет поля так же, как API. Раньше редактор пропускал значения, которые API затем отклонял с ошибкой 400:
- IPv4 с ведущими нулями (
01.2.3.4) и некорректные IPv6 (1:::2,:::) в адресе прослушивания, адресах серверов, основном IP, весах IP и доверенных адресах PROXY; - имена хостов с числовой последней частью (
backend.1,host.0x1f) в SNI и адресах серверов; - подсети доверенных адресов вида
10.0.0.0/0(разрешены только0.0.0.0/0и::/0) и::ffff:0:0/96; - один и тот же IPv6, записанный по-разному, в весах IP;
- в «Основной + резервные» — резервный DNS-пул (или пул с основным IP) вместе с другими резервными;
- имя сервера, совпадающее с именами слотов DNS-пула (
xиx_1); - директивы
balance,server,default-server,hash-type,server-templateв ручных директивах backend при DNS-пуле; - табуляция в имени маршрута.
- IPv4 с ведущими нулями (
- Ручная директива длиной 509–512 байт сохранялась, но потом ломала рендер конфига всей ноды (
invalid_route_set, 422). Лимит длины строки теперь считается без отступа, ранее рендерившиеся конфиги не меняются. - Имя ноды длиннее 200 символов возвращало 500 (или обрывало задание установки ноды). Теперь 400 с понятной ошибкой, поля ввода ограничены 200 символами.
- Загрузка релиза Agent проверяет формат версии до отправки файла (до 64 МиБ), а не после.
- Добавлен контрактный тест редактор ↔ API: 4685 вариантов маршрутов, которые разрешает редактор, проходят через проверку и рендерер Panel, а сохранённые без изменений маршруты дают тот же конфиг байт в байт.
Обновление с 2.0.0
-
Panel. Повторно запустите установщик:
curl -fsSL https://raw.githubusercontent.com/NodeFlow-dev/nodeflow/main/install.sh | sudo shВручную: в
/opt/nodeflow/.envукажитеNODEFLOW_VERSION=2.0.1и выполнитеdocker compose pull && docker compose up -d. Миграций нет, откат — вернутьNODEFLOW_VERSION=2.0.0. -
Node Agent. «Настройки → Node Agent» → «Обновить до 2.0.1». Код Agent не менялся (обновление выравнивает версию). Переключатель логов работает и с Agent 2.0.0.
Обновляетесь с 1.0.x — сначала прочитайте заметки к релизу 2.0.0: там однократный drop-in systemd для pipe-буферов ядра.
Файлы релиза
NodeFlow-Panel-2.0.1-Agent-2.0.1-install-kit.tar.gz— install kit.nodeflow-node-agent-2.0.1-linux-amd64,nodeflow-node-agent-2.0.1-linux-arm64— бинарники Node Agent.
Panel поставляется образом ghcr.io/nodeflow-dev/nodeflow-panel:2.0.1 (linux/amd64 и linux/arm64). SHA-256 каждого файла — поле digest в API релиза; install.sh и install-node.sh сверяют его сами.