Перейти к основному содержимому
Версия: 1.18.0 (последняя)

Инструкция по установке Lite

Подготовка окружения

Скачивание дистрибутива

Скачайте и распакуйте дистрибутив BAF Lite на машину, где планируется выполнить установку. Для этого можно воспользоваться командой:

$ curl --output baf_lite.zip ссылка на дистрибутив

В curl-запросе укажите ссылку на дистрибутив BAF Lite (zip-файл).

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

Далее переместите файл лицензии face_sdk.lic (файл прикреплен к электронному письму) в папку setup.

примечание

Убедитесь, что файл с лицензией называется именно face_sdk.lic. Использование другого имени приведет к ошибкам генерации секретов.

Комплект установки BAF Lite:

  • ./cli.sh — точка входа для запуска команд.
  • ./cfg — папка с файлами конфигурации.

Дальнейшие команды выполняются в системной консоли из директории setup.

Загрузка образов

Загрузите в локальный registry продуктовые образы из архива:

$ ./cli.sh generic load-images

Загрузите в локальный registry инфраструктурные образы из архива:

 $ ./cli.sh smc load-images

Конфигурация BAF Lite

Базовая конфигурация

Ввод переменных окружения

Глобально переменные окружения можно разделить на три категории:

  • Переменные окружения системных элементов, не связанных с Helm-чартами;
  • Публичные переменные окружения чарта модуля;
  • Секретные переменные окружения чарта модуля.

Первая категория использует формат <имя_переменной>=<значение> и представлена следующими файлами:

Файл конфигурацииИмя переменнойОписание
./cfg/smc.settings.cfgapiserver_advertise_addressадрес для kube-apiserver, обычно используется внутренний IP-адрес машины.
external_ip_addressадрес для ingess-controller, необходимо указать внешний IP-адрес машины.

Вторая категория использует YAML-формат. Эти настройки впоследствии применяются непосредственно при установке чартов как внешние values для переопределения внутренних значений Helm-чарта. Каждый чарт имеет полный стандартный набор переменных окружения. В файлы внешних values включаются только те переменные, которые требуется изменить.

Для изменения большинства переменных окружения предусмотрен гибкий механизм, позволяющий передавать YAML-объекты напрямую в итоговый шаблон развертывания. Для сервисов, поддерживающих такую настройку, используется поле envOverride. В этом поле в формате YAML-словаря ключом выступает имя переменной, а значением — YAML-объект, который будет подставлен в итоговый шаблон в качестве переменной окружения сервиса.

Пример:

envOverride:
JWT_CLOCK_SKEW:
value: '1'
осторожно

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

Гибкая возможность кастомизации переменных окружения представлена в следующих файлах:

Файл конфигурацииРаздел конфигурацииНазвание переменнойЗначение по умолчаниюОписание
./cfg/authentification-service.values.yamlauthentification_serviceJWT_LEEWAYvalue: '1'допустимое расхождение времени серверов (clock skew), используемое при проверке валидности JWT-токена.
./cfg/util-services.values.yamlclient_logJWT_CLOCK_SKEWvalue: '1'допустимое расхождение времени серверов (clock skew), используемое при проверке валидности JWT-токена. Значение должно соответствовать параметру JWT_LEEWAY в файле authentification-service.values.yaml.
./cfg/video-recorder.values.yamlvideo_recorderUVICORN_CONCURRENCYvalue: '30'количество одновременно обрабатываемых http-соединений для каждой поды. После превышения лимита будет возвращаться ошибка 503.
SQLALCHEMY_POOL_SIZEvalue: '20'максимальное количество персистентных соединений, которые будет держать пул sql alchemy для каждой поды.
SQLALCHEMY_POOL_OVERFLOWvalue: '10'количество соединений сверху персистетного количества, которые будут закрыты после использования для каждой поды.
RETENTION_BATCH_SIZEvalue: '83'размер пакета видео-контента попыток, который будет удален за один раз.
RETENTION_BATCH_PAUSEvalue: '4'время в секундах между удалениями пакетов.
RETENTION_CHECK_FREQUENCYvalue: '3600'частота запуска проверки очистки в секундах.
JWT_CLOCK_SKEWvalue: '1'допустимое расхождение времени серверов (clock skew), используемое при проверке валидности JWT-токена. Значение должно соответствовать параметру JWT_LEEWAY в файле authentification-service.values.yaml.
minioS3_ERROR_DATA_RETENTION_DAYSvalue: '3'период хранения ошибочных данных в днях в хранилище объектов.
MINIO_API_DELETE_CLEANUP_INTERVALvalue: '30s'интервал, в котором minio удаляет объекты из корзины.
S3_BUCKETS_PREFIXvalue: 'vr'префикс, который ставится перед всеми именами бакетов в подобном формате: <prefix>.<bucket name>
S3_USE_HTTPSvalue: '0'флаг, определяющий, следует ли использовать протокол HTTPS для взаимодействия с S3.

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

