Перейти к основному содержимому
Версия: 1.0.0

Инструкция по развертыванию

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

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

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

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

В curl-запросе укажите ссылку на дистрибутив BAF (zip-файл). Ссылка на папку, в которой размещен дистрибутив и сопроводительная документация в формате pdf, будет указана в электронном письме.

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

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

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

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

Установка ПО

Для установки Docker, Kubernetes и Helm в Ubuntu можно воспользоваться скриптом, поставляемым вместе с дистрибутивом (требуется подключение к Интернету).

$ ./cli.sh package install 

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

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

$ ./cli.sh generic load-images 

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

 $ ./cli.sh smc load-images 

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

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

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

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

Файл конфигурацииПеременные
./cfg/smc.settings.cfg
  • apiserver_advertise_address - адрес для kube-apiserver, обычно используется внутренний IP-адрес машины.
  • external_ip_address - адрес для ingess-controller, необходимо указать внешний IP-адрес машины.
./cfg/license-server.settings.cfg
  • license_key - лицензионный ключ. Как правило, ключ отправляется в сопроводительном письме с дистрибутивом. При отсутствии ключа обратитесь к вашему менеджеру по продажам. Для пробного периода ключ не требуется.
  • license_server_address - адрес лицензионного сервера.
./cfg/platform.secrets.json
  • license-secret - установите лицензионный ключ и адрес лицензионного сервера вместо license_server_address.
  • docker-registry - установите значения, если используется внешний docker-registry.
  • rabbit-secret - имя пользователя и пароль для доступа к брокеру сообщений, используется для внутреннего взаимодействия сервисов OMNI Platform. Задайте произвольное имя, состоящее из латинских букв, без пробелов и пароль, состоящий из латинских букв и цифр, без пробелов.
  • postgres-root-credentials - имя пользователя и пароль для root пользователя в базе данных.
  • platform-service-key - секретный ключ, необходимый для внутреннего взаимодействия сервисов OMNI Platform.
  • platform-user-secret - учетные данные (адрес электронной почты и пароль), которые будут использоваться для доступа в OMNI Platform. При первом развертывании пользователи будут созданы автоматически. Указываемый адрес электронной почты должен состоять из цифр, латинских букв и символов.
  • platform-email-secret - параметры SMTP-сервера. Чтобы отключить отправку писем, оставьте поля пустыми.
./cfg/platform.values.yaml
  • backend.query_limit - ограничение количества возвращаемых элементов в API запросах для получения сущностей системы. Увеличение лимита не рекомендуется, т.к. время выполнения API запроса может увеличиться в несколько раз. Также, обратите внимание, что увеличение лимитов приведет к ухудшению работы системы.
  • backend.index_update_period - значение в секундах, описывающее через какое время добавленный профиль появится в поисковом индексе. По умолчанию установлено значение 60 секунд. Если требуется увеличить скорость обновления поискового индекса, следует уменьшить значение. Значение влияет на скорость авторизации после регистрации.
  • backend.enable_profile_autogeneration - автосоздание профилей для приходящих активностей с
    Agent. Необходимо учитывать, что при включении данной опции будет увеличенный расход ресурсов лицензии (размер базы данных). Для включения функции установить значение 1.
  • processing.use_cuda - параметр не используется в BAF, значение всегда должно быть равно 0.
  • ingress.rules.gateway.host - доменное имя, используется в ingress для маршрутизации запросов на сервисы Kubernetes для OMNI Platform.
  • postgres.enable - выключите, если используете свой сервер базы данных. Примечание: необходимо поменять значения для postgres-root-credentials в файле ./cfg/platform.secrets.json и значения для postgres.host и postgres.port в текущем файле.
./cfg/baf.values.yaml
  • baf.dvs.url - URL до развернутого DVS. Внимание! Если DVS не будет установлен, нужно заменить строку на пустую.
  • ingress.rules.gateway.host - доменное имя, используется в ingress для маршрутизации запросов на сервисы Kubernetes для BAF.
