Инструкция по обновлению
Обновление BAF на новую версию
Раздел содержит общую инструкцию по обновлению системы. Если для текущей версии нет специальных указаний в последующих разделах, используйте описанную ниже процедуру.
Модуль лицензирования license-server не требует обновления и остается без изменений.
Перед обновлением обязательно создайте полный дамп данных текущей системы. Эта резервная копия потребуется для восстановления в случае возникновения проблем, поскольку система BAF не поддерживает механизм отката миграций с сохранением данных.
Далее вручную перенесите все пользовательские настройки из конфигурационных файлов текущей версии (таких, как values.yaml, secrets.yaml, settings.cfg модулей) в соответствующие файлы новой поставки. Перенос выполняется путем сопоставления полей: значение копируется, только если поле с таким же именем существует в новой версии. Поля, отсутствующие в старых файлах, но присутствующие в новых, должны быть заполнены в соответствии с документацией новой версии.
После заполнения всех значений можно приступать к установке модулей новой версии, выполняя команды из папки ее поставки.
Процесс схож с первоначальной установкой: сначала, при необходимости, обновите секреты модуля через ./cli.sh <module_name> install-secrets (это заменит секреты текущей версии на новые), а затем установите сам модуль командой ./cli.sh <module_name> install, которая выполнит helm upgrade для соответствующего чарта.
Последовательность обновления модулей должна соответствовать порядку их первой установки.
Обновление BAF с версии 1.1.0 до 1.2.0 и выше
Перед обновлением BAF, чтобы сохранить доступ к базе данных, перенесите значения полей конфигураций в файлы новой версии.
примечаниеНе нужно переносить секреты для stunner, заполните их снова в соответствии с инструкциями.
ATTENTION!Не рекомендуется копировать файлы с заменой, так как могут быть потеряны поля, появившиеся в устанавливаемом релизе.
Удалите старый релиз stunner, так как в новой версии BAF он был значительно обновлен. Перейдите в папку со старой версией BAF и выполните следующую команду:
./cli.sh stunner uninstallпримечаниеПри чистой установке stunner генерирует новые порты TURN. Необходимо обновить настройки веб-компоненты.
Перейдите в папку с новой версией BAF и выполните приведенную ниже команду:
./cli.sh platform install-secretsЭто действие является обязательным, иначе сервисы не получат необходимый набор полей и не смогут запуститься.
Загрузите новые образы, выполнив команду ниже:
./cli.sh generic load-imagesВернитесь к разделу развертывания и продолжайте выполнять шаги как при чистой установке.
примечаниеНе перезаписывайте значения из предыдущей версии, только обновляйте новые, если того требует инструкция.
Обновление BAF с версии 1.6.0 до 1.7.0 и выше
Основные изменения, которые произошли в версии 1.7.0, это разделение сервиса LRS на две подсистемы. Video Recorder для записи видео и LRS для вычисления liveness по видео. Для успешного обновления необходимо правильно перенести секреты и настройки.
Перенесите значения из файла lrs.secrets.json прошлой версии в файл video-recorder.secrets.json новой версии. lrs в названии секрета необходимо заменить на video-recorder. Например, lrs-postgres == video-recorder-postgres.
Перенесите значения из файла lrs.values.yaml в файл video-recorder.values.yaml. Блок lrs из старых values переносится в блок video-recorder, исключая поля host и image. Остальные блоки переносятся один к одному, исключая поля image.
Перенесите значения из файла baf.values.yaml в новый файл baf.values.yaml. Из старого блока lrs в новый блок video-recorder необходимо перенести только значение enabled. Значения остальных блоков переносятся один к одному, исключая поля image.
Вернитесь к разделу развертывания и продолжайте выполнять шаги как при чистой установке.
Обновление BAF с версии 1.9.0
Если ваш кластер использует docker в качестве источника образов, поменяйте в файле settings.cfg модулей generic и smc значение строки kube_cri на dockerd. Таким образом, образы из модуля generic будут загружатся в docker, а не containerd.
Если вы хотите обновить версию кластера полностью, удалите старый кластер и заново пройдите шаги инструкции установки на новой поставке.
Обновление BAF с версии 1.10.0
Начиная с версии 1.11.0, сервис decoder включен в сервис video-recorder, поэтому после обновления до 1.11.0 отдельный чарт decoder можно удалить.
Обновление BAF с версии 1.8.0 до 1.13.0
Начиная с версии 1.13.0, отключено автоматическое создание стандартного пользователя BAF, а также удалены все связанные с ним k8s-секреты. Если вы не обновлялись на любую версию между 1.9.0 и 1.12.0 включительно, то при обновлении на 1.13.0 миграция не сможет корректно обработать аккаунт BAF и добавить к нему токен доступа из существующего аккаунта OMNI Platform.
Для приведения данных аккаунта в корректное состояние необходимо выполнить следующую SQL команду в БД BAF:
UPDATE "Accounts" SET "PlatformAccessToken"='---';
где PlatformAccessToken - это токен платформы, который раньше находился в секции platform-token файла ./cfg/baf.secrets.yaml поставки версии 1.8.0.
Обновление BAF с версии 1.12.0 до 1.13.0
В версии 1.13.0 удален старый механизм настройки паттернов контроля движений. Если вам требуется перенос паттернов из версии 1.12.0, то перед обновлением выполните следующую команду из дистрибутива новой версии:
./cli.sh baf motion-pattern-transfer - <domain>
где domain - это домен, по которому доступно publicai BAF.
Также команде требуется sk-токен BAF для совершения запроса к publicapi на получение паттернов.
В результате успешного выполнения команды в консоли будет следующий вывод:

А в файле baf.values.yaml в переменной baf.default_motion_control_patterns появится текущий список паттернов аккаунта, которому принадлежит sk-токен.

В переменной находится список списков, где каждый внутренний список отражает паттерн. В случае нахождения несоотвествий необходимо отредактировать список.
Скрипт переносит паттерны только для аккаунта, которому принадлежит sk-токен. Если у вас заведено несколько аккаунтов, необходимо повторно запустить скрипт, но уже с sk-токеном другого аккаунта.
Обновление BAF на версию 1.17.0
В версии 1.17.0 был обновлен механизм работы с переменными окружения. Если вы изменяли какие-либо переменные окружения модулей, их необходимо перенести в новую версию, используя таблицу соответствия ниже.
Сопоставьте старую переменную с новой с помощью таблицы соответствия. Рекомендации по новой переменной приведены в таблице переменных на странице установки, следуйте им при переносе значения.
Если нужной переменной нет в таблице, значит, она не подвергалась изменениям и переносится по правилам, действовавшим в предыдущих версиях.
Переменные, отмеченные звездочкой, передаются в чарт модуля с использованием гибкого механизма. Подробнее см. на странице установки.
| Файл конфигурации | Путь до старой переменной | Название или путь новой переменной |
| ./cfg/platform.values.yaml | backend.query_limit | * QUERY_LIMIT |
| backend.index_update_period | * INDEX_UPDATE_PERIOD | |
| matcher.shard_n | * MATCHER_SEMAPHORE_SIZE | |
| backend.planned_retention_policy_day_of_week | * PLANNED_RETENTION_POLICY_DAY_OF_WEEK | |
| backend.planned_retention_policy_hour | * PLANNED_RETENTION_POLICY_HOUR | |
| backend.planned_retention_policy_minute | * PLANNED_RETENTION_POLICY_MINUTE | |
| backend.delete_sample_batch_size | * DELETE_SAMPLE_BATCH_SIZE | |
| backend.delete_sample_batch_sleep | * DELETE_SAMPLE_BATCH_SLEEP | |
| backend.retention_process_count | backend.retention_workers_count | |
| backend.sample_ttl | * SAMPLE_TTL | |
| ./cfg/matcher.values.yaml | shard.search_threads_n | * SEARCH_THREADS_N |
| ./cfg/video-recorder.values.yaml | minio.error_data_retention_days | * S3_ERROR_DATA_RETENTION_DAYS |
| video_recorder.uvicorn_concurrency | * UVICORN_CONCURRENCY | |
| video_recorder.sqlalchemy_pool_size | * SQLALCHEMY_POOL_SIZE | |
| video_recorder.sqlalchemy_pool_overflow | * SQLALCHEMY_POOL_OVERFLOW | |
| minio.buckets_prefix | * S3_BUCKETS_PREFIX | |
| decoder.enabled | video_recorder.decoding_enabled | |
| decoder.decoding_process_count | video_recorder.decoding_process_count | |
| minio.delete_cleanup_interval | * MINIO_API_DELETE_CLEANUP_INTERVAL | |
| video_recorder.retention_batch_size | * RETENTION_BATCH_SIZE | |
| video_recorder.retention_batch_pause | * RETENTION_BATCH_PAUSE | |
| video_recorder.retention_check_frequency | * RETENTION_CHECK_FREQUENCY | |
| video_recorder.retention_process_count | video_recorder.retention_workers_count | |
| ./cfg/report.values.yaml | core.process_count | * REPORT_PROCESS_COUNT |