Установить ELMA Cortex с использованием Docker Swarm

Эта статья описывает установку с использованием Docker Swarm с доступом в интернет. О возможности установить ELMA Cortex офлайн читайте в статьях об установке в закрытом контуре.

Перед установкой:

  1. Проверьте, что сервер, на котором выполняется установка, инициализирован как менеджер кластера Docker Swarm. Для этого при создании кластера выполняется команда docker swarm init.
  2. Убедитесь, что вы загрузили установочные файлы и настроили переменные окружения.

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

Установка ELMA Cortex

Для установки ELMA Cortex с использованием Docker Swarm:

  1. Запустите скрипт установки:

chmod +x install.sh
./install.sh

Если вы используете несколько копий ELMA Cortex, и нужно указать название проекта:

./install.sh --project-name my-cortex

  1. После выполнения скрипта install.sh некоторым сервисам может потребоваться несколько минут для полного запуска. Чтобы проверить готовность сервисов, выполните команду:

docker service logs -f elma-cortex_gamma-apps

  1. Дождитесь в логах появления сообщения “Application startup complete”.

Создание ключа для MongoDB

При установке ELMA Cortex в скрипте install.sh автоматически генерируется файл ключа аутентификации, который используется для репликации MongoDB, с нужными правами доступа. Он передаётся в Docker Swarm через секрет mongodb-keyfile.

Если нужно создать новый ключ вручную, выполните команды:

openssl rand -base64 756 > mongo.keyfile
sudo chmod 400 mongo.keyfile
 
docker secret create mongo_keyfile mongo.keyfile

Экспорт корневого сертификата Caddy

Если  в качестве режима управления TLS‑сертификатами вы выбрали Internal, экспортируйте корневой сертификат Caddy, чтобы добавить его в список доверенных:

docker exec $(docker ps -q -f name=elma-cortex_caddy) cat /data/caddy/pki/authorities/local/root.crt > caddy_root.crt

Если выполнение команды не удаётся, используйте другой способ:

docker ps -f name=elma-cortex_caddy  # returns <CONTAINER_ID>
docker cp <CONTAINER_ID>:/data/caddy/pki/authorities/local/root.crt ./caddy_root.crt

Обновление ELMA Cortex

При выпуске новой версии ELMA Cortex необходимо скачать архив с обновлёнными установочными файлами и перенести вашу конфигурацию, настроенную в файле переменных окружения. Рассмотрим шаги обновления при использовании Docker Swarm.

Шаг 1. Сохранить текущую конфигурацию

Перед обновлением создайте копию текущего файла .env:

cp ~/elma-cortex/docker-swarm/.env ~/elma-cortex-env-backup.env

Шаг 2. Скачать установочные файлы

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

Для этого выполните команды:

cd ~
curl -fsSO https://dl.elma365.com/extensions/elma-cortex/latest/elma-cortex-onpremises.zip
unzip -o -d ./elma-cortex elma-cortex-onpremises.zip

Использование флага -o позволяет заменить существующие файлы без запроса подтверждения.

Шаг 3. Перенести конфигурацию

  1. Сравните сохранённую копию с новым файлом .env, чтобы выявить настройки, добавленные в последней версии. Для этого используйте команду:

diff ~/elma-cortex-env-backup.env ~/elma-cortex/docker-swarm/.env

  1. Перенесите настройки из своей конфигурации, выполнив команды:
  • чтобы заменить новый файл .env резервной копией и добавить новые настройки из последней версии вручную:

cp ~/elma-cortex-env-backup.env ~/elma-cortex/docker-swarm/.env

  • чтобы отредактировать новый файл .env и перенести изменённые значения из резервной копии:

nano ~/elma-cortex/docker-swarm/.env

Шаг 4. Применить обновление

Перейдите в папку с установочными файлами и запустите скрипт установки:

cd ~/elma-cortex/docker-swarm
./install.sh

Скрипт загрузит новые Docker-образы и перезапустит сервисы с обновлённой версией.

Удаление ELMA Cortex

При установке ELMA Cortex в Docker Swarm создаётся стек — экземпляр установки. Вы можете удалить его, а также все данные.

Удаление стека с сохранением данных

Чтобы удалить все сервисы ELMA Cortex из кластера Docker Swarm без очистки данных, используйте команды:

chmod +x uninstall.sh
./uninstall.sh

Если вы используете несколько копий ELMA Cortex, и нужно указать название проекта:

./uninstall.sh --project-name my-cortex

Кроме того, можно удалить стек из Docker Swarm без использования скрипта:

docker stack rm elma-cortex

Удаление стека и данных

Чтобы безвозвратно удалить ELMA Cortex и все его данные:

  1. Удалите стек с помощью команды:

./uninstall.sh

Если вы задавали пользовательское название проекта, укажите его для скрипта удаления:

./uninstall.sh --project-name my-cortex

  1. Дождитесь остановки всех сервисов.
  2. Удалите тома с данными:

docker volume rm $(docker volume ls -q -f name=elma-cortex)

При этом также удалятся данные внутреннего центра сертификации Caddy. Если вы используете режим управления TLS‑сертификатами Internal, после переустановки нужно повторно экспортировать корневой сертификат Caddy и добавить его в доверенные.