./cfg/baf.secrets.json
  • baf-user-sercet - учетные данные (адрес электронной почты и пароль), которые будут использоваться для доступа в BAF. Обратите внимание, что минимальная длина пароля составляет 6 символов, пароль должен состоять из латинских букв и цифр, содержать хотя бы одну заглавную букву и специальный символ “!”.
  • dvs-token - публичный и секретный токены для DVS.
  • platform-token - токен для подключения к OMNI Platform.
  • baf-postgres - данные для подключения к базе.
  • ВНИМАНИЕ: Поля dvs-token и platform-token заполняются во время установки.
Настройка Docker для использования GPU (опционально)

Конфигурация Docker

Для установки nvidia-container-runtime в качестве низкоуровневой среды выполнения по умолчанию, добавьте следующие строки в файл конфигурации, который находится по адресу /etc/docker/daemon.json:

{
"default-runtime": "nvidia",
"runtimes": {
"nvidia": {
"path": "/usr/bin/nvidia-container-runtime",
"runtimeArgs": []
}
}
}

Применение конфигурации

Перезапустите docker-service, выполнив следующую команду:

$ sudo systemctl restart docker

Проверьте, что docker-service успешно работает:

$ sudo systemctl status docker

Расширенная конфигурация

Настройка GPU

Для включения GPU в BAF необходимо отредактировать файл ./cfg/image-api.values.yaml. Для этого пропишите в переменные processing.services.face-detector-template-extractor.configs.capturer.params.use_cuda и processing.services.face-detector-template-extractor.configs.recognizer.params.use_cuda значение 1:

img.pnf

Пропишите значение 1 в переменную processing.services.face-detector-template-extractor.resources.limits.gpu:

img.pnf

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

примечание

Если у вас уже есть развернутый кластер, перейдите к пункту "Запуск развертывания"

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

$ ./cli.sh smc install 
$ ./cli.sh platform db-create-mountpoint
$ ./cli.sh platform install-secrets

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

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

Если вы используете 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

Настройка лицензирования

Пользователю доступны 3 варианта активации лицензии: активация пробного периода, онлайн и офлайн активация лицензии.

Установка и запуск сервера лицензий

Перед установкой откройте файл license-server.settings.cfg и задайте IP адрес машины, на которой будет установлен сервер лицензий, в переменной license_server_address.

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

$ ./cli.sh license-server install

Проверьте, что сервер лицензий находится в статусе Running, выполнив следующую команду:

$ ./cli.sh license-server status

Пример вывода в консоль:

