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

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

Загрузка образов и создание Kubernetes-кластера

Подготовка

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

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

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

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

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

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

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

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

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

./cli.sh generic load-images

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

./cli.sh smc load-images

Загрузка образов может занять около пяти минут.

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

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

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

примечание

Значения, указываемые через точку в yaml файлах, отражают вложенность.

Файл конфигурацииПеременные
./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 — IP-адрес машины, на которой будет установлен сервер лицензий.
./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-сервера. Чтобы отключить отправку писем, оставьте данные поля пустыми.
  • minio-credentials — имя пользователя и пароль для root пользователя в объектном хранилище.
./cfg/platform.values.yaml
  • backend.query_limit — ограничение количества возвращаемых элементов в API-запросах для получения сущностей системы. Увеличение данного лимита не рекомендуется, т.к. время выполнения API-запроса может увеличиться в несколько раз. Также обратите внимание, что увеличение лимитов приведет к ухудшению работы системы.
  • backend.index_update_period — значение в секундах, описывающее через какое время добавленный профиль появится в поисковом индексе. По умолчанию установлено значение 60 секунд. Если требуется увеличить скорость обновления поискового индекса, следует уменьшить значение.
  • backend.enable_profile_autogeneration — Автосоздание профилей для приходящих активностей с OMNI Agent. Необходимо учитывать, что при включении данной опции будет увеличенный расход ресурсов лицензии (размер базы данных). Для включения функции установить значение 1.
  • processing.use_cuda — отвечает за использование видеокарты в сервисе обработки. 0 — отключить, 1 — включить.
  • ingress.rules.gateway.host — доменное имя, используется в ingress для маршрутизации запросов на сервисы Kubernetes.
  • postgres.enable — выключите, если используете свой сервер базы данных. Примечание. Необходимо поменять значения для postgres-root-credentials в файле ./cfg/platform.secrets.json и значения для postgres.host и postgres.port в текущем файле.
  • minio.enable — обозначает, что для хранения изображений из событий будет использоваться объектное хранилище. Если выключить этот параметр, для хранения изображений будет использоваться postgres. Примечание. Если после первого развертывания уже накопилось какое-то количество изображений, то выключать данный параметр не рекомендуется, иначе будет невозможно получить накопленные данные. При разветывании в AWS необходимо отключить этот параметр.
  • matcher.shard_n — интерфейсный параметр, регулирует количество одновременных обращений к matcher-serivice. Должен быть равен параметру shard.quantity в файле matcher.values.yaml
  • event_service.pool_size — максимальное количество активных и неактивных соединений в пуле, которые может использовать один воркер.
  • event_service.max_overflow — максимальное количество временных соединений, которые могут быть открыты сверх значения параметра event-service.pool_size. Подробнее см. в разделе Настройка оптимального количества соединений к БД.
  • event_service.pool_recycle — время в секундах, через которое соединения из пула должны быть переоткрыты.
  • event_service.pool_pre_ping — параметр, включающий или отключающий проверку соединения с БД перед отправкой запросов. Обратите внимание: Данный параметр отвечает за проверку соединений со стороны сервиса, обработка со стороны БД настраивается отдельно.
  • event_service.ws_timeout — время в секундах, после которого веб-сокет соединение будет закрыто при обрывах.
./cfg/matcher.values.yaml
  • shard.quantity — количество создаваемых шардов, увеличение параметра позволяет ускорять поиск на больших данных
  • shard.search_threads_n — количество используемых потоков для выполнения поиска
./cfg/platform-ui.values.yaml
  • ingress.host — доменное имя, используется в ingress для маршрутизации запросов на сервисы Kubernetes. Значение должно совпадать со значением ingress.rules.gateway.host в файле ./cfg/platform.values.yaml.

Настройка 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

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

примечание

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

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

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

Эти команды создают точки монтирования базы данных, инициализируют кластер и устанавливают секреты.

примечание

Для использования GPU в кластере установите NVIDIA device 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

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

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

Пробный период активируется при первом запуске OMNI Platform.

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

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

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

./cli.sh license-server install

Запустите сервер лицензий:

./cli.sh license-server start

Проверьте, что сервер лицензий находится в статусе 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 в вашем браузере, на странице должна отобразиться форма входа.

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

Перед активацией убедитесь, что в 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.dat на почту support-platform@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!

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

Выполните команду для получения статуса лицензии:

./cli.sh license-server status-license

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

Activation Status: OK
License key: YOUR-LICENSE-KEY
Days Left To Expiration: 100
примечание

Сравните результат вывода команды с данными вашей лицензии. Days Left To Expiration=14 означает, что автоматически активировалась триальная лицензия. В этом случае повторите шаги по активации.

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

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

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

./cli.sh image-api install

Запустите установку Matcher (matcher-router + matcher-shard):

./cli.sh matcher install

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

./cli.sh platform install

При необходимости запустите установку веб-интерфейса OMNI Platform:

./cli.sh platform-ui install

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

watch 'kubectl get pods'

Наличие у всех под (pods) статуса Running означает, что платформа запущена.

примечание

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

Настройка DNS

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

Для тестирования можно указать IP-адрес и домен в файле /etc/hosts на Linux или C:\Windows\System32\drivers\etc\hosts на Windows. Просто добавьте в конец файла новую строку вида <external_ip_address> <ingress.rules.gateway.host> и сохраните файл. Значения переменных указаны в файлах ./cfg/smc.settings.cfg и ./cfg/platform.values.yaml.

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

