Установка на Ubuntu Server и microk8s в закрытом контуре
Руководство по установке ELMA Bot в закрытом контуре.
Создание виртуальной машины с Ubuntu Server
Создание ВМ будет происходить на примере службы Hyper-V
Параметры ВМ
Оперативная память
Для установки ELMA Bot рекомендуется не меньше 20 ГБ памяти
Важно: Не включайте параметр "использовать динамическую память", т.к. Kubernetes-кластер может посчитать, что памяти значительно меньше, чем доступно на самом деле, и некоторые поды не будут стартовать с ошибкой low memory.
Процессор
Для работы ELMA Bot требуется несколько виртуальных процессоров. Рекомендуется не меньше 4.
Жесткий диск
Для установки ELMA Bot + ELMA 365 в режиме закрытого контура для оффлайн-файлов и репозитория образов требуется примерно на 40 ГБ больше дискового пространства, чем для обычной установки. Рекомендуется установка на жесткий диск общим размером не менее 150 ГБ.
Размер жесткого диска можно увеличить позднее. Для увеличения размера раздела в Ubuntu можно воспользоваться инструкцией: https://woshub.com/increase-partition-size-ubuntu/
Сетевой интерфейс
Для нормальной работы сервисов ВМ должна быть доступна по ip-адресу и доменному имени из хост-системы. Самый простой способ, которым этого можно добиться - зафиксировать MAC-адрес ВМ, зафиксировать ip-адрес этого MAC-адреса в настройках роутера (если есть возможность) и прописать этот ip-адрес в файле hosts родительской ОС (в качестве доменного имени можно использовать сетевое имя ВМ, выбранное при установке Ubuntu; кроме основного домена на тот же ip-адрес необходимо прописать все поддомены ELMA Bot и поддомен ELMA 365, если нужно).
Установка Ubuntu Server 24
В параметрах ВМ подключите установочный образ Ubuntu в DVD-дисковод и запустите ВМ
Установка Ubuntu
При установке Ubuntu Server обратите внимание на следующее:
- При выборе размера логического диска Ubuntu по умолчанию устанавливает небольшой объем системного раздела. Увеличьте объем раздела, чтобы использовать весь виртуальный диск.
- Включите установку OpenSSH, чтобы не настраивать вручную позднее.
- При выборе компонентов можно сразу отметить для установки microk8s и docker — они еще пригодятся.
- Скачивание файлов при установке может происходить очень медленно, в этом случае попробуйте перезагрузить Windows или выбрать другое зеркало архивов.
Подготовка кластера microk8s
Для работы ELMA Bot нужно включить два аддона ingress и hostpath-storage. Для их включения выполните команды:
Дополнительно: установка k9s
K9s — удобный инструмент для мониторинга kubernetes-кластера.
Для установки k9s выполните команды:
Text Only | |
---|---|
Дополнительно: проверка сетевого доступа к ВМ
После установки Ubuntu, прежде чем приступить к установке ELMA Bot, можно удостовериться в наличии сетевого доступа к ВМ.
Docker
Для проверки доступа к ВМ с помощью тестового контейнера NGINX можно выполнить команды:
Text Only | |
---|---|
После этого в браузере из хост-системы по адресу http://[имя-вм]:8080
должна открываться тестовая страница с текстом Hello from Docker!
Для удаления контейнера выполните:
Дополнительно: проверка работы Kubernetes
Если доступ к docker-контейнеру есть, а сервисы ELMA Bot недоступны, можно попробовать настроить доступ к тестовому поду nginx.
Перед проверкой удалите все helm-релизы, если они есть, в т.ч. не установленные до конца (их можно увидеть с помощью команды helm list -a
).
Для проверки доступа с помощью тестового пода в кластере Kubernetes выполните следующие команды:
Text Only | |
---|---|
Проверьте, включен ли ingress:
Text Only | |
---|---|
и если нет, то включите:
Text Only | |
---|---|
Добавьте ingress-правило для доступа к сервису nginx. Для этого создайте файл nginx-ingress.yaml
с таким содержимым:
Text Only | |
---|---|
и примените его командой:
Text Only | |
---|---|
После этого при открытии в браузере адреса виртуальной машины вы должны увидеть стандартную страницу сервиса nginx.
Важно: после завершения проверки удалите helm-релиз:
Text Only | |
---|---|
И удалите ingress-правило:
Text Only | |
---|---|
Создание самоподписанных сертификатов
Установка ELMA Bot в закрытом контуре возможна с использованием самоподписанных сертификатов для доступа по HTTPS. В этом случае сначала создается корневой сертификат, а затем он используется для создания сертификатов сервисов. Корневой сертификат можно добавить в список доверенных на уровне ОС, и тогда все дочерние сертификаты также будут считаться доверенными.
Создание корневого сертификата
Для создания корневого сертификата выполните команду:
Text Only | |
---|---|
Создание сертификата для сервисов
Далее нужно создать сертификаты для сервисов. Для упрощения процесса можно создать один сертификат для всех сервисов. В этом примере в сертификате перечислены все поддомены, которые могут понадобиться. Отредактируйте перечень поддоменов так, как вам нужно, а вместо [домен]
укажите сетевой адрес, по которому доступна ВМ:
Text Only | |
---|---|
Подписание сертификата сервисов с помощью корневого сертификата
После этого в папке будет несколько файлов:
- elma-bot-CA.crt
- elma-bot-CA.key
- elma-bot-CA.srl
- elma-bot.crt
- elma-bot.csr
- elma-bot.key
elma-bot-CA.crt — корневой сертификат, его нужно будет добавлять в список доверенных elma-bot.crt и elma-bot.key — пара файлов, которые нужно будет указывать в качестве TLS-сертификатов в настройках сервисов
Создание TLS-секрета в kubectl
Перед установкой бота в helm-чартах в values.yaml нужно будет указать имя TLS-секрета с файлами сертификатов. Для создания этого секрета выполните команду:
Text Only | |
---|---|
Создание конфигмапа для монтирования в контейнеры
Перед установкой бота в helm-чартах в values.yaml нужно будет указать имя конфигмапа с файлом корневого сертификата, который будет монтироваться в контейнеры для правильной работы сервисов. Для создания этого конфигмапа выполните команду:
Text Only | |
---|---|
Название конфигмапа указывается в настройке global.tlsCAConfigMapName
в чартах бота.
Установка ELMA Bot
Загрузка файлов для оффлайн установки
Перед установкой ELMA Bot в закрытом контуре необходимо сначала выкачать файлы установки для последующего переноса в закрытый контур.
Обратите внимание: Выкачивание всех требуемых для установки файлов может занять много времени и около 20 ГБ места на диске
Для выкачивания файлов выполните команду:
Text Only | |
---|---|
Установка Harbor
Для того, чтобы скачанные образы были доступны для установки в закрытом контуре, их нужно закачать в локальное оффлайн хранилище образов Harbor.
Важно: Для работы Harbor нужен установленный Docker
Для установки Harbor перейдите в папку с дистрибутивом (здесь и далее замените "X.Y.Z" на номер устанавливаемой версии ELMA Bot, например "1.8.0"):
Text Only | |
---|---|
Теперь отредактируйте файл с конфигурацией harbor.yml
. Для этого можно скопировать файл из шаблона:
Text Only | |
---|---|
И открыть его в редакторе:
Text Only | |
---|---|
Заполните поле hostname. Если вы создавали сертификаты с помощью команд выше, укажите harbor.[домен]
, подставив ваш домен в значение. Указанный адрес должен быть доступен из системы, на которой будет производиться установка чартов ELMA Bot.
Microk8s (и возможно другие кластеры) требуют подключения к хранилищу образов по https. Поэтому заполните также пути к файлам сертификата:
Text Only | |
---|---|
Также можно поменять пароль администратора (harbor_admin_password).
ВАЖНО: обязательно измените путь к месту, где Harbor будет сохранять данные (data_volume). В противном случае могут быть проблемы с недостаточным свободным местом в контейнере Harbor, даже при наличии достаточного свободного места на ВМ. Можно указать /home/[имя пользователя]/harbor-data
При установке на одной системе с kubernetes кластером также можно изменить порты по умолчанию, чтобы кластер и Harbor не конфликтовали:
Для запуска установки выполните команду:
Text Only | |
---|---|
Проверьте, что Harbor работает и доступен, для этого в браузере зайдите на страницу `https://harbor.[домен]:[порт https]
Информация: Иногда Harbor может переставать работать, например, после перезапуска ВМ, в которой он установлен. В этом случае попробуйте повторно выполнить команду установки
sudo ./install.sh
, при этом данные Harbor не будут потеряны.
Также убедитесь, что Harbor доступен из системы, на которой будети производиться установка чартов. Для этого выполните команду:
Text Only | |
---|---|
Возможно, для доступа потребуется настроить DNS или отредактировать файл hosts, а также добавить сертификат из файла elma-bot-CA.crt в доверенные.
Файл hosts
Для редактирования файла hosts выполните команду:
Text Only | |
---|---|
и добавьте запись:
Text Only | |
---|---|
Доверенный сертификат
Скопируйте файл elma-bot-CA.crt
в папку /usr/local/share/ca-certificates
:
Text Only | |
---|---|
и выполните команду:
Text Only | |
---|---|
Проверьте, что curl больше не ругается на самоподписанный сертификат.
Загрузка образов в Harbor
Перед загрузкой образов нужно сначала создать в Harbor проект "elma-bot" и сделать его публичным (свойство public).
Затем можно перейти в папку elma-bot-X.Y.Z
, в которую загружались оффлайн-файлы скриптом и выполнить команду:
Text Only | |
---|---|
Измените в команде пароль администратора, если меняли его при установке Harbor. Операция потребует еще около 10 ГБ дискового пространства.
Установка баз данных
Для работы ELMA Bot требуется установка баз данных и других стандартных компонентов: mongoDb, redis, rabbitmq, elasticsearch и minio.
Существует три способа их установки:
-
Самостоятельная установка или использование уже установленных компонентов.
-
Установка с помощью helm-чартов elma365-dbs. Это удобно, если планируется также установка ELMA 365.
-
Установка с помощью helm-чартов elma-bot-dbs. В этом случае устанавливаются только компоненты, необходимые для работы ELMA Bot.
В первом случае необходимо прописывать строки подключения и учетные данные сторонних сервисов в чартах elma-bot, во втором и в третьем случаях стандартные значения должны подходить, но их также можно изменить, например, поменять стандартные пароли.
Установка чартов elma-bot-dbs
Перейдите в папку elma-bot-X.Y.Z/charts/elma-bot-dbs
и отредактируйте файл values-dbs.yaml:
- Настройте логины, пароли и размеры хранилищ для сервисов, если нужно
- Настройте параметры приватного репозитория для загрузки образов
- В значениях
[сервис].image.registry
для каждого сервиса укажите адрес проекта в Harbor:harbor.[домен]:8443/elma-bot
- В значениях
- Если необходимо, укажите адрес хоста в настройках minio (требуется для ELMA 365 и необязательно для работы ELMA Bot)
Для установки выполните команду:
Text Only | |
---|---|
Установка чартов elma-bot
Перейдите в папку elma-bot-X.Y.Z/charts/elma-bot
и отредактируйте файл values.yaml:
- Если планируется установка ELMA 365, заполните найстройки:
global.elma365Integration
- в настройке
elma365TlsSecret
укажитеelma-bot-tls
(или другое имя, если у ELMA 365 отдельный сертификат) - в настройке
global.hydra.enabled
должно бытьtrue
- Для установки в закрытом контуре установите значение
global.useInPrivateNetwork
вtrue
- И укажите полный путь к папке
elma-bot-X.Y.Z/data
в настройкеglobal.storage.offlineDataPath
- И укажите полный путь к папке
- Если необходимо монтировать файл сертификата в качестве доверенного, укажите название конфигмапа с сертификатом в настройке
global.tlsCAConfigMapName
(как создать конфигмап см. выше) - Укажите имя хоста в настройке
global.host
- Укажите полный путь к локальному репозиторию Harbor в настройке
global.image.repository
. Путь должен заканчиваться наcrph9k6gr6scu5er72ha
, например:harbor.[домен]:8443/elma-bot/crph9k6gr6scu5er72ha
- Замените имя секрета в настройке
global.ingress.existingTLSSecret
наelma-bot-tls
- При необходимости использования режима подпутей вместо поддоменов, замените значение настройки
global.routing.mode
сDOMAIN
наPATH
(подробнее в README.md в папке с чартами) - При необходимости замените пароли пользователей по умолчанию в настройке
global.defaultUserPasswords
Для установки выполните команду:
Text Only | |
---|---|
Установка ELMA 365
Установка ELMA 365 производится в соответствии с документацией ELMA 365, например https://elma365.com/ru/help/platform/downloadin-images-elma365.html
Не забудьте внести изменения в чарты elma365 и elma365-dbs, необходимые для включения интеграции с ELMA Bot.