примечание

Значения, записанные через точку в YAML-файлах, обозначают структуру вложенности.

Список файлов с классическими переменными:

Файл конфигурацииПуть переменнойОписание
./cfg/authentification-service.values.yamlingress.enableустановите значение параметра 1, чтобы предоставить внешний доступ к сервису аутентификации через ingress ресурс. Ingress будет использовать домен из параметра ingress.rules.gateway.host.
./cfg/baf-lite.values.yamlingress.rules.gateway.hostдоменное имя, используется в ingress для маршрутизации запросов на сервисы Kubernetes для BAF Lite.
gateway.dns_resolverдоменное имя DNS сервера, который будет использоватся для резолва имен сервисов kubernetes.
gateway.dns_validity_timeвремя после которого будет происходить перезолв доменного имени сервиса..
gateway.cluster_domainдомен кластера k8s, который будет использоваться в пути до сервиса video-recorder
./cfg/video-recorder.values.yamlminio.enableесли используете свой сервер minio, установите 0. Примечание: необходимо поменять значения секрета video-recorder-minio в файле ./cfg/video_recorder.secrets.json и значения полей minio.host, minio.port и S3_USE_HTTPS (1 для https, 0 для http) в текущем файле.
video_recorder.decoding_enabledесли вам не нужно декодирование видео, установите 0.
video_recorder.decoding_process_countколичество процессов декодирования, запускаемых в одной реплике сервиса. Чем больше процессов, тем больше одновременных сессий декодирования видео будет обрабатывать сервис.
video_recorder.retention_workers_countколичество процессов, выполняющих очистку видео-контента попыток.
postgres.deployесли у вас собственная БД, установите 0. Примечание: необходимо поменять значения секрета video-recorder-postgres в файле ./cfg/video_recorder.secrets.json и значения полей postgres.host, postgres.port
redis.deployесли у вас есть собственный redis, установите 0. Примечание: необходимо поменять значения полей redis.host, redis.port
./cfg/util-services.values.yamlingress.rules.gateway.hostдолжен быть равен домену ingress в файле ./cfg/baf.values.yaml
./cfg/image-api.values.jsonprocessing.enable_ingressустановите значение параметра 1, чтобы предоставить внешний доступ к модулю image-api через ingress ресурс. Ingress будет использовать домен из параметра ingress.host.
ingress.hostдоменное имя, используется в ingress для маршрутизации запросов на сервисы Kubernetes для модуля image-api.

Третья категория хранится в JSON-файлах и используется скриптами поставки для создания секретов внутри кластера Kubernetes. Если требуется использовать собственные секреты, необходимо добавить в envOverride (в файле values.yaml соответствующего модуля) переменную с именем переменной, которая связана с секретом, и описать в ней корректный YAML для получения данных из вашего секрета.

Список файлов секретов и их переменных окружения:

Файл конфигурацииНазвание секретаОписание секретаПоле в секрете(Название файла values.yaml)Раздел\Название переменной окружения
./cfg/authentification-service.secrets.jsonjwt-keysданные ключей для шифрования и проверки токенов.privateauthentification_service\JWT_PRIVATE_KEY
public
  • authentification_service\JWT_PUBLIC_KEY
  • (video-recorder.values.yaml) video_recorder\JWT_PUBLIC_KEY
  • (baf-lite.values.yaml) gateway\JWT_PUBLIC_KEY
  • (util-services.values.yaml) client_log\JWT_PUBLIC_KEY
./cfg/video-recorder.secrets.jsonvideo-recorder-postgresданные для подключения к базе.uservideo_recorder\POSTGRES_USER
passwordvideo_recorder\POSTGRES_PASSWORD
dbvideo_recorder\POSTGRES_DB
video-recorder-tokenтокен доступа к внутренним API сервиса.access_tokenvideo_recorder\TOKEN
vr-postgres-root-credentialsимя пользователя и пароль для root пользователя в базе данных.user
  • postgres\POSTGRES_USER