Для использования OMNI Platform с той же машины, где выполнено развертывание, можно воспользоваться скриптом. Он добавит необходимую запись в файл /etc/hosts.

./cli.sh generic add-dns - <external_ip_address> <domain>

Описание сервисов

Для получения статуса сервисов OMNI Platform выполните команду:

kubectl get pods

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

Пример вывода:

NAME                                                        READY          STATUS         RESTARTS         AGE
image-api-age-estimator-dep-c66c8f575-zb84s 1/1 Running 0 24h
image-api-body-detector-dep-5588d96ddc-lnrrx 1/1 Running 0 24h
image-api-emotion-estimator-dep-b6c947ff-mz7cw 1/1 Running 0 24h
image-api-face-detector-face-fitter-dep- 1/1 Running 0 24h
image-api-face-detector-liveness-estimator-dep- 2/2 Running 0 24h
image-api-face-detector-template-extractor-dep- 1/1 Running 0 24h
image-api-gender-estimator-dep-7948d8cf85-4hk2q 1/1 Running 0 24h
image-api-mask-estimator-dep-5ccfcc8cb9-sjnqz 1/1 Running 0 24h
image-api-quality-assessment-estimator-dep- 1/1 Running 0 24h
image-api-verify-matcher-dep-6b8f5b4d6f-jjqr4 1/1 Running 0 24h
image-api-template-extractor-dep-64d9d7f6f7-b5bpd 1/1 Running 0 24h
image-api-liveness-estimator-dep-6b757b994c-hd9cn 2/2 Running 0 24h
platform-activity-matcher-dep-8697574c9b-xvh5z 2/2 Running 0 24h
platform-agent-sync-dep-899c9ddc8-7qcvj 1/1 Running 0 24h
platform-backend-dep-685675d648-ngcrj 1/1 Running 0 24h
platform-event-service-dep-5fcd66f999-24jjg 1/1 Running 0 24h
platform-admin-static-dep-f4cd7db78-h86jz 1/1 Running 0 24h
platform-licensing-dep-84d78745d6-2flk2 1/1 Running 0 24h
platform-memcached-dep-64d9d7f6f7-b5bpd 1/1 Running 0 24h
platform-minio-dep-58fc7db749-l457d 1/1 Running 0 24h
platform-postgres-dep-67c5b75b84-fm8wr 1/1 Running 0 23h
platform-rabbit-dep-69cd659f8c-sbnk2 1/1 Running 0 24h
platform-redis-dep-694df659f-9vhrh 1/1 Running 0 24h
platform-ui-dep-78bcb9d878-8mtqx 1/1 Running 0 24h
platform-matcher-adapter-dep-dd947d74c-5cjz7 1/1 Running 0 24h
matcher-router-dep-76b9766867-fcrtl 1/1 Running 0 24h
matcher-shard-dep-0-5c5c786694-wqvpk 1/1 Running 0 24h

Краткое описание сервисов:

  • platform-activity-matcher-dep: сервис используется для поиска людей по активностям.
  • image-api-age-estimator-dep: сервис используется для оценки возраста человека по изображению лица.
  • platform-agent-sync-dep: сервис отвечает за синхронизацию данных о профилях с OMNI Agent.
  • platform-backend-dep: основной контейнер платформы, отвечает за работу большей части API.
  • image-api-body-detector-dep: сервис предназначен для детекции силуэтов на изображении.
  • platform-rabbit-dep: сервис RabbitMQ, используется для работы асинхронной очереди задач.
  • platform-cache-dep: сервис Memcached, используется для кэширования данных.
  • platform-postgres-dep: Экземпляр СУБД PostgreSQL, хранит всю информацию платформы.
  • image-api-emotion-estimator-dep: сервис используется для оценки эмоций человека по изображению лица.
  • image-api-face-detector-face-fitter-dep: сервис используется для детекции лиц и определения антропометрических точек лица и углов поворота головы.
  • image-api-face-detector-liveness-estimator-dep: сервис используется для детекции лиц и оценки принадлежности лица на изображении реальному человеку.
  • image-api-face-detector-template-extractor-dep: сервис предназначен для детекции лиц и извлечения биометрического шаблона лица.
  • image-api-liveness-estimator-dep: сервис предназначен для оценки принадлежности лица на изображении реальному человеку.
  • platform-admin-static-dep: сервис отвечает за веб-интерфейс страницы администрирования Django.
  • image-api-gender-estimator-dep: сервис используется для оценки пола человека по изображению лица.
  • platform-licensing-dep: сервис, ограничивающий работу платформы согласно параметрам лицензии.
  • image-api-mask-estimator-dep: сервис позволяет определить наличие или отсутствие медицинской маски на лице человека.
  • platform-minio-dep: сервис MinIO, используется для хранения изображений.
  • image-api-quality-assessment-estimator-dep: сервис предназначен для оценки качества изображения лица.
  • platform-redis-dep: сервис Redis, используется для работы веб-сокетов.
  • image-api-verify-matcher-dep: сервис отвечает за сравнение двух лиц с изображений.
  • platform-event-service-dep: сервис используется для обработки событий, приходящих с OMNI Agent.
  • platform-ui-dep: сервис отвечает за работу веб-интерфейса платформы.
  • matcher-adapter-dep: сервис отвечает за синхронизацию базы лиц платформы и поискового индекса Matcher Service.
  • matcher-router: сервис отвечает балансировку запросов поиска лиц на matcher-shards.
  • matcher-shard: сервис отвечает за поиск лиц.