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

# Инструкция по обновлению

### Обновление 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 и выше​

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

   примечание

   Не нужно переносить секреты для stunner, заполните их снова в соответствии с инструкциями.

   ATTENTION!

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

2. Удалите старый релиз stunner, так как в новой версии BAF он был значительно обновлен. Перейдите в папку со старой версией BAF и выполните следующую команду:

       ./cli.sh stunner uninstall

   примечание

   При чистой установке stunner генерирует новые порты TURN. Необходимо обновить настройки веб-компоненты.

3. Перейдите в папку с новой версией BAF и выполните приведенную ниже команду:

       ./cli.sh platform install-secrets

   Это действие является обязательным, иначе сервисы не получат необходимый набор полей и не смогут запуститься.

4. Загрузите новые образы, выполнив команду ниже:

       ./cli.sh generic load-images

5. Вернитесь к разделу развертывания и продолжайте выполнять шаги как при чистой установке.

   примечание

   Не перезаписывайте значения из предыдущей версии, только обновляйте новые, если того требует инструкция.

### Обновление BAF с версии 1.6.0 до 1.7.0 и выше​

Основные изменения, которые произошли в версии 1.7.0, это разделение сервиса LRS на две подсистемы. Video Recorder для записи видео и LRS для вычисления liveness по видео. Для успешного обновления необходимо правильно перенести секреты и настройки.

1. Перенесите значения из файла lrs.secrets.json прошлой версии в файл video-recorder.secrets.json новой версии. lrs в названии секрета необходимо заменить на video-recorder. Например, lrs-postgres == video-recorder-postgres.

2. Перенесите значения из файла lrs.values.yaml в файл video-recorder.values.yaml. Блок lrs из старых values переносится в блок video-recorder, исключая поля host и image. Остальные блоки переносятся один к одному, исключая поля image.

3. Перенесите значения из файла baf.values.yaml в новый файл baf.values.yaml. Из старого блока lrs в новый блок video-recorder необходимо перенести только значение enabled. Значения остальных блоков переносятся один к одному, исключая поля image.

4. Вернитесь к разделу развертывания и продолжайте выполнять шаги как при чистой установке.

### Обновление 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