ELMA Bot On-Premises можно установить в уже существующий Kubernetes-кластер. ELMA Bot поставляется в виде двух helm-чартов:
- elma365-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: https://dl.elma365.com/extensions/elma-bot/latest/elma-bot.tar.gz
- elma365-dbs: https://dl.elma365.com/onPremise/chart/latest/elma365-dbs.tar.gz
Подготовка к установке
Перед установкой ELMA Bot необходимо выполнить следующее:
- настроить kubernetes-кластер в соответствии с требованиями для установки;
- зарегистрировать домен;
- получить Wildcard ssl сертификат или uсc ssl сертификат для поддоменов: admin, auth, designer, client, elma365, kb, установить ssl сертификат в kubernetes;
- в случае использования общего RWX-volume (sharedPVC) предварительно создать pvc с рекомендуемым размером 8Gi.
Чтобы установить ssl сертификат для домена в kubernetes, используйте команду:
kubectl create secret tls example-com-tls [-n namespace] \
--key < private key filename> \
--cert < certificate filename>
Чтобы создать 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
Установка helm-чартов
Установка производится с использованием Helm v.3 в два этапа.
1. Установка баз данных (чарт elma365-dbs).
2. Установка ELMA bot (чарт ELMA bot).
Установка баз данных (чарт elma365-dbs)
- Скачайте и распакуйте 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,s3elmabot, elmabot-static-files, elmabot-temporary-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, укажите его во всех командах установки.
- После настройки values-dbs.yaml установите helm-чарт:
helm upgrade --install elma365-dbs ./elma365-dbs -f values-dbs.yaml [-n namespace]
Установка ELMA Bot (чарт elma-bot)
- Скачайте и распакуйте helm-чарт elma-bot:
curl -fsSO https://dl.elma365.com/elma-bot/elmabot.tar.gz && mkdir -p ./elma-bot && tar -xvf elmabot.tar.gz -C ./elma-bot
- Заполните параметры в файле values.yaml.
Минимально необходимые параметры — строки подключения к базам данных и s3, host, ssl сертификат:
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:
helm upgrade --install elma-bot ./elma-bot --timeout=30m --wait [-n namespace]
Настройка интеграции ELMA Bot и Elma365
Интеграция с ELMA365
Для интеграции с Elma365 необходимо соблюсти ряд условий:
- cо стороны ELMA365:
- установить с tls;
- настроить сервисы elmabot-proxy, hydra-adaptor, settings;
- активировать лицензии платформы и ELMA365 Service. Подробнее об этом читайте в статье «Активация».
- cо стороны ELMA Bot:
- включить провайдер авторизации (сервис hydra);
- настроить параметры global.elma365Integration.
Пример настройки интеграции Elma365 и ELMA Bot:
- values.yaml Elma365 helm-чарт:
elmabot-proxy:
appconfig:
apiUrl: https://elma365.example.com
grantType: elma.assistant.auth.grants.impersonation.elma365
identityServerUrl: https://auth.example.com
oidcUri: example.com
scope: elma.assistant.scopes.api.gateways.elma365 elma.assistant.scopes.auth.impersonation
hydra-adaptor:
appconfig:
client_id: elma.assistant.clients.external.elma365.server
client_secret: wvmtLu1KAvf8XjtULBFJ3DP0eB
hydraAdminURL: http://hydra-admin:4445
loginEndpoint: https://example.com/ext-api/oidc-adaptor/login
settings:
appconfig:
onPremiseCustomEnabledFeatureFlags:
- allowLinesBots
- values.yaml ELMA Bot helm-чарт:
global:
elma365Integration:
clientSecret: wvmtLu1KAvf8XjtULBFJ3DP0eB
elma365Uri: example.com
elma365TlsSecret: example-com-tls
host: example.com
ingress:
existingTLSSecret: example-com-tls
hydra:
enabled: true
Требования к конфигурации Kubernetes
Установленная версия кластера kubernetes должна поддерживать Kubernetes API v.2, Kubernetes version 1.19.
Также должно быть разрешено проксирование из pod’ов во внешнюю сеть.
При использовании microk8s (рекомендуется версия 1.21) в качестве готового кластера Kubernetes убедитесь, что установлены следующие компоненты:
- storage — Default storage class;
- dns — CoreDNS;
- rbac — RBAC;
- ingress — Ingress controller;
- helm3 — Helm3.
Для включения используется команда microk8s.enable, например, для ingress:
microk8s.enable ingress
Ingress controller должен быть настроен согласно следующей конфигурации:
extraPortMappings:
- containerPort: 80
hostPort: 80
protocol: TCP
- containerPort: 443
hostPort: 443
protocol: TCP
В случае установки кластера с помощью Kubernetes in Docker (KinD) необходимо включить ingress controller в конфигурационном файле при создании:
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
kubeadmConfigPatches:
kind: InitConfiguration
nodeRegistration:
kubeletExtraArgs:
node-labels: "ingress-ready=true"
extraPortMappings:
- containerPort: 80
hostPort: 80
protocol: TCP
- containerPort: 443
hostPort: 443
protocol: TCP
Минимальные системные требования
Операционная система:
- Ubuntu Server 20.04 LTS;
- Astra Linux.
Дополнительное ПО:
- tar;
- bash;
- curl;
- для установки системы нужен доступ в интернет;
- технология виртуализации должна поддерживать AVX2 (важно для сервисов обучения ML моделей распознавания языка).
CPU:
- 8x2.2Ghz;
- Рекомендуется Intel Xeon;
- Должна быть поддержка инструкций AVX2.
RAM:
- 20Gb.
Диски:
- 100Gb RAID (ОС + приложения);
- 500Gb RAID (данные).
Сеть:
- 1Gb/s для внутренней сети между серверами;
- 100Mb/s для внешней сети от сервера приложений к администраторам и пользователям.