Найти в Дзене
Тюнинг Админа

ELMA365 Standard - Переход с Microk8s на KinD

Это третья по счету статья по ELMA365 и она целиком и полностью посвящена вопросу миграции с ветки Microk8s на Kubernetes in Docker (KinD). Еще раз озвучу свое мнение: Автору статьи, как и многим из вас приходится как то работать с тем, что есть и поддерживать текущее решение в режиме non-stop, без участия коммерческой техподдержки, от которой как показывает практика толку мало. Разработчики решения предлагают сделать дамп, удалить текущее решение и на этой же операционке - на старых дрожжах, выполнить новую инсталляцию и импорт дампа. Если честно не самый лучший и тем более production вариант. Поэтому в свою очередь миграцию буду выполнять на свежую виртуальную машину с Ubuntu 24.04LTS, но в отдельном блоке статьи опишу процесс перехода с апгрейдом дистрибутива в рамках одного сервера. Итак план действий таков: Алгоритм перехода от разработчиков: В качестве гипервизора автор использует Proxmox. ВНИМАНИЕ: Если вы используете гипервизор Proxmox ниже 8 версии, то он не поддерживает AVX
Оглавление

Это третья по счету статья по ELMA365 и она целиком и полностью посвящена вопросу миграции с ветки Microk8s на Kubernetes in Docker (KinD). Еще раз озвучу свое мнение:

  • Elma365 - это достаточно проблемное решение
  • В плане документации существует огромные пробелы

Автору статьи, как и многим из вас приходится как то работать с тем, что есть и поддерживать текущее решение в режиме non-stop, без участия коммерческой техподдержки, от которой как показывает практика толку мало.

Содержание статьи

  • План действий
  • Подготовка сервера
  • Добавляем и настраиваем репозиторий Docker
  • Устанавливаем Docker
  • Установка Elma365 Standard
  • Делаем дамп на старом сервере и переносим на новый
  • Разворачиваем дамп
  • Апгрейд в рамках одного сервера
  • Команды Elma365 KinD
  • Проверка работоспособности
  • Обращение к менеджеру Elma за ключом активации
  • Перезагрузка и проверка автозапуска сервисов
  • Обновление продукта
  • Заключение

План действий

Разработчики решения предлагают сделать дамп, удалить текущее решение и на этой же операционке - на старых дрожжах, выполнить новую инсталляцию и импорт дампа. Если честно не самый лучший и тем более production вариант. Поэтому в свою очередь миграцию буду выполнять на свежую виртуальную машину с Ubuntu 24.04LTS, но в отдельном блоке статьи опишу процесс перехода с апгрейдом дистрибутива в рамках одного сервера.

Итак план действий таков:

  • Подготовка новой виртуальной машины на Ubuntu 24.04LTS
  • Установка Elma365 Standard
  • Снятие дампа со старого сервера и копирование на новой, в том числе сертификаты SSL
  • Восстановление дампа

Алгоритм перехода от разработчиков:

  • Снимаем дамп в microK8s —> https://elma365.com/ru/help/platform/backup.html
  • Удаляем elma365
  • Устанавливаем elma365 той же версии, что и была, но из ветки KinD
  • Восстановить дамп
  • Аналогичным установке способом обновиться до актуальной версии подставляя номера версий по очередности.
-2

Подготовка сервера

В качестве гипервизора автор использует Proxmox.

ВНИМАНИЕ: Если вы используете гипервизор Proxmox ниже 8 версии, то он не поддерживает AVX инструкции процессора необходимые для MongoDB 5.0+

В разделе Оборудование --> Процессоры --> необходимо выбрать режим хоста

-3
-4

Для начала повышаем права пользователя:

sudo -s

Настраиваем сеть:

Удаляем дефолтные конфиги:

rm /etc/netplan/*.yaml

Создаем свой конфигурационный файл:

nano /etc/netplan/config.yaml

network:

ethernets:

ens18:

dhcp4: false

addresses: [192.168.1.200/24]

gateway4: 192.168.1.254

nameservers:

addresses: [192.168.1.201,192.168.1.202]

version: 2

Сохраняем файл, выходим из редактора:

CTRL+O, CTRL+X

Применяем настройки сети:

netplan apply

Обновляем систему:

apt update -y && apt upgrade -y

Для работы нам потребуется nano, net-tools, mc:

apt install net-tools mc -y

где net-tools - пакет сетевых утилит, а mc - Midnight Commander текстовый двухпанельный файловый менеджер

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

hostnamectl set-hostname elma2

Прописываем в файл Hosts сопоставления:

nano /etc/hosts

127.0.0.1 elma elma2 elma.tuning-admina.ru

192.168.1.200 elma elma2 elma.tuning-admina.ru

Сохраняем файл, выходим из редактора:

CTRL+O, CTRL+X

Добавляем и настраиваем репозиторий Docker

Добавляем официальные GPG key:

install -m 0755 -d /etc/apt/keyrings

curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc

chmod a+r /etc/apt/keyrings/docker.asc

Добавляем репозиторий:

echo \

"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \

$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \

sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Обновляем информацию о пакетах в репозиториях:

apt update

Устанавливаем Docker

Приступаем:

apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

Проверяем статус службы:

systemctl status docker

-5

Отлично двигаемся дальше

Установка Elma365 Standard

В моем случае я осуществляю переход с Microk8s версии 2024.3.36 --> KinD 2024.3-latest:

Скачиваем установочный скрипт:

curl -fsSL -o elma365-docker.sh https://dl.elma365.com/onPremise/master/2024.3-latest/installer-docker

Делаем скрипт исполняемым:

chmod +x elma365-docker.sh

Чтобы создать файл конфигурации для новой инсталляции, необходимо запустить скрипт с префиксом --new-config:

./elma365-docker.sh --new-config

Смотрим в директорию, есть ли конфигурационный файл:

ls

config-elma365.txt elma365-docker.sh

Редактируем файл конфигурации:

nano config-elma365.txt

Рядом с установочным скриптом лежит config-elma365.txt - это файл-ответов для первичной настройки Elma365, который достаточно хорошо задокументирован. Если у вас новая инсталляция, то для начала заполним этот файл:

nano config-elma365.txt

Демонстрирую на примере моего файла конфигурации:

###############################################################

# ОСНОВНЫЕ ПАРАМЕТРЫ УСТАНОВКИ #

###############################################################

# Базовый URL — локальное доменное имя (FQDN) или IP адрес сервера

ELMA365_HOST=192.16.1.10

# -------------------------------------------------------------------------------------------

# Укажите логин и пароль для входа главного администратора.

ELMA365_EMAIL=admin@tuning-admina.ru

ELMA365_PASSWORD=P@ssw0rd

# -------------------------------------------------------------------------------------------

# Выберите язык интерфейса системы

ELMA365_LANGUAGE=ru-RU

# -------------------------------------------------------------------------------------------

# Выберите редакцию

ELMA365_EDITION=standard

# -------------------------------------------------------------------------------------------

# Настроим соединение с smtp сервером

ELMA365_SMTP_HOST=smtp.tuning-admina.ru

ELMA365_SMTP_PORT=465

ELMA365_SMTP_FROM=elma@tuning-admina.ru

ELMA365_SMTP_USER=elma@tuning-admina.ru

ELMA365_SMTP_PASSWORD="password"

ELMA365_SMTP_TLS=true

# -------------------------------------------------------------------------------------------

# Настройка TLS шифрования

ELMA365_TLS_CRT=/etc/ssl/example.crt

ELMA365_TLS_KEY=/etc/ssl/example.key

ELMA365_TLS_CA=/etc/ssl/certs/exampleRootCA.pem

###############################################################

# ДОПОЛНИТЕЛЬНЫЕ ПАРАМЕТРЫ УСТАНОВКИ #

###############################################################

# Настройка директорий для установки системы и создания резервных копий

ELMA365_INSTALL_DIR="/elma365"

ELMA365_BACKUP_DIR="/Backup"

# -------------------------------------------------------------------------------------------

# Настройка hostalias

ELMA365_HOSTALIASES_IP=192.168.1.10

# -------------------------------------------------------------------------------------------

# Режим отладки платформы

#ELMA365_DEBUG=true

Сохраняем файл и выходим из редактирования:

CTRL+O, CTRL+X

Запускаем скрипт:

./elma365-docker.sh

-6

Установка завершена:

-7

Проверяем доступность Вэб интерфейса:

-8

У менеджера можно попросить ключ на 10 пользователей для тестирования решения.

-9

Делаем дамп на старом сервере и переносим на новый

Создаем дамп:

elma365ctl dump

Переносим данные old_server/backup --> new_server/backup, эти манипуляции я выполняю с помощью WinSCP, кому как удобнее.

Переносим SSL сертификаты со старого сервера на новый, кладем в папку /etc/ssl.

Разворачиваем дамп

Восстанавливаем дамп:

./elma365-docker.sh --restore --path /backup/ELMA365_2024.3.36_2024.10.08-04.50.18

Видим, что дамп благополучно развернулся:

Waiting for Restore

Restore successful

Апгрейд в рамках одного сервера

Снимаем дамп:

elma365ctl dump

Удаляем microk8s и все запущенные сервисы:

snap remove --purge microk8s

Увидим:

microk8s removed

Удаляем каталог:

rm -f /usr/local/bin/elma365ctl

Для начала обновим текущий релиз:

apt upgrade -y

Проверяем возможность апгрейда дистрибутива:

do-release-upgrade

-10
-11
-12
-13
-14

Процесс не быстрый можно перекусить или попить кофе

-15
-16
-17
-18
-19
-20

После перезагрузки проверяем версию системы:

cat /etc/os-release

-21

Обновляем систему и убеждаемся, что все пакеты обновлены:

apt update && apt upgrade -y

Добавляем GPG key репозитория Docker:

apt update

apt install ca-certificates curl

install -m 0755 -d /etc/apt/keyrings

curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc

chmod a+r /etc/apt/keyrings/docker.asc

Добавляем репозиторий:

echo \

"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \

$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \

tee /etc/apt/sources.list.d/docker.list > /dev/null

Обновляем информацию о пакетах в репозиториях:

apt update

Устанавливаем Docker:

apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

Проверяем статус службы:

systemctl status docker

-22

Устанавливаем elma365 той же версии, что и была, но из ветки KinD:

Скачиваем скрипт Elma365 KinD:

curl -fsSL -o elma365-docker.sh https://dl.elma365.com/onPremise/master/2024.3-latest/installer-docker

Делаем скрипт исполняемым:

chmod +x elma365-docker.sh

Чтобы создать файл конфигурации для новой инсталляции, необходимо запустить скрипт с префиксом --new-config:

./elma365-docker.sh --new-config

Смотрим в директорию, есть ли конфигурационный файл:

ls

config-elma365.txt elma365-installer-docker.sh

Редактируем файл конфигурации:

nano config-elma365.txt

Рядом с установочным скриптом лежит config-elma365.txt - это файл-ответов для первичной настройки Elma365, который достаточно хорошо задокументирован. Если у вас новая инсталляция, то для начала заполним этот файл:

nano config-elma365.txt

Демонстрирую на примере моего файла конфигурации:

###############################################################

# ОСНОВНЫЕ ПАРАМЕТРЫ УСТАНОВКИ #

###############################################################

# Базовый URL — локальное доменное имя (FQDN) или IP адрес сервера

ELMA365_HOST=elma.tuning-admina.ru

# -------------------------------------------------------------------------------------------

# Укажите логин и пароль для входа главного администратора.

ELMA365_EMAIL=admin@tuning-admina.ru

ELMA365_PASSWORD=P@ssw0rd

# -------------------------------------------------------------------------------------------

# Выберите язык интерфейса системы

ELMA365_LANGUAGE=ru-RU

# -------------------------------------------------------------------------------------------

# Выберите редакцию

ELMA365_EDITION=standard

# -------------------------------------------------------------------------------------------

# Настроим соединение с smtp сервером

ELMA365_SMTP_HOST=smtp.tuning-admina.ru

ELMA365_SMTP_PORT=465

ELMA365_SMTP_FROM=elma@tuning-admina.ru

ELMA365_SMTP_USER=elma@tuning-admina.ru

ELMA365_SMTP_PASSWORD="password"

ELMA365_SMTP_TLS=true

# -------------------------------------------------------------------------------------------

# Настройка TLS шифрования

ELMA365_TLS_CRT=/etc/ssl/fullchain.pem

ELMA365_TLS_KEY=/etc/ssl/privkey.pem

###############################################################

# ДОПОЛНИТЕЛЬНЫЕ ПАРАМЕТРЫ УСТАНОВКИ #

###############################################################

# Настройка директорий для установки системы и создания резервных копий

#ELMA365_INSTALL_DIR="/elma365"

ELMA365_BACKUP_DIR="/Backup"

# -------------------------------------------------------------------------------------------

# Настройка hostalias

ELMA365_HOSTALIASES_IP=192.168.1.10

# -------------------------------------------------------------------------------------------

# Режим отладки платформы

#ELMA365_DEBUG=true

Сохраняем файл и выходим из редактирования:

CTRL+O, CTRL+X

Запускаем скрипт:

./elma365-docker.sh

-23

Установка завершена:

-24

Импортируем дамп:

./elma365-docker.sh --restore --path /backup/ELMA365_2024.3.36_2024.10.08-04.50.18

Видим, что дамп благополучно развернулся:

Waiting for Restore

Restore successful

Аналогичным процессу установки способом можно обновиться до актуальной версии подставляя номера версий по очередности.

Команды Elma365 KinD

Проверка состояния сервисов:

docker exec elma365 kubectl get pod

Посмотреть список доступных команд скрипта:

./elma365-docker.sh --help

Создать новый файл конфигурации установки config-elma365.txt:

./elma365-docker.sh --new-config

Собрать диагностическую информацию:

./elma365-docker.sh --diag

Установить ELMA365:

./elma365-docker.sh --install

Офлайн-установка ELMA365:

./elma365-docker.sh --offline

Обновить ELMA365:

./elma365-docker.sh --upgrade

Остановить приложение ELMA365:

./elma365-docker.sh --stop

Запустить приложение ELMA365:

./elma365-docker.sh --start

Снимаем дамп:

./elma365-docker.sh --dump

Восстановление из дампа:

./elma365-docker.sh --restore

Переустановить ELMA365:

./elma365-docker.sh --reset

Удалить ELMA365 (все данные будут удалены)

./elma365-docker.sh --delete

Реконфигурировать ELMA365:

./elma365-docker.sh --reconfigure

Обновить сертификаты для кластера Kubernetes:

./elma365-docker.sh --renew-certs-k8s

Включить режим отладки установки:

./elma365-docker.sh --debug

Проверка работоспособности

Проверяем статус сервисов:

docker exec elma365 kubectl get pod

-25

Обращение к менеджеру Elma за ключом активации

Если вы обновляетесь в рамках одного сервера, то повторная активация вам не потребуется.

Копируем регистрационный ключ сервера и в telegram пишем менеджеру, что необходимо выполнить повторную активацию в связи с миграцией:

-26

Перезагрузка и проверка автозапуска сервисов

Перезагружаем систему:

reboot

Без префиксов, чтобы все сервисы и службы нормально остановились.

Проверяем статус сервисов после перезагрузки:

docker exec elma365 kubectl get pod

Обновление продукта

Процесс обновления вещь достаточно непредсказуемая и рекомендую делать бэкап целиком виртуальной машины

Саму же процедуру необходимо запускать с параметром latest в URL запросе к скрипту.

Пример:

У меня текущая версия 2024.3.36 - последняя в марте и соответственно апгрейдить я буду на апрельский самый последний релиз, следовательно в URL запросе на скачивание нужного скрипта пишу:

curl -fsSL -o elma365-docker.sh https://dl.elma365.com/onPremise/master/2024.4-latest/installer-docker

Делаем скрипт исполняемым:

chmod +x elma365-docker.sh

Запускаем скрипт установки с ключом --upgrade:

./elma365-docker.sh --upgrade

или

./elma365-docker.sh

-27

Если вдруг процесс обновления не завершился, по причине - пропало питание, внезапное зависание системы или прочие коллизии не связанные с системными ошибками ПО, необходимо повторить процедуру.

После установки проверяйте статус сервисов:

docker exec elma365 kubectl get pod

-28

Как видим все отлично и все сервисы запущены

Заключение

Надеюсь статья вам понравилась и она окажется полезной сообществу, буду очень рад вашим комментариям и пожеланиям.