ELMA Bot / Установка ELMA Bot в Kubernetes

Установка ELMA Bot в Kubernetes

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 в два этапа:

  1. Установка баз данных — чарт elma-bot-dbs.

Если установка ELMA Bot производится в один кластер вместе с ELMA365, то вместо чарта elma-bot-dbs используйте чарт elma365-dbs.

  1. Установка ELMA Bot — чарт elma-bot.

Установка чарта elma-bot-dbs

Чарт elma-bot-dbs поставляется вместе с чартом elma-bot в отдельной папке. Для установки выполните следующие шаги:

  1. Проверьте и при необходимости измените параметры файла values-dbs.yaml. Значения по умолчанию подходят для установки ELMA Bot, но вы можете изменить пароли и ключи доступа, а также размеры хранилищ. Кроме того, можно отключить отдельные сервисы, если вы планируете использовать внешние или установленные ранее сервисы.
  2. При использовании своего образа Elasticsearch убедитесь, что в нём установлен плагин Elastiknn, который необходим для работы ELMA Bot.
  3. После настройки 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.

Выполните следующие шаги:

  1. Скачайте и распакуйте Helm-чарт elma365-dbs:

curl -fsSO https://dl.elma365.com/onPremise/chart/latest/elma365-dbs.tar.gz && tar -xvf elma365-dbs.tar.gz

  1. Задайте параметры файла 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

  1. При установке с 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"

  1. Если требуется создать отдельный namespace, укажите его во всех командах установки.
  2. При использовании своего образа Elasticsearch убедитесь, что в нём установлен плагин Elastiknn, который необходим для работы ELMA Bot.
  3. После настройки values-dbs.yaml установите Helm-чарт:

helm upgrade --install elma365-dbs ./elma365-dbs -f values-dbs.yaml [-n namespace]

Установка чарта elma-bot

  1. Скачайте и распакуйте 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

  1. Заполните параметры в файле 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

  1. Выберите и укажите режим работы ELMA Bot в параметре global.routing.mode. Возможные варианты:
  1. При установке 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.

  1. Установите 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

Минимальные системные требования

Операционная система:

  • 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 для внешней сети от сервера приложений к администраторам и пользователям.