Комплект приложения. Комплект группы#

Комплект приложений (Appkit)#

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

  • Дистрибутив сервера приложений Global ERP (globalserver)

  • Образ прикладного решения (applib)

  • Набор конфигураций для сервисов кластера (profile)

Опционально в комплект приложений также входит:

  • Исходный код для отладки прикладного решения (appsrc)

Комплект приложений хранится на системном хранилище в виде zip-архивов (globalserver.zip, applib.zip, profile.zip и, опционально, appsrc.zip) вместе с хэш-суммами, которые могут подготавливаться утилитой nscli.

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

Изменить комплект приложений можно при помощи команд:

nsctl: ./resgroup.sh switch_appkit

nscli: ./appkit.sh switch

Дистрибутив сервера приложений (globalserver)#

Предоставляется вендором.

Образ прикладного решения (applib)#

Формируется во время сборки прикладного проекта.

Набор конфигураций для сервисов кластера (profile)#

Профиль (profile) используется контейнерами для конфигурации служб. Внутри архива лежат директории, названия которых соответствуют конфигурируемой службе. Внутри каждой такой директории в свою очередь лежат каталоги статических файлов (static) и шаблонов (template).

Некоторые конфигурационные файлы можно свободно редактировать, такие обычно поставляются в nscli в папке default/profile, которая используется утилитой для создания профиля по умолчанию.

В профиле с шаблонами конфигурационных файлов находятся:

  • Конфигурация сервера приложений globalserver/template/config/global3.config.xml

  • Конфигурация сборщика телеметрии globalserver/template/config/otel-sdk.config.yaml и globalserver/template/config/otel-globalserver.config.yaml

  • Конфигурация менеджера заданий globalscheduler/template/config/quartz.properties

  • Конфигурация проектных настроек системных логов globalscheduler/template/config/logback-LoggerContext-ext.xml

  • Конфигурация проектных настроек логов сессии globalscheduler/template/config/logback-LoggerContext-session-ext.xml

Исходный код для отладки прикладного решения (appsrc)#

Внимание

Касается предстоящей версии 5.0

Вместе с образом прикладного решения (applib) могут формироваться и исходные коды проекта (appsrc), необходимые для облачной отладки прикладного решения.

Состояния комплекта приложений#

Комплект приложений бывает в трех состояних:

  • stopped - остановлен, сервера приложений и балансировщик не работают

  • started - запущен, сервера приложений и балансировщик работают в нормальном режиме

  • drained - осушен, сервера приложений работают в служебном режиме (то есть пользователи не могут подключиться к серверу), балансировщик работает, как обычно

Переключение состояний возможно при помощи команд:

nsctl:

nscli:

Комплект группы (Groupkit)#

Комплект группы указывается для группы ресурсов и определяет перечень вспомогательных артефактов:

  • Архив с дополнительными библиотеками (libs)

  • Файлы JDK для переопределения (java)

Вы можете использовать java для добавления хранилища собственных сертификатов cacerts: добавьте их в комплект группы по пути java/jre/lib/security/cacerts.

Комплекту группы также хранится на системном хранилище, а путь к ним - в ConfigMap группы ресурсов, однако хэши не учитываются. Изменения в комплекте группы требуют перезапуска всех подов.

Обычно комплект группы не требуется.

Переключить комплект группы можно командой nsctl ./resgroup.sh switch_groupkit.

Управление комплектами#

Управление комплектами выполняется при помощи команды nscli ./appkit.sh

Создать комплект с минимальным профилем#

Создадим комплект с пользовательским профилем по умолчанию в директории workspace/kit.

./appkit.py prepare_profile --appkit-dir workspace/kit

Получаем следующую структуру:

workspace/kit
└── profile
    ├── globalscheduler
    │   └── template
    │       └── config
    │           └── quartz.properties
    └── globalserver
        └── template
            └── config
                ├── global3.config.xml
                ├── logback-LoggerContext-ext.xml
                └── logback-LoggerContext-session-ext.xml

Упаковать комплект и пересчитать хэши#

Давайте добавим компонентов комплекта и упакуем комплект в директории workspace/kit.

Новая структура комплекта:

workspace/kit
├── applib.zip
├── globalserver.zip
├── java
│   └── jre
│       └── lib
│           └── security
│               └── cacerts
└── profile
    ├── globalscheduler/...
    └── globalserver/...

Примечание

Как можно заметить, в комплекте лежат дистрибутивы globalserver.zip и applib.zip, а также профиль и файлы Java в отдельных папках. Итоговый комплект можно использовать и как комплект приложения, и как комплект группы.

Выполним:

./appkit.py refresh_hash --source workspace/kit

Все компоненты комплекта, хранящиеся в отдельной папке, теперь упакованы в zip-архивы. Рядом с zip-архивами лежат файлы со значениями хэш-сумм.

Отправить комплект на системное хранилище#

Давайте отправим этот комплект на системное хранилище по пути mykit/v1.

./appkit.py push --namespace my-namespace --source workspace/kit --destination mykit/v1

Совет

Предварительно запускать ./appkit.py refresh_hash необязательно, упаковка и расчет контрольных сумм произойдет и при запуске ./appkit.py push.

Теперь вы должны увидеть этот комплект в контейнере nsctl в папке ~/nsctl/workspace/mnt/sys/mykit/v1.

Обновить GlobalERP#

Сменим комплект приложения и обновим базу данных.

./appkit.py switch_and_upgrade --namespace my-namespace --resgroup my-resgroup --remote_appkit mykit/v1

Внимание

После выполнения команды, комплект приложений остается в осушенном состоянии.

Включить GlobalERP#

Сделаем GlobalERP снова доступной для пользователей через вывод комплекта приложений из осушенного состояния.

./appkit.py start --namespace my-namespace --resgroup my-resgroup