Обновление¶
Резервная копия базы¶
В базе платформы хранятся пользователи, роли и правки проектов, которые ещё не отправили в git кнопкой «Push». Git их не заменяет, поэтому перед обновлением снимите копию базы.
- Попросите пользователей отправить изменения в git и не запускать сборки до конца обновления.
-
Снимите копию из пода PostgreSQL:
-
Храните файл в защищённом месте: в нём все проекты и хэши паролей пользователей.
Обновление платформы¶
- Загрузите новый образ платформы и, если он изменился, новый образ сборщика в реестр.
- Укажите новые теги в
values.yaml:image.tagиNEOMSA_ESB_DEVMODE_IMAGE. -
Примените чарт:
При запуске платформа сама обновляет схему базы (Flyway), в логе это строки Migrating schema. База лежит на постоянном томе и при обновлении чарта сохраняется.
Политика загрузки образа платформы в чарте Always. Если тег образа не изменился, пересоздайте под, чтобы он загрузил новую версию:
После обновления проверьте вход, пользователей, проекты и контрольную сборку.
Если обновление не удалось¶
- Остановите сборки и сохраните лог платформы:
kubectl -n <namespace> logs deploy/neomsa-esb > upgrade.log. -
Если в логе нет строк
Migrating schema, схема базы не менялась. Верните прежний релиз: -
Если новая версия уже обновила схему, одного отката чарта мало: прежняя версия может не запуститься на новой схеме. Остановите платформу, восстановите базу из копии и верните прежний релиз:
-
Проверьте вход, пользователей, проекты и контрольную сборку.
База из копии возвращает состояние на момент её создания. Правки, сделанные позже, придётся перенести вручную.
Переход с 4.18.1 на 4.22.2¶
Версия 4.22.2 требует изменений не только в платформе, но и в интеграциях.
В чарте:
- Service платформы должен называться
neomsa-esb. Сборщик 4.22 обращается к платформе по адресуhttp://neomsa-esb.<namespace>. В чарте 4.22 имя уже зафиксировано. - В
roleRulesнужны права наpods/log(get),eventsиз групп""иevents.k8s.io(get, list, watch) иserviceaccounts(get, list). В чарте 4.22 они есть. - Нужен образ сборщика 4.22.2. Библиотеки в образе сборщика подобраны под версию Camel, поэтому версия сборщика должна совпадать с версией платформы.
В интеграциях:
- Добавьте в
application.propertiesпараметрcamel.management.enabled=true. Без него в 4.22 не отвечают/observe/healthи/observe/metrics, пробы Kubernetes не проходят, и под перезапускается. - Добавьте
camel.management.port=9876. Вdeployment.jkube.yamlобъявите порт контейнераobservability(9876) и направьте на него пробы и аннотациюprometheus.io/port. Пример есть в шаблоне проекта из комплекта поставки. Без этого порта в логе платформы появляются сообщенияConnection refusedс адресом пода и портом 9876, а состояние маршрутов в интерфейсе не обновляется. - Обновите библиотеки OpenTelemetry в
camel.jbang.dependenciesдо версии 1.64.0. - В Kafka-маршрутах замените заголовок
kafka.KEYнаCamelKafkaKey. В Camel 4.21 строковые имена заголовков Kafka изменились наCamelKafka..., поэтому проверьте и другие заголовкиkafka.*. КонстантыKafkaConstantsв Java-коде менять не нужно. - Пересоберите все интеграции новым сборщиком, чтобы они перешли на Camel 4.22.2.
Ветку интеграций для 4.22 удобно завести отдельно и указать её в ключе git-branch секрета. Так интеграции версии 4.18 продолжат работать до полного перехода.