Обновление и откат
Обновление заменяет бинарный файл, но не переводит вас на другой продукт. Каталог данных, ключ подписи аудита и материалы TLS остаются на месте, а движок сам применяет новые миграции схемы при запуске. Эта страница проводит оператора от вопроса «стоит ли устанавливать этот релиз?» до «мне нужно вернуть предыдущий».
Какой путь обновления подходит вам
Заголовок раздела «Какой путь обновления подходит вам»Продвинуть бинарный файл вперёд можно двумя способами; результат у них одинаковый.
| Установка | Путь |
|---|---|
| Бинарный файл на хосте, systemd, Docker Compose | olivares 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 | Объявлено как |
|---|---|
stable | release.ChannelStable |
security | release.ChannelSecurity |
lts | release.ChannelLTS |
Значение вне этой таблицы отклоняется до загрузки каких-либо данных
(release.ValidChannel).
stable — общедоступная линия и значение по умолчанию. security содержит только
внеочередные исправления: развёртывание на этом канале получает релизы безопасности, не
принимая функциональные релизы.
Выберите подходящий вашему процессу канал и придерживайтесь его:
olivares upgrade --channel securityРелиз безопасности помечается в манифесте, а --check показывает исправляемые рекомендации
по безопасности. На канале security вы получаете их вне очереди общедоступной линии.
Выполнение обновления
Заголовок раздела «Выполнение обновления»olivares upgradeКоманда выполняет следующие действия по порядку:
- Загружает манифест канала и проверяет его подпись автономно по встроенному в сборку
релизному ключу Ed25519. Якорь доверия — подпись, а не транспорт. Для сборки без
встроенного ключа его нужно передать через
--pubkey; непроверяемого пути нет. - Отказывается идти назад. Установка версии старше работающей блокируется, если не
передан
--force-rollback; это действие записывается в журнал аудита. - Связывает артефакт с подписанным SHA-256 из манифеста, прежде чем байты будут исполнены.
- Проверяет кандидата, затем выполняет атомарную замену и сохраняет заменённый бинарный файл как резервную копию с временной меткой. Если новый файл не запускается, команда сама возвращает эту копию.
- Не затрагивает работающий процесс. Заменяется файл на диске. Новый код вступит в силу после перезапуска службы.
Добавьте --yes, если командой управляет скрипт и отвечать на запрос подтверждения некому.
Установки в изолированной среде
Заголовок раздела «Установки в изолированной среде»Изолированное развёртывание не обращается к хосту обновлений. Перенесите комплект доверенным способом и установите его из локального файла. Проверка идентична, потому что доверие никогда не возлагалось на сеть.
Для установки из комплекта на машине нужна действующая лицензия. Она проверяется автономно
по лицензионному ключу, встроенному в бинарный файл: сетевого вызова нет, поэтому проверка
работает за воздушным зазором. Если вы ещё не установили лицензию на машине, необходимые шаги
приведены на странице
Установка лицензии и переход на Enterprise.
--check лицензией не ограничен, и комплект можно проверить до
подготовки установки:
olivares upgrade --bundle ./olivares-release.tar.gz --check # verify only; no license readolivares 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 versionolivares 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)
транслирует собственный журнал движка.