password
  • postgres\POSTGRES_PASSWORD
video-recorder-minioданные для подключения к базе.userminio\MINIO_ROOT_USER
passwordminio \ MINIO_ROOT_PASSWORD

Обновление конфигурации работающего инстанса

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

Для применения обновления ресурсов модуля (всего, что требует отдельной команды установки, например, секретов) выполните команду установки ресурса модуля и перезапустите поды модуля с помощью инструментов Kubernetes, чтобы они применили изменения.

Расширенная конфигурация (опционально)

Настройка Docker для использования GPU

Для установки nvidia-container-runtime в качестве низкоуровневой среды выполнения по умолчанию выполните следующую команду:

./cli.sh smc nvidia install
Настройка использовая GPU в BAF Lite

Чтобы включить GPU в BAF Lite, необходимо переопределить переменную CONFIGS для сервиса face-detector-template-extractor. Это делается в файле ./cfg/image-api.values.yaml.

В раздел processing.services добавьте следующий YAML-объект:

face-detector-template-extractor:
envOverride:
CONFIGS:
value: '{"capturer": {"name": "common_capturer_uld_fda.xml", "params": {"use_avx2": 0, "downscale_rawsamples_to_preferred_size": 0}}, "recognizer": {"name": "method12v1000_recognizer.xml", "params": {"use_avx2": 0, "use_cuda": 1}}}'

Установка и настройка кластера

примечание

Если у вас уже есть развернутый кластер, перейдите к пункту «Настройка лицензирования».

Запустите команды для создания и настройки кластера:

./cli.sh smc system-patch
./cli.sh smc install

Эти команды выполняют следующие действия:

  • Создание точки монтирования базы данных
  • Инициализация кластера

Если вы используете GPU, дополнительно запустите скрипт по установке nvidia-plugin в кластер:

$ ./cli.sh smc nvidia install

Проверка работоспособности кластера

После инициализации главного узла убедитесь, что все узлы готовы к работе и имеют статус Ready. Для проверки выполните следующую команду:

$ kubectl get nodes

В результате в терминале будет отображен следующий вывод:

NAME          STATUS      ROLES                   AGE     VERSION
master-node Ready control-plane,master 11d v1.23.8

Для проверки всех элементов кластера запустите следующую команду:

$ kubectl get all --all-namespaces

Развертывание BAF Lite

Запуск развертывания

Установка подсистемы image-api.

Запустите команду для установки секретов модуля для кластера:

$ ./cli.sh image-api install-secrets

Запустите установку модуля:

$ ./cli.sh image-api install

Установка подсистемы для аутентификации

Запустите команду для генерации ключей подписи JWT:

$ ./cli.sh authentification-service generate-jwt-keys

В результате вы получите два ECDsa ключа, которые необходимо прописать в файл конфигурации ./cfg/authentification-service.secrets.json в раздел jwt-keys.

Запустите команду для установки секретов:

$ ./cli.sh authentification-service install-secrets

Запустите команду для установки модуля:

$ ./cli.sh authentification-service install

Установка подсистемы для записи видео Video Recorder (VR)

Создайте директорию для хранения данных объектного хранилища и реалионной базы с помощью команд:

$ ./cli.sh video-recorder minio-create-mountpoint
$ ./cli.sh video-recorder postgres-create-mountpoint

Запустите команду для установки секретов Video Recorder:

$ ./cli.sh video-recorder install-secrets

Запустите команду для установки Video Recorder:

$ ./cli.sh video-recorder install

Установка подсистемы инструментальных сервисов Util Services (US)

Для установки Util Services запустите команду:

$ ./cli.sh util-services install

Установка BAF Lite

Запустите установку модуля:

$ ./cli.sh baf-lite install

Для отслеживания процесса развертывания откройте еще одну вкладку терминала и введите следующую команду:

$ watch 'kubectl get pods'

Наличие у всех pods статуса Running означает, что BAF Lite запущен.

Настройка DNS

Для доступа к BAF Lite DNS сервер вашей сети должен содержать запись о том, что домен доступен по адресу <external_ip_address>.

Для тестирования можно указать IP-адрес и домен в файле /etc/hosts на Linux или C:\Windows\System32\drivers\etc\hosts на Windows. Для этого добавьте в конец файла новую строку вида <external_ip_address> <host>, подставив значения соответствующих переменных, и сохраните файл.

Обратите внимание, что для редактирования файла hosts необходимо обладать правами администратора.