Перейти к содержимому

Обновление и откат

Обновление заменяет бинарный файл, но не переводит вас на другой продукт. Каталог данных, ключ подписи аудита и материалы TLS остаются на месте, а движок сам применяет новые миграции схемы при запуске. Эта страница проводит оператора от вопроса «стоит ли устанавливать этот релиз?» до «мне нужно вернуть предыдущий».

Продвинуть бинарный файл вперёд можно двумя способами; результат у них одинаковый.

УстановкаПуть
Бинарный файл на хосте, systemd, Docker Composeolivares upgrade — эта страница
Kubernetes / HelmЗадайте образ и позвольте оператору выполнить поэтапное обновление. Не запускайте olivares upgrade внутри pod: развёртывание декларативно, и следующая сверка отменит эту замену.

--check загружает и проверяет манифест канала, сравнивает его с установленной версией и показывает, что произойдёт. Ничего не заменяется.

Окно терминала
olivares upgrade --check

Команда сообщает установленную и доступную версии и строку состояния: up to date, upgrade available, DOWNGRADE (blocked unless --force-rollback) или UNKNOWN. Читайте строку состояния, а не сравнивайте два номера версии самостоятельно.

UNKNOWN не означает «скорее всего, всё в порядке». Это означает, что установленную версию измерить не удалось: например, из-за staging-каталога другой архитектуры, монтирования noexec или сборки из исходников. Защита от отката и ограничение минимальной версии формулируют утверждения именно об установленной версии, поэтому проверить их нельзя. Команда отказывается угадывать. Объявите версию, которая, как вам известно, установлена, и обе защиты останутся включёнными:

Окно терминала
olivares upgrade --check --current-version 26.8.0

olivares upgrade следует каналу релизов. Их 3, и они объявлены в core/release/manifest.go в порядке возрастания стабильности:

Значение --channelОбъявлено как
stablerelease.ChannelStable
securityrelease.ChannelSecurity
ltsrelease.ChannelLTS

Значение вне этой таблицы отклоняется до загрузки каких-либо данных (release.ValidChannel).

stable — общедоступная линия и значение по умолчанию. security содержит только внеочередные исправления: развёртывание на этом канале получает релизы безопасности, не принимая функциональные релизы.

Выберите подходящий вашему процессу канал и придерживайтесь его:

Окно терминала
olivares upgrade --channel security

Релиз безопасности помечается в манифесте, а --check показывает исправляемые рекомендации по безопасности. На канале security вы получаете их вне очереди общедоступной линии.

Окно терминала
olivares upgrade

Команда выполняет следующие действия по порядку:

  1. Загружает манифест канала и проверяет его подпись автономно по встроенному в сборку релизному ключу Ed25519. Якорь доверия — подпись, а не транспорт. Для сборки без встроенного ключа его нужно передать через --pubkey; непроверяемого пути нет.
  2. Отказывается идти назад. Установка версии старше работающей блокируется, если не передан --force-rollback; это действие записывается в журнал аудита.
  3. Связывает артефакт с подписанным SHA-256 из манифеста, прежде чем байты будут исполнены.
  4. Проверяет кандидата, затем выполняет атомарную замену и сохраняет заменённый бинарный файл как резервную копию с временной меткой. Если новый файл не запускается, команда сама возвращает эту копию.
  5. Не затрагивает работающий процесс. Заменяется файл на диске. Новый код вступит в силу после перезапуска службы.

Добавьте --yes, если командой управляет скрипт и отвечать на запрос подтверждения некому.

Изолированное развёртывание не обращается к хосту обновлений. Перенесите комплект доверенным способом и установите его из локального файла. Проверка идентична, потому что доверие никогда не возлагалось на сеть.

Для установки из комплекта на машине нужна действующая лицензия. Она проверяется автономно по лицензионному ключу, встроенному в бинарный файл: сетевого вызова нет, поэтому проверка работает за воздушным зазором. Если вы ещё не установили лицензию на машине, необходимые шаги приведены на странице Установка лицензии и переход на Enterprise. --check лицензией не ограничен, и комплект можно проверить до подготовки установки:

Окно терминала
olivares upgrade --bundle ./olivares-release.tar.gz --check # verify only; no license read
olivares upgrade --bundle ./olivares-release.tar.gz --yes # install; needs a live license

Если в сборке нет встроенного релизного ключа или зеркало релизов подписано вашим ключом, укажите команде ключ проверки:

Окно терминала
olivares upgrade --bundle ./olivares-release.tar.gz --pubkey @/etc/olivares/release.pub

Как создать и перенести комплект, описано в руководстве Установка в изолированной среде.

Поэтапное развёртывание и автоматические проверки

Заголовок раздела «Поэтапное развёртывание и автоматические проверки»

Манифест может назвать когорту поэтапного развёртывания, чтобы релиз сначала получил лишь процент инфраструктуры. С --if-eligible узел действует только тогда, когда входит в эту когорту, иначе не делает ничего:

Окно терминала
olivares upgrade --if-eligible --yes

Именно эту форму запускает встроенный таймер. Чтобы вывести таймер и службу systemd, которые вызывают её в окно обслуживания:

Окно терминала
olivares upgrade --install-timer --timer-schedule 'Sun *-*-* 03:00:00'

По умолчанию команда печатает unit-файлы; --timer-dir записывает их в указанный каталог. Это явно включаемая функция: ничего не планирует себя само.

Консоль предоставляет доступ только для чтения к той же информации: Settings → update status вызывает POST /v1/console/update-check, который по запросу проверяет настроенный канал. Изолированное развёртывание или развёртывание без настроенного канала отвечает 501 и прямо сообщает причину, а не утверждает, что обновлений нет.

Окно терминала
olivares version
olivares upgrade --check

Теперь --check должен сообщить up to date. Затем проверьте здоровье службы на экране консоли Health (/health) или через endpoint готовности движка по руководству Мониторинг с Prometheus.

Предыдущий бинарный файл хранится рядом с заменившим его, и при замене команда печатает его путь. Для отката восстановите этот файл и перезапустите службу.

Откат безопасен по замыслу: каждое изменение схемы сначала выпускается как добавочное расширение, а разрушающая фаза contract — лишь в последующем релизе. Поэтому бинарный файл предыдущего релиза продолжает работать с обновлённой схемой. Откат означает «вернуть старый бинарный файл», а не «обратить базу данных».

Если вместо восстановления сохранённой копии требуется установить более старый релиз, защита от отката блокирует это, пока вы явно не разрешите действие:

Окно терминала
olivares upgrade --force-rollback --yes

Переопределение записывается в журнал аудита. Ограничение минимальной версии этим флагом не переопределяется: если манифест задаёт минимальную версию выше установленной, последовательно установите промежуточный релиз.

СимптомЧто он означаетЧто делать
--check печатает UNKNOWNУстановленную версию измерить не удалось, поэтому сравнить порядок невозможноПередайте --current-version с заведомо установленной версией
min_ver сообщает, что версия слишком стараяРелиз отказывается устанавливаться непосредственно поверх неёСначала обновитесь до указанного промежуточного релиза
Новый бинарный файл не запускаетсяПроверка после замены завершилась неудачноРезервная копия уже восстановлена; проверьте журналы и сообщите о релизе
--install-timer срабатывает, но ничего не происходитУзел не входит в когорту поэтапного развёртыванияЭто ожидаемо при --if-eligible; когорта расширяется по мере развёртывания
«another olivares upgrade is already installing», код выхода 5Одновременно допускается одно обновление бинарного файла. Блокировка удерживается на протяжении загрузки и заменыДождитесь работающего процесса и повторите команду. Если ничего не запущено, ядро уже освободило блокировку, поэтому повторите сейчас
«it CHANGED while this upgrade was downloading»После составления плана бинарный файл заменил другой механизм: менеджер пакетов, развёртывание образа или система управления конфигурациейЗапустите заново: защиты повторно оцениваются относительно фактически установленного файла. Если это повторяется, одним бинарным файлом управляют два механизма

Один агент обновления на бинарный файл. olivares upgrade устанавливает эксклюзивную блокировку цели на всю последовательность подготовки, загрузки и замены, поэтому второй запуск завершается с кодом 5. Установите один таймер и меняйте в нём --channel, а не запускайте таймер на каждый канал: раньше две установки, завершившиеся в одну секунду, перезаписывали резервные копии друг друга, и автоматический откат проигравшей установки восстанавливал другой бинарный файл и сообщал об успехе. Непосредственно перед заменой команда заново читает байты цели и отказывается продолжать, если это не тот файл, для которого составлялся план: выводы защиты от отката и минимальной версии относятся к конкретному установленному файлу.

Для остальных случаев используйте общее руководство Устранение неполадок; экран консоли Logs (/logs) транслирует собственный журнал движка.