floatingserver.service - Floating License Server
Loaded: loaded (/etc/systemd/system/floatingserver.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2022-12-20 12:25:54 +05; 1min 48s ago

Убедитесь, что сервер лицензий доступен. Для этого перейдите по адресу http://<license_server_address>:8090 в вашем браузере, на странице должна отобразиться форма входа.

Активация пробного периода

Важно:

  • требуется подключение к сети Интернет;
  • не допускается запуск на виртуальной машине.

Активация пробного периода происходит при первом запуске BAF.

Онлайн активация лицензии

Перед активацией убедитесь, что в key (файл ./cfg/license-server.settings.cfg) записан лицензионный ключ.

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

$ ./cli.sh license-server activate

Пример вывода в консоль при успешной активации лицензии:

[2022-12-20 12:25:53+05:00] INF Activating license key...
[2022-12-20 12:25:54+05:00] INF License activated successfully!

Офлайн активация лицензии

Перед активацией убедитесь, что в поле license_key (в файле ./cfg/license-server.settings.cfg) записан лицензионный ключ.

примечание

Для офлайн активации установите “1” в поле enable_offline_activation в файле license-server.settings.cfg.

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

$ ./cli.sh license-server generate-offline

В результате выполнения команды в директории setup должен появиться файл request-offline.dat.

Отправьте сгенерированный файл запроса request-offline.license на почту baf-request@3divi.com. В ответном письме будет отправлен файл лицензии.

Поместите полученный лицензионный файл в папку setup.

Откройте файл конфигурации license-server.settings.cfg и заполните значение переменной license_offline_activation_file именем файла лицензии и его расширением, если присутствует, через точку.

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

$ ./cli.sh license-server activate

Пример вывода в консоль при успешной активации лицензии:

[2022-09-08 01:30:36+05:00] INF Offline activating license key...
[2022-09-08 01:30:36+05:00] INF License activated successfully!

Активация подсистемы распознавания документов (DVS)

Если вы не планируете использовать BAF для работы с документами, пропустите этот пункт.

Для активации подсистемы переместите файл лицензии License.json (файл прикреплен к электронному письму) в папку setup/modules/dvs/.

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

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

Установка подсистемы для работы с документами (DVS) (опционально)

Запустите установку DVS:

$ ./cli.sh dvs install 

Инициализируйте базу данных в DVS с помощью команды (перед использованием этой команды рекомендуется подождать не менее 10 секунд):

$ ./cli.sh dvs init-db 

При успешной инициализации появится следующее сообщение:

INSERT 0 2
INSERT 0 2

Далее необходимо получить токены из развернутой подсистемы:

$ ./cli.sh dvs get-token

В результате вы получите два токена, которые необходимо прописать в файл конфигурации ./cfg/baf.secrets.json в раздел dvs-token. Также в файле ./cfg/baf.values.yaml укажите baf.dvs.url в виде http://<external_ip_address>:5100.

Установка BAF и подсистемы для работы с лицами (OMNI Platform)

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

$ ./cli.sh image-api install 

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

$ ./cli.sh platform install 

Для продолжения установки откройте файл /etc/hosts и в конце файла добавьте следующие строки:

<external_ip_address> :  <platform_domain>
<external_ip_address> : <baf_domain>

Далее необходимо получить токен из только что развернутой подсистемы:

$ ./cli.sh platform get-token - http://<platform_domain> <platform_user_email>

В результате вы получите токен, который необходимо прописать в файл конфигурации ./cfg/baf.secrets.json в раздел platform-token.

Далее инициализируйте секреты BAF для кластера:

$ ./cli.sh baf install-secrets 

Запустите установку BAF:

$ ./cli.sh baf install 

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

$ watch 'kubectl get pods'

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

Настройка DNS

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

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

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

Масштабирование

В случае, когда нагрузка возрастает, для стабилизации работы BAF предусмотрено масштабирование следующих сервисов в ручном режиме:

  • platform-processing-dep - сервис аккумулирует результаты работы сервисов-обработчиков (age-estimator-dep, emotion-estimator-dep, gender-estimator-dep,face-detector-face-fitter-dep, mask-estimator-dep)
  • image-api-face-detector-liveness-estimator-dep - сервис используется для детекции лиц и оценки принадлежности лица на изображении реальному человеку
  • image-api-age-estimator - сервис используется для оценки возраста человека по изображению лица
  • image-api-gender-estimator - сервис используется для оценки пола человека по изображению лица
  • image-api-mask-estimator - cервис позволяет определить наличие/отсутствие медицинской маски на лице человека
  • image-api-emotion-estimator - сервис используется для оценки эмоций человека по изображению лица

Для масштабирования сервиса необходимо выполнить следующую команду:

$ kubectl scale deployment <SERVICE_NAME> --replicas <COUNT>

где <SERVICE_NAME> - наименование сервиса (например, gateway-dep), а <COUNT> - количество экземпляров сервиса.

примечание

При использовании GPU ускорения сервис image-api-face-detector-template-extractor-dep поддерживает только один экземпляр, а значит для его масштабирования необходимо иметь N доступных видеоускорителей в кластере. При отсутствии нескольких GPU, можно увеличить утилизацию, изменив параметр processing.services.face-detector-template-extractor.workers в файле ./cfg/image-api.values.yaml.

Для поддержания нагрузки в A запросов/сек, направленной на обработку изображений, на сервере с физическим количеством ядер ЦП равным B следует установить значение реплик каждого из указанных сервисов по формуле min(A, B).

Для сохранения параметров масштабирования откройте файлы ./cfg/platform.values.yaml и ./cfg/image-api.values.yaml, найдите поле replicas в блоке сервиса и укажите новые значения реплик.

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