ELMA Bot On-Premises можно установить в уже существующий Kubernetes-кластер. ELMA Bot поставляется в виде двух Helm‑чартов:
- elma-bot-dbs — набор баз данных и хранилищ, необходимых для работы ELMA Bot. Также есть возможность использовать собственные базы данных Elasticsearch, MongoDB, Redis, RabbitMQ, хранилище S3, указав строки подключения к ним в файле
values
чарта elma-bot. При этом в файлеvalues-dbs.yaml
установку соответствующих компонентов можно отключить, выставив значениеfalse
, например, для PostgreSQL:global.postgresql.enabled
. Если все пять компонентов чарта будут выставлены вfalse
, то установка этого чарта не требуется. Подробнее о создании баз данных читайте в разделе «Подготовка внешних баз данных»; - elma-bot — чарт с ELMA Bot.
Helm-чарты elma-bot и elma-bot-dbs доступны для скачивания по ссылке: https://dl.elma365.com/extensions/elma-bot/latest/elma-bot.tar.gz.
Подготовка к установке
Перед установкой ELMA Bot выполните следующее:
- ознакомьтесь с минимальными системными требованиями;
- настройте Kubernetes-кластер. Установленная версия кластера должна поддерживать Kubernetes API версии не ниже 1.21. Также должно быть разрешено проксирование из подов во внешнюю сеть;
- зарегистрируйте домен;
- если вы планируете устанавливать сервисы бота на отдельные поддомены, получите Wildcard SSL-сертификат или UCC SSL-сертификат для поддоменов: admin, auth, designer, client, elma365, kb. Установите SSL-сертификат в Kubernetes.
Для бота версии от 1.8.0 доступна установка сервисов на одном домене. Подробнее читайте в разделе «Поддержка установки ELMA Bot на одном домене»;
- в случае использования общего RWX-volume (sharedPVC) предварительно создайте
PVC
с рекомендуемым размером 8 GiB.
Чтобы создать RWX-volume (опционально):
kubectl create -f pvc.yaml
Пример манифеста PersistentVolumeClaim
в файле pvc.yaml
:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: elmabot
labels:
tier: elmabot
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 8Gi
storageClassName: microk8s-hostpath
volumeMode: Filesystem
Установка SSL-сертификатов для сервисов ELMA Bot
Чтобы установить SSL-сертификат для домена в Kubernetes, используйте команду:
kubectl create secret tls example-com-tls [-n namespace] \
--key < private key filename> \
--cert < certificate filename>
Обратите внимание, аргументы в квадратных скобках опциональны. Если вы применяете такой аргумент, указывайте его без скобок.
Установка самоподписанных сертификатов для сервисов ELMA Bot (опционально)
С версии 1.8.0 ELMA Bot подключается с использованием самоподписанных SSL-сертификатов для доступа к сервисам по HTTPS.
Для корректной работы нужен файл с корневым сертификатом для подписания сертификатов бота, ELMA365 и других сервисов, к которым боту нужен доступ.
Чтобы добавить самоподписанный сертификат, выполните следующие действия:
1. Создайте ConfigMap с файлом корневого сертификата с помощью команды:
kubectl create configmap elma-bot-root-ca --from-file=elma-bot-cert.crt=elma-bot-CA.crt
Обратите внимание, в ключе --from-file=elma-bot-cert.crt=elma-bot-CA.crt
:
- замените
elma-bot-CA.crt
на название вашего файла корневого сертификата; - имя
elma-bot-cert.crt
, под которым файл сертификата монтируется в контейнеры, изменять нельзя.
2. Укажите название ConfigMap (elma-bot-root-ca
) в параметре global.tlsCAConfigMapName
в чарте elma-bot.
Установка Helm-чартов
Установка производится с использованием Helm v.3 в два этапа:
- Установка баз данных — чарт elma-bot-dbs.
Если установка ELMA Bot производится в один кластер вместе с ELMA365, то вместо чарта elma-bot-dbs используйте чарт elma365-dbs.
- Установка ELMA Bot — чарт elma-bot.
Установка чарта elma-bot-dbs
Чарт elma-bot-dbs поставляется вместе с чартом elma-bot в отдельной папке. Для установки выполните следующие шаги:
- Проверьте и при необходимости измените параметры файла
values-dbs.yaml
. Значения по умолчанию подходят для установки ELMA Bot, но вы можете изменить пароли и ключи доступа, а также размеры хранилищ. Кроме того, можно отключить отдельные сервисы, если вы планируете использовать внешние или установленные ранее сервисы. - При использовании своего образа Elasticsearch убедитесь, что в нём установлен плагин Elastiknn, который необходим для работы ELMA Bot.
- После настройки
values-dbs.yaml
установите Helm-чарт:
helm upgrade --install elma-bot-dbs ./elma-bot-dbs -f values-dbs.yaml [-n namespace]
Установка чарта elma365-dbs (опционально)
Используйте чарт elma365-dbs, если установка ELMA Bot производится в один кластер вместе с ELMA365.
Выполните следующие шаги:
- Скачайте и распакуйте Helm-чарт elma365-dbs:
curl -fsSO https://dl.elma365.com/onPremise/chart/latest/elma365-dbs.tar.gz && tar -xvf elma365-dbs.tar.gz
- Задайте параметры файла
values-dbs.yaml
. Минимально необходимые параметры —elasticsearch
иS3 buckets
:s3elma365
,elmabot-omega-models
,elmabot-bot-static-files
,elmabot-bot-temporary-files
,elmabot-analytics-report-files
,elmabot-conversation-export-files
,elmabot-bot-inbox-files
,elmabot-avatar-files
:
global:
elasticsearch:
enabled: true
minio:
defaultBuckets: s3elma365,s3elmabot,elmabot-static-files,elmabot-temporary-files
- При установке с ELMA365 необходимо настроить
ingress
иSSL
для MinIO. Пример конфигурации для example.com с сертификатомexample-com-tls
:
minio:
defaultBuckets: s3elma365,s3elmabot,elmabot-static-files,elmabot-temporary-files
apiIngress:
extraHosts:
- path: /s3elma365
name: example.com
extraTls:
- hosts:
- example.com
secretName: "example-com-tls"
- Если требуется создать отдельный
namespace
, укажите его во всех командах установки. - При использовании своего образа Elasticsearch убедитесь, что в нём установлен плагин Elastiknn, который необходим для работы ELMA Bot.
- После настройки
values-dbs.yaml
установите Helm-чарт:
helm upgrade --install elma365-dbs ./elma365-dbs -f values-dbs.yaml [-n namespace]
Установка чарта elma-bot
- Скачайте и распакуйте Helm-чарт elma-bot:
curl -fsSO https://dl.elma365.com/extensions/elma-bot/latest/elma-bot.tar.gz && mkdir -p ./elma-bot && tar -xvf elmabot.tar.gz -C ./elma-bot
- Заполните параметры в файле
values.yaml
.
Минимально необходимые параметры — строки подключения к базам данных и S3, host
, SSL-сертификат.
Обратите внимание, значение host
чарта elma-bot должно совпадать со значением host
чарта elma365-dbs.
global:
host: example.com
ingress:
existingTLSSecret: example-com-tls
db:
mongoUrl: 'mongodb://elma365:mongopassword@mongo:27017/elma365?ssl=false&replicaSet=rs0&readPreference=secondaryPreferred'
amqpUrl: amqp://elma365:rmqpassword@rabbitmq:5672/elma365
redisUrl: redis:6379
elasticsearchUrl: http://elasticsearch:9200
postgresUrl: 'postgres://postgres:pgpassword@postgres:5432/elma365?sslmode=disable'
s3:
accesskeyid: PZSF73JG72Ksd955JKU1HIA
secretaccesskey: aFDkj28Jbs2JKbnvJH678MNwiz88zKjsuNBHHs
Url: http://minio:80
buckets:
temproraryFiles: elmabot-temporary-files
staticFiles: elmabot-static-files
bot: s3elmabot
- Выберите и укажите режим работы ELMA Bot в параметре
global.routing.mode
. Возможные варианты:
- DOMAIN — для установки сервисов на отдельных поддоменах;
- PATH — для установки сервисов на одном домене. Доступно для бота версии от 1.8.0. Подробнее читайте в разделе «Поддержка установки ELMA Bot на одном домене».
- При установке ELMA Bot в режиме DOMAIN создаются поддомены auth.[host], client.[host], designer.[host], admin.[host], kb.[host]. Опционально измените их названия. Для этого отредактируйте соответствующие значения в файле
values.yaml
:[название сервиса].ingress.host
, например, укажите:bot-manager.ingress.host: "bot.{{ .Values.global.host }}"
.
Для каждого изменённого сервиса в дочернем файле charts/[название сервиса]/values.yaml
отредактируйте соответствующее значение ingress.host
.
Обратите внимание, если изменяется поддомен или подпуть сервиса auth, то нужно также обновить значение elmabot-proxy.appconfig.identityServerUrl
в файле values-elma365.yaml
в чарте ELMA365.
- Установите elma-bot:
helm upgrade --install elma-bot ./elma-bot --timeout=30m --wait [-n namespace]
Поддержка установки ELMA Bot на одном домене (опционально)
Начиная с версии бота 1.8.0, вы можете установить все сервисы бота на одном домене (или поддомене). При этом каждому сервису выделяется свой подпуть: \*\*\*/auth, \*\*\*/client и т. д.
В предыдущих версиях сервисы бота работали на разных поддоменах: auth.\*\*\*, client.\*\*\* и т. д.
Для переключения режима в файле values.yaml
измените параметр global.routing.mode
с DOMAIN на PATH (подробнее читайте в файле README.md в папке с чартами).
Вы можете изменить режим для ранее установленного бота. Для этого:
- в файле
values-elma365.yaml
в чарте ELMA365 обновите значенияelmabot-proxy.appconfig.identityServerUrl
иelmabot-proxy.appconfig.apiUrl
; - повторно подключите каналы Telegram, Viber;
- повторно подключите бота к линии в ELMA365.
Настройка интеграции ELMA Bot и Elma365
Интеграция с ELMA365
Для интеграции с ELMA365 необходимо соблюсти ряд условий:
- cо стороны ELMA365:
- установить с TLS;
- настроить сервисы
elmabot-proxy
,hydra-adaptor
,settings
; - активировать лицензии платформы и ELMA365 Service;
- cо стороны ELMA Bot:
- включить провайдер авторизации (сервис Hydra);
- настроить параметры
global.elma365Integration
.
Пример настройки интеграции ELMA365 и ELMA Bot
elmabot-proxy:
global: |
Минимальные системные требования
Операционная система:
- Ubuntu Server 20.04 LTS;
- Astra Linux.
Дополнительное ПО:
- tar;
- bash;
- curl;
- для установки системы нужен доступ в интернет;
- технология виртуализации должна поддерживать AVX2 (важно для сервисов обучения ML-моделей распознавания языка).
CPU:
- 8x2.2 Ghz;
- Рекомендуется Intel Xeon;
- Должна быть поддержка инструкций AVX2.
RAM:
- 20 GB.
Диски:
- 100 GB RAID (ОС + приложения);
- 500 GB RAID (данные).
Сеть:
- 1 Gb/s для внутренней сети между серверами;
- 100 Mb/s для внешней сети от сервера приложений к администраторам и пользователям.