Skip to content

NodeFlow 2.0.1

Choose a tag to compare

@github-actions github-actions released this 25 Sep 02:06
· 6 commits to main since this release
89007de

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-пуле;
    • табуляция в имени маршрута.
  • Ручная директива длиной 509–512 байт сохранялась, но потом ломала рендер конфига всей ноды (invalid_route_set, 422). Лимит длины строки теперь считается без отступа, ранее рендерившиеся конфиги не меняются.
  • Имя ноды длиннее 200 символов возвращало 500 (или обрывало задание установки ноды). Теперь 400 с понятной ошибкой, поля ввода ограничены 200 символами.
  • Загрузка релиза Agent проверяет формат версии до отправки файла (до 64 МиБ), а не после.
  • Добавлен контрактный тест редактор ↔ API: 4685 вариантов маршрутов, которые разрешает редактор, проходят через проверку и рендерер Panel, а сохранённые без изменений маршруты дают тот же конфиг байт в байт.

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

  1. 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.

  2. 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 сверяют его сами.