ПРО. Продуктовая фабрика: Инструкция по развертыванию1. Требования к программному обеспечениюДля функционирования Системы необходимо следующее системное программное
обеспечение:
- Kafka, версия от 3.6.1, рекомендуется не менее 3-х инстансов
- Keycloak, версия от 25.0.2
- Fluentd, версия от 1.15.3
- Postgres, версия от 16.1
- Zookeeper, версия от 3.9.1
- Elastic, версия 7.16.2, рекомендуется не менее 2-х инстансов
- Docker, версия от 24.0.5
- ОС: любая Linux-система с версией ядра не ниже 2.24
2. Требования к техническому обеспечениюСистема должна быть построена на оборудовании платформы x86 и развернута в среде контейнеризации Docker версии не ниже 24.0.5 с системой управления
контейнеризированными приложениями Docker Swarm или Kubernetes.
Общие требования к стенду для запуска на одном хосте:
- Процессор: серверный процессор на 16 ядер
- Память: 32 GB
- Диск: 240 GB SSD
- Сеть: 100 mbit/s
3. Подготовка окруженияPostgresПример см. в environment/docker-compose.yaml Важно: проинициализировать
необходимые БД, см. environment/catalog-init/db/database-init.sql
KeycloakПример см. в environment/docker-compose.yaml Пример настройки realm находится в
файле deploy/environment/catalog-init/keycloak/realm-export.json (тестовый realm называется catalog)
Данные настройки предоставлены только для ознакомления,
импортировать их на продуктивной среде категорически нельзя.
Важно:- Сменить пароли в соответствующих env-переменных: KC_DB_PASSWORD, KEYCLOAK_PASSWORD, KEYCLOAK_ADMIN_PASSWORD
- Указать актуальные хосты в env-переменных KC_HOSTNAME_ADMIN_URL, KC_HOSTNAME_URL и в секции command
Зайти в административную панель:
- Создать realm msabs
- Realm settings -> Localization: Internalization - On, Supported locales, добавить "Русский"
- Создать клиента product-catalog-front в realm'е msabs,
- Проверить наличие установленных чекбоксов Standard flow, Direct access grants
- Установить значения Valid redirect URIs. Для dev/test среды допустимо
- использовать значение *
- Valid post logout redirect URIs. Для dev/test среды допустимо использовать значение +
- Web origins. Для dev/test среды допустимо использовать значение *
- Front channel logout: off
- Создать клиента product-catalog-back в realm'е msabs
- Client authentication - On
- Проверить наличие установленных чекбоксов Standard flow, Direct access grants,
Service account roles:- Установить значения Valid redirect URIs. Для dev/test среды допустимо использовать значение *
- Valid post logout redirect URIs. Для dev/test среды допустимо использовать значение +
- Web origins. Для dev/test среды допустимо использовать значение *
- Front channel logout: off
- Проверить на вкладке Credentials: Client Authenticator д.б. Client Id and Secret
- На вкладке Roles создать следующие роли:
- Audit
- DictionaryManager
- FormulaManager
- LibraryManager
- ProductClassManager
- ProductManager
- RevisionControler
- RevisionManager
- Viewer
На вкладе Service Account Roles проверить наличие следующих ролей, в случае отсутствия добавить (Assign role, filter by client):
- realm-management view-users
- uma_authorization (realm roles)
- product-catalog-back ProductManager
- product-catalog-back Audit
- tariff-cb-service Deploy (после создания клиента tariff-cb-service)
- Создать клиента tariff-cb-service в realm'е msabs,
- Client authentication - On
- Проверить наличие установленных чекбоксов Standard flow, Direct access grants,
Service accounts roles:- Установить значения Valid redirect URIs. Для dev/test среды допустимо использовать значение *
- Valid post logout redirect URIs. Для dev/test среды допустимо использовать значение +
- Web origins. Для dev/test среды допустимо использовать значение *
- Front channel logout: off
- Проверить на вкладке Credentials: Client Authenticator д.б. Client Id and Secret
- На вкладке Roles создать следующие роли:
- Deploy
- На вкладе Service Account Roles проверить наличие следующих ролей, в случае отсутствия добавить (Assign role, filter by client):
- default-roles-catalog
- product-catalog-back ProductManager
Не забыть добавление клиенту product-catalog-back в Service Account Roles роли tariff-cb-
service Deploy
Создать группу ProductCatalogAdmin на вкладке Role Mapping, добавить следующие роли:
- product-catalog-back FormulaManager
- product-catalog-back ProductClassManager
- product-catalog-back RevisionControler
- product-catalog-back RevisionManagero product-catalog-back ProductManager
- product-catalog-back DictionaryManager
- product-catalog-back LibraryManager
- product-catalog-back Audit
- Создать пользователя (Create user), имя, email, установить сразу галку email verified
- Задать пароль (Просмотр профиля, credentials, set password), temporary: off
- На вкладке Groups добавить группу ProductCatalogAdmin
zookeeperПример см. в environment/docker-compose.yaml
kafkaПример см. в environment/docker-compose.yaml Важно: поменять хост в env-переменной
KAFKA_CFG_ADVERTISED_LISTENERS
elasticsearchПример см. в environment/docker-compose.yaml
Важно:
- Пока устанавливаем указанную версию, на более свежей работоспособность каталога еще не проверена
- Необходимо поменять пароль в env-переменной ELASTIC_PASSWORD
Рекомендуется после запуска установить следующую конфигурацию шардов:
curl -X PUT http://elastic_host:9200/_cluster/settings -H "Content-Type: application/json" -d '{
"persistent": { "cluster.max_shards_per_node": "3000" } }'
fluentdПример см. в environment/docker-compose.yaml Сборка на основе 1.15
Важно: пока устанавливаем указанную версию, на более свежей работоспособность каталога еще не проверена
4. Развертывание Back-endcatalog-metadataПример см. в catalog/docker-compose.yaml
Важно:
- KEYCLOAK_RESOURCE - product-catalog-back
- KEYCLOAK_REALM - msabs
- KEYCLOAK_USER_ID - Client Secret от клиента product-catalog-back
- KEYCLOAK_AUTH_URL - указать host keycloak
- CATALOG_DB_HOST - хост postgres
- CATALOG_DB_PORT - порт postgres
- CATALOG_DATA_DB_NAME - имя бд, catalog
- CATALOG_DATA_DB_USER - имя пользователя бд, catalog
- CATALOG_DATA_DB_PASSWORD - пароль для пользователя catalog
- CATALOG_DOC_URL - url сервиса (внешний, https) для javadoc
- FLUENTD_HOST - хост fluentd
- FLUENTD_ENABLED - true
- KEYCLOAK_CLIENT_CREDENTIALS - Client Secret от клиента product-catalog-back
- KAFKA_HOST - хост, где развернута kafka
- KAFKA_PORT - порт kafka
- SPRING_PROFILES_ACTIVE - опционально, профили запуска, необходимо указать значение production для прод среды и поддержки SASL для Kafka
- KAFKA_USERNAME - имя пользователя для kafka, необходимо если включе профиль production в SPRING_PROFILES_ACTIVE
- KAFKA_PASSWORD - пароль для kafka, необходимо если включен профиль production в SPRING_PROFILES_ACTIVE
catalog-dataПример см. в catalog/docker-compose.yaml
Важно:
- KEYCLOAK_RESOURCE - product-catalog-back KEYCLOAK_REALM - msabs
- KEYCLOAK_USER_ID - Client Secret от клиента product-catalog-back
- KEYCLOAK_AUTH_URL - указать host keycloak
- CATALOG_DB_HOST - хост postgres
- CATALOG_DB_PORT - порт postgres
- CATALOG_DATA_DB_NAME - имя бд, catalog
- CATALOG_DATA_DB_USER - имя пользователя бд, catalog
- CATALOG_DATA_DB_PASSWORD - пароль для пользователя catalog
- CATALOG_DOC_URL - url сервиса (внешний, https) для javadoc
- FLUENTD_HOST - хост fluentd
- FLUENTD_ENABLED - true
- KEYCLOAK_CLIENT_CREDENTIALS - Client Secret от клиента product-catalog-back
- KAFKA_HOST - хост, где развернута kafka
- KAFKA_PORT - порт kafka
- ELASTIC_SEARCH_HOST - хост elasticsearch
- ELASTIC_SEARCH_PORT - порт elasticsearch
- SPRING_PROFILES_ACTIVE - опционально, профили запуска, необходимо указать значение production для прод среды и поддержки SASL для Kafka
- KAFKA_USERNAME - имя пользователя для kafka, необходимо если включен профиль production в SPRING_PROFILES_ACTIVE
- KAFKA_PASSWORD - пароль для kafka, необходимо если включен профиль production в SPRING_PROFILES_ACTIVE
catalog-notificationsПример см. в catalog/docker-compose.yaml
Важно:
- KEYCLOAK_RESOURCE - product-catalog-back
- KEYCLOAK_REALM - msabs
- KEYCLOAK_USER_ID - Client Secret от клиента product-catalog-back
- KEYCLOAK_CLIENT_CREDENTIALS - Client Secret от клиента product-catalog-back
- KEYCLOAK_AUTH_URL - указать host keycloak
- CATALOG_DB_HOST - хост postgres
- CATALOG_DB_PORT - порт postgres
- CATALOG_NOTIFICATIONS_DB_NAME - notifications
- CATALOG_NOTIFICATIONS_DB_USER - пользователь db notifications
- CATALOG_NOTIFICATIONS_DB_PASSWORD - пароль для пользователя db notifications
- CATALOG_DOC_URL - url сервиса (внешний, https) для javadoc
- FLUENTD_HOST - хост fluentd
- FLUENTD_ENABLED - true
- KAFKA_HOST - хост, где развернута kafka
- KAFKA_PORT - порт kafka
- SPRING_PROFILES_ACTIVE - опционально, профили запуска, необходимо указать значение production для прод среды и поддержки SASL для Kafka
- KAFKA_USERNAME - имя пользователя для kafka, необходимо если включен профиль production в SPRING_PROFILES_ACTIVE
- KAFKA_PASSWORD - пароль для kafka, необходимо если включен профиль production в SPRING_PROFILES_ACTIVE
catalog-lifecycleПример см. в catalog/docker-compose.yaml
Важно:
- KEYCLOAK_RESOURCE - product-catalog-back
- KEYCLOAK_REALM - msabs
- KEYCLOAK_USER_ID - Client Secret от клиента product-catalog-back
- KEYCLOAK_AUTH_URL - указать host keycloak
- CATALOG_DB_HOST - хост postgres
- CATALOG_DB_PORT - порт postgres
- CATALOG_DATA_DB_NAME - имя бд, catalog
- CATALOG_DATA_DB_USER - имя пользователя бд, catalog CATALOG_DATA_DB_PASSWORD - пароль для пользователя catalog
- CATALOG_DOC_URL - url сервиса (внешний, https) для javadoc
- FLUENTD_HOST - хост fluentd
- FLUENTD_ENABLED - true
- ELASTIC_SEARCH_HOST - хост elasticsearch
- ELASTIC_SEARCH_PORT - порт elasticsearch
- KEYCLOAK_CLIENT_CREDENTIALS - Client Secret от клиента product-catalog-back
- CATALOG_DATA_URL - url сервиса catalog-data, http://catalog-data:8090/
- CATALOG_NOTIFICATIONS_URL - url сервиса catalog-notifications, http://catalog-notifications:8084/
- CASHBACK_TARIFF_DEPLOY_URL=http://:/deploy - URL + route core-cashback-tariff-service, используется для внедрения тарифов cashback
- SPRING_PROFILES_ACTIVE - опционально, профили запуска, необходимо указать значение production для прод среды и поддержки SASL для Kafka
- KAFKA_USERNAME - имя пользователя для kafka, необходимо если включен профиль production в SPRING_PROFILES_ACTIVE
- KAFKA_PASSWORD - пароль для kafka, необходимо если включен профиль production в SPRING_PROFILES_ACTIVE
catalog-utilsПример см. в catalog/docker-compose.yaml Важно:
- KEYCLOAK_RESOURCE - product-catalog-back
- KEYCLOAK_REALM - msabs
- KEYCLOAK_USER_ID - Client Secret от клиента product-catalog-back
- KEYCLOAK_AUTH_URL - указать host keycloak
- CATALOG_DOC_URL - url сервиса (внешний, https) для javadoc
- FLUENTD_HOST - хост fluentd
- KEYCLOAK_CLIENT_CREDENTIALS - Client Secret от клиента product-catalog-back
- CATALOG_UTILS_BASE_URL - url сервиса catalog-utils, http://catalog-utils:8091/
- RULES_ENGINE_URL - url сервиса rules-engine, http://rules-engine:8071
- SPRING_PROFILES_ACTIVE - опционально, профили запуска, необходимо указать значение production для прод среды и поддержки SASL для Kafka
- KAFKA_USERNAME - имя пользователя для kafka, необходимо если включен профиль production в SPRING_PROFILES_ACTIVE
- KAFKA_PASSWORD - пароль для kafka, необходимо если включен профиль production в SPRING_PROFILES_ACTIVE
5. Развертывание Front-endcatalog-uiПример см. в catalog/docker-compose.yaml
добавить volume ./conf/.env_bspb:/usr/share/nginx/html/.env с заменой localhost на хост продуктового каталога
GatewayПример см. в gateway/docker-compose.yaml Важно:
- Предварительно сгенерировать ключи и сертификаты для защищенного соединения и указать их в gateway/docker-compose.yaml
- Установить нужные хосты в gateway.template (заменить localhost на нужный хост)
6. Настройка конфигурацииНастройка кастомных имен топиков Kafka и аутентификацияПо сервисам прод каталога, в формате ENV:значение по умолчанию, одинаковые энвы должны иметь одинаковые значения.
catalog-metadata:
- KAFKA_TOPIC_METADATA:metadataQueue
- KAFKA_TOPIC_CONFIGURATIONS:configurationsQueue
- KAFKA_TOPIC_DICTIONARIES:dictionariesQueue
- KAFKA_TOPIC_REVISION_STATUS_CHANGE:revisionStatusChanges
- KAFKA_DATA_INPUT_TOPIC:dataInputQueue
- catalog-data:
- KAFKA_TOPIC_METADATA:metadataQueue
- KAFKA_DATA_TOPIC:dataQueue
- KAFKA_DATA_INPUT_TOPIC:dataInputQueue
- KAFKA_RECORD_INPUT_TOPIC:recordInputQueue
- KAFKA_DATA_ERROR_TOPIC:dataErrorQueue
- KAFKA_RECORD_ERROR_TOPIC:recordErrorQueue
catalog-lifecycle:
- KAFKA_TOPIC_METADATA:metadataQueue
- KAFKA_DATA_TOPIC:dataQueue
catalog-notifications:
- KAFKA_TOPIC_REVISION_STATUS_CHANGE:revisionStatusChanges
Для запуска в тест/прод среде необходимо передать следующие Java options:
- Dspring.cloud.stream.kafka.binder.configuration.security.protocol=SASL_SSL
- Dspring.cloud.stream.kafka.binder.configuration.sasl.mechanism=SCRAM-SHA-512
- Dspring.cloud.stream.kafka.binder.configuration.sasl.jaas.config="org.apache.kafka.common.s
- ecurity.plain.PlainLoginModule required username="USRNAME" password="PASSWORD";"
ИтогиПосле всех проведенных действий должен быть доступен фронт на http:///ui и на него можно залогиниться созданным ранее пользователем