Руководство по установке#
В руководстве приведены инструкции по установке компонента Шлюз ActiveMQ Artemis, ASGT продукта Platform V Synapse Enterprise Integration (SEI).
Термины и определения#
Термин/Аббревиатура |
Определение |
|---|---|
СТ |
Системное тестирование |
ИФТ |
Интеграционно-функциональное тестирование |
SSH |
Secure Shell |
Istio |
Реализация концепции управляемой сети сервисов (Service-Mesh) |
Artemis |
Программный продукт Apache Active MQ Artemis |
Важно! Шлюз ActiveMQ Artemis, (ASGT) продукта Platform V Synapse Enterprise Integration (SEI) поставляется в виде дистрибутива для сборки Docker-образа. Собранный Docker-образ предназначается для использования в составе прикладных интеграционных решений, разрабатываемых продуктовыми командами.
Для этого команды, реализующие прикладную интеграцию, выпускают дистрибутив, содержащий набор конфигурационных артефактов Kubernetes, обеспечивающих развертывание и настройку отдельного экземпляра компонента Шлюз ActiveMQ Artemis под требования этой интеграции.
Самостоятельно, вне рамок прикладных интеграционных решений, компонент Шлюз ActiveMQ Artemis не эксплуатируется.
Системные требования#
Настройки безопасности окружения и перечень платформенных (дополнительных внешних) продуктов, используемых для установки, настройки и контроля в конечной информационной системе (далее — ИС), выбираются клиентом при разработке конечной ИС, исходя из характера обрабатываемой в ней информации и иных требований информационной безопасности (далее — ИБ), предъявляемых к ней.
Системное программное обеспечение#
Ниже представлены категории системного программного обеспечения (далее — ПО), которые обязательны или опциональны для установки, настройки, контроля и функционирования компонента. В каждой категории перечислены все поддерживаемые продукты сторонних правообладателей. Отдельно обозначены варианты, которые рекомендует АО «СберТех» (маркировка «Рекомендовано» в столбце «Продукт, функциональная совместимость с которым подтверждена»). Клиенту необходимо выбрать один из продуктов в каждой категории, исходя из условий использования конечной ИС.
Категория ПО |
Обязательность установки (да/нет) |
Наименование ПО |
Версия |
Продукт, функциональная совместимость с которым подтверждена |
Описание |
|---|---|---|---|---|---|
Операционная система |
Да |
ОС Альт 8 СП |
8 |
Рекомендовано. Правообладателем АО «СберТех» также рекомендована ОС – Platform V SberLinux OS Server, см. раздел «Платформенные зависимости» |
ОС контейнеров для запуска модулей компонента |
Среда контейнеризации |
Да |
1.25.3 |
Рекомендовано. Правообладателем АО «СберТех» также рекомендована среда контейнеризации – Platform V DropApp, см. раздел «Платформенные зависимости» |
Платформа контейнеризации для запуска компонентов сервиса |
|
Консольная утилита управления |
Да |
kubectl |
1.22.4 |
Рекомендовано |
Инструмент для управления экземплярами |
OC |
4.6.0 |
Опционально |
|||
Средство контейнеризации |
Да |
1.13.1 |
Рекомендовано |
Инструмент для автоматизации работы с контейнерами |
|
Сервис интеграции и оркестрации микросервисов в облаке |
Да |
1.12 |
Рекомендовано. Правообладателем АО «СберТех» также рекомендован сервис интеграции и оркестрации микросервисов в облаке, основанный на Istio, – Platform V Synapse Service Mesh, см. раздел «Платформенные зависимости» |
Сервис интеграции микросервисов в облаке |
|
Менеджер системы обмена сообщениями |
Да |
Apache ActiveMQ Artemis |
2.20.0 |
Рекомендовано. Правообладателем АО «СберТех» также рекомендована система обмена сообщениями – Platform V Synapse.Messaging, см. раздел «Платформенные зависимости» |
Обмен сообщениями |
Внешнее хранилище секретов на основе hashicorp vault |
Нет |
ВХС Агент hashicorp vault |
Рекомендовано |
Получение сертификатов и других секретов из хранилища hashicorp vault и загрузка их в Pod. Функционирует как sidecar-контейнер, прозрачно для основных участников взаимодействия |
Примечание:
*
Да — категория ПО обязательна для функционирования сервиса (это означает, что сервис не может выполнять свои основные функции без установки данной категории ПО).
Нет — категория ПО необязательна для функционирования сервиса (это означает, что сервис может выполнять свои основные функции без установки данной категории ПО).
**
Рекомендовано — рекомендованный правообладателем АО «СберТех» продукт.
Опционально — альтернативный по отношению к рекомендованному правообладателем АО «СберТех» продукт.
Платформенные зависимости#
Для настройки, контроля и функционирования компонента реализована интеграция с программными продуктами, правообладателем которых является АО «СберТех»:
Наименование продукта |
Код |
Версия продукта |
Код и наименование компонента |
Обязательность установки (да/нет) |
Описание |
Аналог других производителей |
|---|---|---|---|---|---|---|
Platform V SberLinux OS Server |
SLO |
8.7 |
INST Операционная система |
Да |
ОС контейнеров для запуска модулей компонента |
ОС Альт 8 СП |
Platform V DropApp |
K8S |
1.1 и выше |
K8SC K8S Core |
Да |
Дистрибутив Kubernetes со встроенными механизмами мультитенантности и бессерверным исполнением |
Kubernetes, Red Hat OpenShift Container Platform |
Platform V Synapse Service Mesh |
SSM |
3.6 |
SVPX Сервисный прокси |
Да |
Сайдкар обеспечивающий функции управления внутренним трафиком |
Istio proxy 1.12 |
IGEG Граничный прокси |
Нет |
Сервис для обеспечения управляемого вызова интеграционных сервисов прикладной части |
Istio proxy 1.12 |
|||
Platform V Synapse.Messaging |
SMB |
1.2.0 и выше |
SMBX |
Да |
Сервис предоставляет возможность использования очередей сообщений (MQ) в интеграционной платформе на основе технологий Apache Artemis MQ |
Apache ActiveMQ Artemis |
Platform V Audit SE |
AUD |
3.1 |
AUDT Аудит |
Нет |
Сервис для аудирования событий |
Сервис успешно прошел испытания и подтвердил свою работоспособность с компонентом AUDT. С аналогами других производителей не тестировался |
Platform V Monitor |
OPM |
5.0.1 |
LOGA Журналирование |
Нет |
Сервис для хранения лог-файлов |
Любой сервис сбора записей о событиях, совместимый с fluent-bit, например: Elasticsearch, InfluxDB |
MONA Объединенный мониторинг Unimon |
Нет |
Сервис для сбора прикладных и инфраструктурных метрик и отправки их в целевую систему хранения |
Prometheus 2.21.0 |
|||
Platform V Synapse Service Mesh |
SSM |
3.6 |
REQV Валидатор запросов |
Нет |
Валидации входящих запросов. Функционирует как sidecar-контейнер |
Примечание:
***
Да — компонент или продукт необходим для функционирования сервиса (это означает, что сервис не может выполнять свои основные функции без установки данного компонента).
Нет — необязательный для функционирования сервиса компонент или продукт (это означает, что сервис может выполнять свои основные функции без установки данного компонента).
**** Рекомендуется установка программного продукта, правообладателем которого является АО «СберТех», при этом не исключена возможность (допускается правообладателем) использования аналога других производителей. Аналоги, в отношении которых продукт успешно прошел испытания и подтвердил свою работоспособность, указаны в разделе «Системное программное обеспечение».
Аппаратные требования#
В рамках требований указан минимальный размер. Целевой размер определяется по результатам НТ отдельно под каждый интеграционный сценарий.
Для установки компонента требуется следующая конфигурация аппаратного обеспечения:
Тип стенда |
DEV |
ИФТ/ПСИ |
НТ/ПРОМ |
|---|---|---|---|
Конфигурация в среде контейнеризации (в рамках одного POD'а) |
CPU: 200m |
CPU: 300m |
CPU: 500m |
При использовании sidecars Сервисного прокси, Агента журналирования, Агент hashicorp vault минимальные ресурсы, необходимые для их запуска, следует уточнить в документации на эти компоненты.
Компонент Сервисный прокси (SVPX) Platform V Synapse Service Mesh должен быть развернут в соответствии с разделом Установка документа Руководство по установке своей документации.
Компонент Агент журналирования (LOGA) Platform V Monitor должен быть развернут в соответствии с разделом Установка документа Руководство по установке своей документации.
Компонент Валидатор запросов (REQV) Platform V Synapse Service Mesh должен быть развернут в соответствии с разделом Установка документа Руководство по установке своей документации.
Состав дистрибутива#
Элемент дистрибутива |
Описание |
|---|---|
/package/docker/asgt/waitingSecrets.sh |
Скрипт, исполняемый после старта docker контейнера |
/package/docker/asgt/entrypoint.sh |
Скрипт запуска приложения |
/package/docker/asgt/Dockerfile |
Файл инструкций для сборки образа компонента Шлюз ActiveMQ Artemis в Docker |
/package/bh/go-mq-gateway |
Исполняемый (бинарный) файл приложения компонента Шлюз ActiveMQ Artemis |
/package/ReleaseNotes.json |
Метаинформация по дистрибутиву, формируемая сборщиком дистрибутива |
/package/conf/ |
Конфигурация дистрибутива, включая определение стендозависимых параметров |
Выбор способа установки#
На данный момент поддерживается только ручная установка.
Подготовка окружения#
Для установки компонента Шлюз ActiveMQ Artemis в составе прикладного дистрибутива должно быть выполнено следующее:
Развернут и настроен кластер Kubernetes версии 1.25.3 или выше;
В кластере создан проект (namespace), в котором будет разворачиваться компонент Шлюз ActiveMQ Artemis;
Проект подключен к ControlPlane Service Mesh (Platform V Synapse Service Mesh)
Обеспечена возможность подключения Сервисного прокси (SVPX) к Pod компонента Шлюз ActiveMQ Artemis;
В проекте создана учетная запись с правами на загрузку артефактов;
Получена ссылка на целевой Docker-репозиторий;
Базовый образ для сборки Docker-образа загружен в целевой Docker-репозиторий;
В проект добавлен Secret для загрузки Docker-образов из целевого Docker-репозитория;
На рабочем месте должен быть установлен клиент Kubernetes (kubectl) версии 1.22.4 или выше;
Для создания Docker-образа на рабочем месте должен быть установлен Docker версии 1.13.1 или выше.
Развернуты, настроены и готовы к работе брокеры Artemis (версия 2.20.0 или выше), есть доступ к ним со стороны кластера Kubernetes (для целей тестирования брокеры могут быть развернуты непосредственно в проекте);
Сетевые соединения с брокерами Artemis должны быть защищены протоколом TLS версии не ниже 1.2, поэтому должны быть выпущены сертификаты для установки TLS подключения.
Перечень программных продуктов, используемых при установке:
Наименование |
Функции |
|---|---|
kubectl |
Подключение к проекту Kubernetes, загрузка артефактов конфигурации в проект Kubernetes в консольном режиме |
Docker |
Создание и размещение Docker-образа |
Установка#
Важно! Ручная корректировка конфигурационных файлов в процессе установке не требуется.
Ручная установка сервиса#
Настройка namespace#
Информация по настройке приведена в таблице ниже.
Настройка namespace
Шаг |
Действия |
Описание |
|---|---|---|
Подключиться к кластеру Kubernetes |
- Если подключение реализовано, используя встроенные в kubernetes учетные записи (Service Account), то выполнить команду: |
токен_пользователя для подключения получить у администраторов кластера |
Создать namespace |
|
|
Проверить наличие namespace |
|
|
Добавить квоты |
|
|
Переключиться в namespace |
|
|
Добавить Istio |
После создания проекта написать администратору ControlPanel просьбу добавить в наш проект Istio |
|
Добавить права |
Запросить у администраторов ControlPanel логины (с учетом регистра) для входа в проект Kubernetes. |
|
Добавить артефакт Secret для доступа в registry |
Проверить, в случае отсутствия добавить Secret (например pull-secret-name) для вычитки Docker-образов из registry репозитория: |
Примечания к таблице
1 Команда правки сервисного аккаунта по умолчанию:
if kubectl --insecure-skip-tls-verify get sa default -o yaml | grep imagePullSecrets; then if ! (kubectl --insecure-skip-tls-verify get sa default -o yaml | grep -e "name.*имя_secret$"); then kubectl --insecure-skip-tls-verify patch sa default -p '[{"op": "add", "path": "/imagePullSecrets/-", "value": {"name": "имя_secret"}}]' --type=json; fi else kubectl --insecure-skip-tls-verify patch sa default -p "{\"imagePullSecrets\": [{\"name\": \"имя_secret\"}]}"; fi
Ручная сборка Docker-образа из дистрибутива#
Необходимая информация приведена в таблице ниже.
Сборка Docker-образа
Шаг |
Действия |
Описание |
|---|---|---|
Опубликовать базовый образ |
Авторизоваться в Docker-репозитории командой: |
Если базовый образ уже загружен в целевой Docker-репозиторий, то этот шаг можно пропустить. |
Собрать образа из owned дистрибутива |
Скачать owned-дистрибутив. |
Установка общих компонентов#
Необходимая информация приведена в таблице ниже.
Общие компоненты
Шаг |
Артефакт |
Действия |
Описание |
|---|---|---|---|
Установить общий пустой сервис |
empty-service.yml |
|
Нужен всегда, один на namespace. Приведен тут для демонстрации команды, разворачивающей компонент, необходим для работы исходного компонента (заглушка) |
Установить общую конфигурацию Fluentbit |
mqarj-gateway-fluent-bit.yml |
|
Нужен для работы контейнера логирования — Fluentbit. Нужно заменить Host и Port в блоке [OUTPUT] на созданный для данного стенда |
Установить артефакт Secret с сертификатом Fluentbit |
mqarj-gateway-fluent-bit-cert.yml |
|
Нужен для подключения к сервису прикладного логирования |
Установить конфиг логирования logback |
mqarj-gateway-logback-config.yml |
|
Нужен для задания правила логирования |
Установка брокеров Artemis#
Необходимая информация приведена в таблице ниже.
Брокеры Artemis (заглушка)
Шаг |
Артефакт |
Действия |
Описание |
|---|---|---|---|
Установить артефакт Secret с сертификатами |
artemis-mq-ks.yml |
|
Содержит сертификаты брокеров (и компонента Шлюз ActiveMQ Artemis) |
Установить конфигурацию брокеров Artemis |
artemis-mq1-config.yml |
|
|
Установить артефакт Deployment брокеров Artemis |
artemis-mq1.yml |
|
cpu: 400m |
Установить сервисы брокеров Aremis |
artemis-mq1-svc.yml |
|
Установка компонента Шлюз ActiveMQ Artemis#
Параметры настройки компонента Шлюз ActiveMQ Artemis представлены в таблице.
Компонент Шлюз ActiveMQ Artemis
Шаг |
Артефакт |
Действия |
Описание |
|---|---|---|---|
Установить артефакт Secret с сертификатами |
artemis-mq-ks.yml |
|
Сертификат компонента Шлюз ActiveMQ Artemis (и брокеров), если был установлен вместе с брокерами, шаг можно пропустить |
Установить конфигурацию компонента Шлюз ActiveMQ Artemis потребителя |
mqarj-gateway-sc-config.yml |
|
Содержит конфигурацию шлюза потребителя. Детали настройки описаны отдельно "Шлюз ActiveMQ Artemis" |
Установить компонент Шлюз ActiveMQ Artemis потребителя |
mqarj-gateway-sc.yml |
|
Манифест разворачивания компонента Шлюз ActiveMQ Artemis потребителя |
Установить сервис компонента Шлюз ActiveMQ Artemis потребителя |
mqarj-gateway-sc-svc.yml |
|
Сервис, через который другие Pods могут обратиться к компоненту Шлюз ActiveMQ Artemis потребителя |
Установить конфигурацию компонента Шлюз ActiveMQ Artemis поставщика |
mqarj-gateway-sp-config.yml |
|
Содержит конфигурацию компонента Шлюз ActiveMQ Artemis поставщика. Детали настройки описаны отдельно «Шлюз ActiveMQ Artemis» |
Установить компонент Шлюз ActiveMQ Artemis поставщика |
mqarj-gateway-sp.yml |
|
Манифест разворачивания компонента Шлюз ActiveMQ Artemis поставщика |
Установить сервис компонента Шлюз ActiveMQ Artemis поставщика |
mqarj-gateway-sp-svc.yml |
|
Сервис, через который другие Pods могут обратиться к компоненту Шлюз ActiveMQ Artemis поставщика |
Установка заглушки JMS#
Необходимая информация приведена в таблице ниже.
JMS-заглушка
Шаг |
Артефакт |
Действия |
Описание |
|---|---|---|---|
Установить конфигурацию заглушки JMS |
gatling-mqarj-gateway-config.yml |
|
|
Установить заглушку JMS |
gatling-mqarj-gateway.yml |
|
cpu: 400m |
Примечание: для более удобного разворачивания можно запустить bash-скрипт, предварительно подключившись к namespece Kubernetes, в котором будет разворачиваться компонент Шлюз ActiveMQ Artemis для тестирования:
bash install.sh kubectl
архив с файлами: test-artemismq.rar
Обновление#
Перед обновлением версии компонента Шлюз ActiveMQ Artemis рекомендуется выполнить бэкап установленной версии командой:
kubectl --insecure-skip-tls-verify get \<тип ресурса\> \<имя ресурса\> \> \<имя ресурса\>.yml
Для обновления версии компонента Шлюз ActiveMQ Artemis необходимо:
произвести полное удаление артефактов установленной версии командой:
kubectl --insecure-skip-tls-verify delete \<тип ресурса\> \<имя ресурса>произвести развертывание артефактов новой версии командой:
kubectl --insecure-skip-tls-verify apply -f \<имя файла\>
При этом:
Чтение сообщений из очередей брокеров Artemis Pods новой версии компонента Шлюз ActiveMQ Artemis начинается автоматически после их старта в Kubernetes.
Переключение gRPC трафика выполняется механизмами Istio Service Mesh при загрузке артефакта Service.
Остановка чтения из очередей брокеров Artemis и обработка gRPC трафика старой версией компонента Шлюз ActiveMQ Artemis прекращается после остановки Pods старой версии.
Параметр strategy в Deployment компонента Шлюз ActiveMQ Artemis устанавливается в значение:
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 25%
maxSurge: 25%
В этом случае развертывание Pods новой версии компонента Шлюз ActiveMQ Artemis будет производится Kubernetes с использованием этой стратегии.
Удаление#
Для удаления версии компонента Шлюз ActiveMQ Artemis необходимо произвести удаление артефактов установленной версии командой:
kubectl --insecure-skip-tls-verify delete \<тип артефакта\> \<имя артефакта\>.
Требуется удалить артефакты:
Configmap, содержащий файл application.yml компонента Шлюз ActiveMQ Artemis
Secret, содержащий файлы key.pem, cert.pem с сертификатами компонента Шлюз ActiveMQ Artemis
Service компонента Шлюз ActiveMQ Artemis
Deployment компонента Шлюз ActiveMQ Artemis
Проверка работоспособности#
Для быстрой проверки работоспособности запущенного приложения компонента Шлюз ActiveMQ Artemis:
В интерфейсе Kubernetes, в терминале в Pod компонента Шлюз ActiveMQ Artemis выполните команду curl localhost:<portnum>/actuator/health в выдаче команды должна быть строка: "ping":{"status":"UP"}, что подтверждает, что экземпляр компонента Шлюз ActiveMQ Artemis запустился и готов к работе.
Чтобы выполнить эту же проверку с использованием kubectl:
В консоли выполните команду
kubectl --insecure-skip-tls-verify port-forward pod/<имя Pod> <portnum>:<portnum>. Kubectl перенаправит порт Pod компонента Шлюз ActiveMQ Artemis на соответствующий порт рабочего места.Запустите еще одно окно консоли, в нем выполнить команду:
curl localhost:<portnum>/actuator/health, в выдаче команды должна быть строка:"ping":{"status":"UP"}, что подтверждает, что экземпляр компонента Шлюз ActiveMQ Artemis запустился и готов к работе.Завершите форвардинг портов, для этого нажмите Ctrl+C. Перенаправление порта на рабочее место будет отменено.
Для проверки интеграций с АС Журналирование и АС Мониторинг необходимо в АРМ этих систем убедиться в наличии логов и метрик соответственно. Для проверки интеграции с ТС Аудит необходимо в АРМ Аудит убедиться в наличии записей регистрации событий аудита.
Для проверки интеграции с Агентом hashicorp vault, Валидатором необходимо убедиться в отсутствии ошибок в соответствующих данным АС sidecar-контейнерах Pod компонента Шлюз ActiveMQ Artemis.
Откат#
Для отката к предыдущей версии компонента Шлюз ActiveMQ Artemis необходимо:
Произвести удаление артефактов установленной версии командой:
kubectl --insecure-skip-tls-verify delete \<тип артефакта\> \<имя артефакта\>.Произвести установку с артефактов из бэкапа командой:
kubectl --insecure-skip-tls-verify apply -f \<имя файла\>
Для отката к предыдущей конфигурации нужно выполнить установку из бэкапа только артефактов типа ConfigMap и Secret.
Часто встречающиеся проблемы и пути их устранения#
Проблема |
Причина |
Решение |
|---|---|---|
Ошибка при подключении к проекту |
Пользователю не предоставлен доступ в проект |
Запросить доступ к проекту |
Ошибка при подключении к проекту |
Нет физического доступа к кластеру |
Зарегистрировать обращение в поддержку для восстановления доступа |
Ошибка при загрузке артефактов |
У пользователя, под которым производится загрузка, отсутствуют необходимые права |
Проверить и скорректируйте настройку прав доступа пользователю |
Ошибка при Pull Docker-образа из репозитория |
Отсутствуют права на Pull образа из репозитория |
Запросить права |
Ошибка при Pull Docker-образа из репозитория |
Недоступен репозиторий |
Зарегистрировать обращение в поддержку для восстановления доступа |
Ошибка при Pull Docker-образа из репозитория |
Неверная ссылка на image в Deployment компонента Шлюз ActiveMQ Artemis |
Проверить ссылку при необходимости скорректировать Deployment |
Чек-лист валидации установки#
Проверка |
Действия |
Результат |
|---|---|---|
Docker-образ опубликован в Docker-registry |
Найти Docker-образ по пути REGISTRY_URL/ + IMAGE_PATH/ + ARTIFACT_ID: + VERSION/ (см. пункт по сборке дистрибутива) |
Docker-образ найден по указанному пути |
Все артефакты загружены в проект |
По списку артефактов найти их в проекте Kubernetes командой kubectl --insecure-skip-tls-verify get <тип артефакта>/<имя артефакта> |
Команда для каждого артефакта вернула его параметры |
Все Pods компонента Шлюз ActiveMQ Artemis запущены |
Найти Deployment командой kubectl --insecure-skip-tls-verify get deployments/<имя Deployment>, убедится что все Pods запущены (и все контейнеры в Pod - Контейнер приложения, а также контейнер SVPX, контейнер LOGA если заданы в Deployment) |
В выводе команды, в колонке READY числитель и знаменатель совпадают |
Отсутствие ошибок в журналах контейнеров |
На вкладке Logs для каждого Pod проверьте, что в журнале контейнеров Pod отсутствуют ошибки |
В системных журналах Pods компонента Шлюз ActiveMQ Artemis отсутствуют записи с ключевым словом error |