Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

Тип статьи

Инструкция и рекомендации.

Компетенции

Статья полезна всем работающим в платформе, но в первую очередь инженеру, который ее обновляет.

Необходимые права

Как минимум SSH c root и учетная запись администратора в платформе.

Версия платформы

2.22, но по сути неважна для данной статьи.

Статус

Статус
colourYellow
title

Черновик

Бета

Сложность(синяя звезда)

средне

Полезные ссылки

Дополнительные сведения

Ubuntu Server 18.04

📋 Введение.

...

Обновление платформы может быть простым и быстрым на одном проекте и крайне сложным и трудоемким на другом проекте. Зависит это от следующих факторов:

  • Насколько старую версию нужно обновлять. Нельзя обновить 2.15 сразу на 2.22, например. Придется обновляться постепенно 2.15 => 2.16 => 2.17…=> 2.22 и так далее до нужной версии. А это уже прилично времени на скачивания docker образов и операции обновления на сервере с платформой. К тому же после каждого обновления (на каждой промежуточной версии) нужно проверять работоспособность основного функционала, например, дашборды, работа в Дизайнере, темы, кастомные виджеты, авторизация, отправка отчетов и пр.

Примечание

Если пренебречь проверкой функционала на промежуточных версиях, то можно потратить гораздо больше времени на диагностику неполадок на последней версии. Здесь действует принцип снежного кома⛄ .

  • Есть ли в дистрибутиве с текущей версии платформы на сервере правки в YML или SH файлах. Все эти правки необходимо переносить в файлы дистрибутива новой версии платформы и потом проверять их работоспособность. Кастомные правки не тестируются при выпуске версий. Пример правок: записи extra-hosts, монтирование измененного конфига в контейнер.

  • Кастомные docker образы компонентов платформы. Определить с нуля это уже на работающем сервере не всегда просто, лучше все сразу документировать. Пару признаков, что работают кастомные образы: последняя введенная команда запуска run.sh содержит ключи с кастомными образами, в docker image ls видны образы платформы с необычными тегами (обычный тег это latest и версия платформы). Обновление платформы с кастомной версии обычно не тестируется, и нужно быть готовым к неожиданностям или писать предварительно в техподдержку.

  • Особенности обновления, присущие конкретной версии платформы. Обычно описаны в статьях, например, для 2.22: Особенности обновления на версию 2.22. Соответственно трудоемкость может возрасти, если был серьезно переработан какой-то механизм, который активно используется на проекте.

  • Использование сторонних скриптов, работающих с API компонентов платформы. При изменениях в API скрипты придется корректировать.

  • Использование неофициального API, например, для 2.22 это API рассылки отчетов, создание пользователей. Работа этого функционала не гарантируется после обновления.

  • Кастомизация JS на дашбордах. Здесь могут быть как простые закономерности (обновилась библиотека Highcharts и логика немного поменялась), так и более сложные (использование неофиц API или незадокументированных приемов в коде).

  • Отличный от Ubuntu Server дистрибутив Linux. Тестирование происходит только на рекомендованном дистрибутиве Ubuntu Server, указанном в системных требованиях.

...

Примечание

Если обновление прошло неуспешно и принято решение откатываться, то откат без контрольных точек виртуальной машины, а только со скопированными данными платформы потребует дополнительных шагов. Это тема отдельной статьи, но суть состоит в ручной замене всех docker образов новой версии старыми, возвращении сохраненной папки /docker-volume и прохождении развертывания данных (статья для 2.22): Развертывание данных.

Поэтому быстрее и проще вариант с контрольной точкой ВМ.

Подсказка

С версии 2.24 добавили скрипты для автоматического бэкапа и развертывания платформы. Можно и нужно использовать их вместо ручного копирования докер томов и остановки компонентов. Копирование и восстановление данных с помощью скриптов

Шаг 4. Обновление.

...

Внимательно изучаем статьи (пример для 2.22): Обновление компонентов платформы. Для каждой версии платформы это своя статья в отдельном пространстве Confluence. И идем по шагам, обычно это вариант с компонентами на одном сервере (пример для 2.22): Обновление компонентов, установленных на одном сервере.

Примечание

Лучше сразу сохранять историю команд и выводов в терминале для будущей диагностики проблем.

Не забывайте про проверку функционала на каждой промежуточной версии. Не стоит обновляться дальше, если у вас уже что-то перестало работать – дальше это может усугубится.

Предупреждение

Нельзя пропускать версии при обновлении. С 2.15 на 2.25, например, придется проводить десять итераций и аналогично для других версий.

Шаг 5. Проверка работы новой версии.

...