mybpm!
Скачать в формате: PDF pdf DOCX word

Переменные окружения

Переменные окружения (далее п.о.) задаются для запуска API-сервера. В таблице перечислен минимальный набор п.о. с примерами значений

Переменная окружения Пример значения
MYBPM_COMPANY_CODE greetgo
MYBPM_ZOOKEEPER_SERVERS localhost:10012
MYBPM_KAFKA_SERVERS localhost:10011
MYBPM_MONGO_SERVERS mongodb://mybpm:123@192.168.111.1:11017, 192.168.111.2:11018, 192.168.111.3:11019/admin
MYBPM_AUX1_DB_NAME mybpm_aux1
MYBPM_AUX1_HOST localhost
MYBPM_AUX1_PORT 10018
MYBPM_AUX1_USER_NAME mybpm
MYBPM_AUX1_PASSWORD 4jk3hb2145hj23bv4123jkb4
MYBPM_ELASTIC_SEARCH_SERVERS localhost:10016

В следующей таблице указан более расширенный пример доступа к кафке:

Переменная окружения Пример значения
MYBPM_KAFKA_SERVERS localhost:10011
MYBPM_KAFKA_CON_001 sasl.jaas.config = TXT:org.apache.kafka.common.security.plain.PlainLoginModule...
MYBPM_KAFKA_CON_002 sasl.mechanism = TXT:PLAIN
MYBPM_KAFKA_CON_003 security.protocol = TXT:SASL_SSL
MYBPM_KAFKA_CON_004 ssl.truststore.location = Base64_to_file :4hJ1/v324gHkjY43bjk51b5v234v423v4...
MYBPM_KAFKA_CON_005 ssl.truststore.password = TXT :SuperSecret

Ниже смотрите детальное описание п.о.:


MYBPM_APP_PREFIX

Префикс для БД

Возможные значения:
[a-z][a-z1-9]*

Данный префикс используется для определения баз данных, например если указать префикс tor, то в MongoDB будут использоваться базы данных tor_mybpm, tor_mybpm_aux1 и так далее для всех БД. Если префикс не указать, то имена будут использоваться без префикса. Это нужно, чтобы можно было на одной среде развернуть несколько независимых друг от друга платформ MyBPM.


MYBPM_LICENCE_NUMBER

Номер лицензии платформы MyBPM

Возможные значения:
6120b632-f91a-416d-a7d0-180ffd7ce380

Для активации функционирования платформы MyBPM в соответствии с закупленной лицензией, необходимо номер этой лицензии указать в данной п.о.

Так же необходимо обеспечить доступ платформы к лицензионному сервису платформы MyBPM. Или настроить прокси-сервер к одному или нескольким адресам лицензионного сервиса.


MYBPM_LICENCE_SERVICE_ADDRESSES

Альтернативные адреса лицензионного сервиса.

Возможные значения:
http://some-host:port,https://some-another-host

ИЛИ

X,http://some-host:port,https://some-another-host

Список адресов лицензионного сервиса разделённые запятой. Так же в начале можно поставить X (большая латинская буква "икс") с запятой - это отменит использование пред-настроенных адресов лицензионного сервиса.

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

Платформа по очереди будет вызывать адреса лицензионного сервиса. И как только один адрес сработает, то произойдёт полноценная активация платформы в соответствии с лицензией, номер которой указан в п.о. MYBPM_LICENCE_NUMBER. Если ни один адрес не сработает, то произойдёт полная блокировка работы платформы.

Если необходимо иметь возможность просматривать данные, которые ходят на лицензионный сервис, то можно сделать прокси сервер перенаправляющий REST-запросы на один из адресов лицензионного сервиса. Прокси сервер может работать как на протоколе HTTP, так и на протоколе HTTPS.

Важно чтобы прокси сервер перебрасывал заголовок signature как в запросе, так и в ответе запроса - без него платформа не сможет убедиться в актуальности лицензионного сервиса, и будет заблокирована.


MYBPM_ALL_CONSUMERS_OFF

Отключение всех исторических consumer-ов

Возможные значения:
true, false

Исторический consumer - это такой consumer, который считывает данные из кафки с начала времён. Каждое сообщение в таком consumer-е обрабатывается только один раз на одном сервере, даже если настроено несколько серверов обрабатывающих данный consumer.

Данная п.о. позволяет отключить все исторические consumer-ы, вне зависимости от того, что установлено в конфигурации ZooKeeper. Чтобы это сделать, нужно установить данную п.о. в значение true (см. kz.greetgo.mybpm_util_light.etc.Env.envBool).

Если эта п.о. не установлена или имеет другое значения, то consumer-ы запускаются и настраиваются по конфигурации из ZooKeeper.

MYBPM_ALL_KAFKA_NOTIFICATIONS_OFF

Отключение всех consumer-ов-оповещений

Возможные значения:
true, false

Consumer-оповещение - это такой consumer, который считывает данные из кафки с момента запуска. Притом каждое сообщение считывается ВСЕМИ серверами, которые обрабатывают этот consumer-оповещение.

Данная п.о. позволяет отключить все consumer-оповещения, вне зависимости от того, что установлено в конфигурации ZooKeeper. Чтобы это сделать, нужно установить данную п.о. в значение true (см. kz.greetgo.mybpm_util_light.etc.Env.envBool).

Если эта п.о. не установлена или имеет другое значения, то consumer-ы-оповещения запускаются и настраиваются по конфигурации из ZooKeeper.

ВНИМАНИЕ: Серверы, которые обрабатывают WebSocket-ы, должны иметь все consumer-оповещения ВКЛЮЧЁННЫМИ.

Данная переменная окружения применяется для тех серверов, которые обрабатывают только исторические consumer-ы. На таких серверах, не нужны оповещения, так как они не работают с пользователями. И желательно их отключить данной п.о.


MYBPM_PLUGINS

Активация установленных плагинов

Возможные значения:
Идентификаторы плагинов через запятую без пробелов

Чтобы установить плагин, недостаточно его jar-файл поместить на место загружаемых библиотек, нужно ещё его активировать. Для этого нужно его идентификатор указать в списке активируемых идентификаторов в этой п.о.


MYBPM_DISABLE_CACHE

Отключение всего кэша

Возможные значения:
true, false

Установка данной п.о. в значение true (см. kz.greetgo.mybpm_util_light.etc.Env.envBool) позволяет полностью отключить все кэши в системе.


MYBPM_USE_SHENANDOAH

Использовать SHENANDOAH

Возможные значения:
yes, чё-то другое

SHENANDOAH - это прогрессивный сборщик мусора, но по-умолчанию в виртуальной Java-машине активирован другой. Чтобы активировать этот, нужно установить данную п.о. в значение yes. Другие значения и отсутствие данной п.о. активируют сборщик мусора по умолчанию.


MYBPM_CONSUMER_DIR

Имя директории куда помещаются конфиги консьюмеров

Возможные значения:
строка из латинских символов, цифр и деления (/)

По умолчанию система располагает файлы конфигурации консьюмеров в ZooKeeper по пути:

/mybpm/consumers

Это расположение можно поменять. Например, если задать данной п.о. значение:

MYBPM_CONSUMER_DIR=hello/world

То расположение файлов конфигурации измениться на следующее:

/mybpm/consumers-hello/world

Т.е. к прежнему значению добавиться тире ("-") и после него то, что в п.о.


MYBPM_AD_USER и MYBPM_AD_PASS

Параметры доступа к Active Directory (AD)

Возможные значения:
строка из латинских символов, цифр

Параметры доступа к AD находятся ZooKeeper-е в файле конфигурации:

/mybpm/configs/AdConfig.txt

Кроме всего прочего имя пользователя и пароль доступа задаются в параметрах: adUsername, adPassword в открытом виде. Но в этом файле их можно не задавать, а передать через указанные п.о. и они будут приоритетными по сравнению со значениями из файла конфигурации.


MYBPM_JAVA_DEBUG

Активация Java-отладки

Возможные значения:
yes, чё-то ещё

По умолчанию Java-машина запускается без внешнего отладчика. Для его активации необходимо установить данную п.о. в значение yes. Это запустит отладчик на порту 5005.

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

Так же есть возможность запустить систему в остановленном режиме, т.е. система остановиться на первой команде и работать не будет, а будет ждать подключения отладчика, чтобы он запустил её дальше или посмотрел, что происходить в самом начале, для этого нужно установить п.о. MYBPM_JAVA_DEBUG_SUSPEND=y


MYBPM_JAVA_DEBUG_SUSPEND

Остановки при запуске

Возможные значения:
y, n

Эта п.о. используется совместно с MYBPM_JAVA_DEBUG. Установив данную п.о. в значение 'y' система запуститься в остановленном режиме, т.е. система остановиться на первой команде и дальше работать не будет, а будет ждать подключения отладчика, чтобы он запустил её дальше или посмотрел, что происходить в самом начале.


MYBPM_JAVA_CONSOLE

Активировать консоль jconsole на порту 1099

Возможные значения:
yes, пусто

Если установить данную п.о. в значение yes, то после запуска системы к ней можно будет подключиться с помощью утилиты jconsole по порту 1099.


MYBPM_MAIN_CLASS

Сменить главный класс: kz.greetgo.mybpm.server.war.app.MybpmServer

Возможные значения:
Полное имя класса с фунцией main

По умолчанию система запускается с класса:

 kz.greetgo.mybpm.server.war.app.MybpmServer

Который поднимает сервер приложения на порту 8080. Этот класс можно сменить, указав другой через эту п.о. - это позволит запустить какие-нибудь альтернативные сервера или задачи.


MYBPM_JAVA_OPTS

Дополнительные опции к Java-машине

Возможные значения:
Опции к Java-машине, которые обычно начинаются с -X

В данной переменной можно указать дополнительные опции к Java-машине, например по ограничению занимаемой памяти.

Например:

MYBPM_JAVA_OPTS="-Xms16G -Xmx16G"

Позволяет ограничить кучу в 16-ю гигабайтами ОЗУ.


MYBPM_COMPANY_CODE

Код главного аккаунта

Возможные значения:
greetgo

Эту переменную всегда нужно устанавливать и устанавливать в значение greetgo.

Ранее можно было выбирать главные аккаунты, но с какого-то момента, добавилась возможность добавлять аккаунты динамически и главный аккаунт навсегда закрепился за greetgo.


MYBPM_AUX1_HOST, MYBPM_AUX1_PORT, MYBPM_AUX1_DB_NAME, MYBPM_AUX1_USER_NAME, MYBPM_AUX1_PASSWORD

Доступ к PostgreSQL

Возможные значения:
строка из латинских символов, цифр

Данные переменные окружения определяют параметры доступа к БО PostgreSQL AUX1. А именно:

Первые три переменные определяют строку доступа к БД. Она получается такой:

jdbc:postgresql://${HOSTS_PORTS}/${MYBPM_AUX1_DB_NAME}?ApplicationName=MyBPM

Тут параметр HOSTS_PORTS вычисляется из переменных MYBPM_AUX1_HOST и MYBPM_AUX1_PORT по следующему алгоритму.

  1. Берётся переменная MYBPM_AUX1_HOST и делиться по запятым - получается массив
  2. в этом массиве в тех значениях, в которых нет двоеточия, в конце добавляется порт MYBPM_AUX1_PORT через двоеточие
  3. Полученный новый массив обратно соединяется через запятые и получается переменная HOSTS_PORTS

Таким образом получается, что переменная MYBPM_AUX1_PORT используется как порт по умолчанию для тех мест из MYBPM_AUX1_HOST, в которых порт не указан.

Пусть например у нас есть база данных mybpm на трех серверах кластера PostgreSQL:

  1. Адрес 10.100.1.101 порт 5432
  2. Адрес 10.100.1.102 порт 5432
  3. Адрес 10.100.1.103 порт 5432

Тогда нужно задать следующие переменные окружения:

И по этим переменным окружениям будет генерироваться следующая URI доступа к базе данных:

jdbc:postgresql://10.100.1.101:5432,10.100.1.102:5432,10.100.1.103:5432/mybpm?ApplicationName=MyBPM

Теперь допусти порты на серверах разные, например такие:

  1. Адрес 10.100.1.101 порт 1234
  2. Адрес 10.100.1.102 порт 4567
  3. Адрес 10.100.1.103 порт 1001

Тогда нужно задать следующие переменные окружения:

И по этим переменным окружениям будет генерироваться следующая URI доступа к базе данных:

jdbc:postgresql://10.100.1.101:1234,10.100.1.102:4567,10.100.1.103:1001/mybpm?ApplicationName=MyBPM

Подробнее про URI доступа к базе данных PostgreSQL смотрите по ссылке:

https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNSTRING-URIS


MYBPM_ELASTIC_SEARCH_SERVERS, MYBPM_ELASTIC_SEARCH_USER, MYBPM_ELASTIC_SEARCH_PASS, MYBPM_ELASTIC_SEARCH_CA_CRT

Параметры доступа к эластику

Возможные значения:
строка из латинских символов, цифр

Данные п.о. определяют параметры доступа к серверу эластика. Главным п.о. является MYBPM_ELASTIC_SEARCH_SERVERS - в зависимости от его значения используются другие п.о.

П.о. MYBPM_ELASTIC_SEARCH_SERVERS может иметь следующие варианты:

Вариант со схемой доступа http:

MYBPM_ELASTIC_SEARCH_SERVERS=[host1]:[port1],[host2]:[port2],[host3]:[port3]

или

MYBPM_ELASTIC_SEARCH_SERVERS=http://[host1]:[port1],[host2]:[port2],[host3]:[port3]

Вариант со схемой доступа https:

MYBPM_ELASTIC_SEARCH_SERVERS=https://[host1]:[port1],[host2]:[port2],[host3]:[port3]

где:

П.о. MYBPM_ELASTIC_SEARCH_USER и MYBPM_ELASTIC_SEARCH_PASS используются для указания авторизации и аутентификации.

Если используется схема доступа https, то можно использовать п.о. MYBPM_ELASTIC_SEARCH_CA_CRT, в которой указать полный путь к файлу сертификата соединения. Обычно этот файл имеет имя ca.crt


MYBPM_CORS

Отключение проверки CORS

Возможные значения:
ALL, или чё-то другое

Если установить эту п.о. в значение ALL, то уберётся контроль CORS с запросов - это нужно для тестирования клиента в режиме отладки. Любые другие значение, как и отсутствие самой п.о. контроль CORS оставляет на высоком уровне.


MYBPM_LOG_DIR

Базовый путь размещения файлов логирования системы

Значение по-умолчанию (если п.о. не указана или пустая):
/var/log/mybpm
Возможные значения:
абсолютный путь к сущестующей директории, в которую есть доступ на запись

Определяет пусть к существующей директории, в которой система будет создавать файлы логирования


MYBPM_ZOOKEEPER_SERVERS, MYBPM_ZOO_AUTH_..., MYBPM_ZOO_CONF_...

Определяет параметры доступа к кластеру ZooKeeper.

На платформе MyBPM получение доступа к системе происходит с помощью CuratorFrameworkFactory. Ниже схематично показан псевдокод подключения к Zookeeper-у.

  //@formatter:off
  String connectStr = "some-zoo-host:4324,another-zoo-host:6453";

  List<AuthInfo> authInfoList = new ArrayList<>();
  authInfoList.add(new AuthInfo("Client", Base64.getDecoder().decode("U2hhcm9uLlN0b25lOmQ1Wmgxa3MwM3Q=")));
  authInfoList.add(new AuthInfo("Server", Base64.getDecoder().decode("RGVuLkJyb3duOkRaek41WE1qNEU=")));

  final ZKClientConfig zkClientConfig = new ZKClientConfig();
  zkClientConfig.setProperty("zookeeper.sasl.client", "true");
  zkClientConfig.setProperty("zookeeper.ssl.quorum.trustStore.location", "/path/to/client-truststore.jks");
  zkClientConfig.setProperty("zookeeper.ssl.quorum.trustStore.password", "very-secret");

  try (CuratorFramework client = CuratorFrameworkFactory.builder()
                                                        .connectString(connectStr)
                                                        .zkClientConfig(zkClientConfig)
                                                        .authorization(authInfoList)
                                                        .build()) {
    // working with client
  }
//@formatter:on

Где:

base64_to_text( "U2hhcm9uLlN0b25lOmQ1Wmgxa3MwM3Q=" ) равно "Sharon.Stone:d5Zh1ks03t"
base64_to_text( "RGVuLkJyb3duOkRaek41WE1qNEU="     ) равно "Den.Brown:DZzN5XMj4E"

Чтобы платформа MyBPM подобным образом подключалась к Zookeeper необходимо передать следующие п.о. (формат docker consumer):

environment:
    MYBPM_ZOOKEEPER_SERVERS: "some-zoo-host:4324,another-zoo-host:6453"
    MYBPM_ZOO_AUTH_001: "Client : U2hhcm9uLlN0b25lOmQ1Wmgxa3MwM3Q="
    MYBPM_ZOO_AUTH_002: "Server : RGVuLkJyb3duOkRaek41WE1qNEU="
    MYBPM_ZOO_CONF_001: "zookeeper.sasl.client = TXT: true"
    MYBPM_ZOO_CONF_002: "zookeeper.ssl.quorum.trustStore.location = Base64_to_File: h34b2j4b234=="
    MYBPM_ZOO_CONF_003: "zookeeper.ssl.quorum.trustStore.password = TXT: very-secret"

Здесь представьте, что h34b2j4b234== - это Base64 код содержимого файла /path/to/client-truststore.jks.

Далее детальное описание п.о.:

MYBPM_ZOOKEEPER_SERVERS

Определяет список серверов кластера ZooKeeper.

Возможные значения п.о.:

Разделённый запятыми последовательности хост:порт
MYBPM_ZOO_AUTH_...

Определяет параметры авторизации. Платформа MyBPM считывает все п.о., которые начинаются на MYBPM_ZOO_AUTH_ и каждую превращает в объект класса AuthInfo (этот класс имеется в примере кода выше). Все эти объекты складывает в массив и передаёт коду обеспечения доступа к Zookeeper (он находиться внутри класса CuratorFramework - это показано на примере кода выше).

Класс авторизации содержит два поля:

public class AuthInfo {
    final String scheme;  // схема авторизации
    final byte[] auth;    // данные для авторизации
}

Эти поля заполняются из значения п.о., которое должно иметь конкретный формат, а именно:

<schema> : <base64-код>

Где:

<schema> - это текст содержащий схему авторизации, и он передаётся в поле AuthInfo.scheme.

<base64-код> - это текст, представляющий собой Base64-код массива байтов, который передаётся в поле AuthInfo.auth.

MYBPM_ZOO_CONF_...:

Определяет конфигурацию подключения к Zookeeper-у. Платформа MyBPM считывает все п.о., начинающиеся с префикса MYBPM_ZOO_CONF_, и каждое значение превращает в пару ключ-значение. Потом эти пары передаются объекту класса ZKClientConfig с помощью метода setProperty(...) - тем самым определяя конфигурацию доступа. На примере кода выше это показано.

Формат значения данных п.о. следующий:

<имя-параметра> = <ТИП> : <значение-параметра>

Где:

<имя-параметра> - текст, представляющий имя параметра, который передаётся в качестве ключа в метод setProperty(...) первым аргументом.

<ТИП> - текст, представляющий тип значения. Может иметь следующие варианты: TXT, Base64_To_File - ниже описаны их значения.

<значение-параметра> - тест, который используется в зависимости от типа. Пробелы всегда обрезаются с обеих сторон.

Если <ТИП> == 'TXT', то это обозначает, что <значение-параметра> нужно передать в качестве значения в метод setProperty(...) вторым аргументом.

Если <ТИП> == 'Base64_To_File', то это обозначает, что <значение-параметра> должно представлять собой Base64-код содержимого некого файла. Платформа MyBPM возьмёт этот Base64-код, превратит его в массив байт, и сохранит во временный файл. А в качестве значения в метод setProperty(...) вторым аргументом подставит абсолютный путь к этому файлу. После этого система авторизации внутри класса CuratorFramework сможет получить к нему доступ и использовать по назначению.

ПРИМЕЧАНИЕ

Иногда для доступа к Zookeeper-у необходимо при запуске Java-машины определить параметр:

-Djava.security.auth.login.config=/path/to/zookeeper-jaas.conf

Для этого можно использовать п.о. MYBPM_SYSTEM_PROPERTY_ (его описание ищите на этой странице)


MYBPM_KAFKA_SERVERS, MYBPM_KAFKA_CON_...

Определяют параметры доступа к кафке.

Возможные значения для MYBPM_KAFKA_SERVERS:
Разделённый запятыми последовательности хост:порт

Определяет список серверов кластера Kafka. Эта переменная присваивается параметру

bootstrap.servers

В списке параметров доступа к Кафке как для поставщика данных (Producer) так и для потребителя данных (Consumer).

Например, для подключения к Кафке в виде поставщика данных можно воспользоваться кодом:

void someMethod() {
    Map<String, Object> prop = new HashMap<>();

    prop.put("bootstrap.servers", "localhost:13113"); // Вот сюда вставляется значение из п.о. MYBPM_KAFKA_SERVERS
    prop.put("key.serializer", StringSerializer.class.getName());
    prop.put("value.serializer", StringSerializer.class.getName());
    prop.put("request.timeout.ms", "5000");
    prop.put("max.block.ms", "5000");
    prop.put("metadata.fetch.timeout.ms", "5000");
    prop.put("enable.auto.commit", "false");
    prop.put("acks", "all");

    try (KafkaProducer<String, String> producer = new KafkaProducer<>(prop)) {
        // working with producer ...
    }
}

В этом коде в параметр bootstrap.servers вставляется значения из п.о. MYBPM_KAFKA_SERVERS. Остальные параметры платформа MyBPM генерирует по другой логике, в зависимости от ситуации.

Может случиться так, что доступ к Кафке предоставляется через безопасное соединение, и тогда Java-код должен выглядеть примерно так:

  void libraryMethod() {
    // ....
    Map<String, Object> prop = new HashMap<>();

    prop.put("key.... "); // (здесь параметры не связанные с доступом)

    prop.put("bootstrap.servers", "localhost:13113");

    prop.put("sasl.mechanism", "PLAIN");
    prop.put("security.protocol", "SASL_SSL");
    prop.put("ssl.truststore.location", "/some/path/to/existing/file/client.truststore.jks");
    prop.put("ssl.truststore.password", "111222");
    prop.put("sasl.jaas.config", "org.apache.kafka.common.security.plain.PlainLoginModule" +
            " required serviceName=\"Kafka\" username=\"alice\" password=\"alice-secret\";");

    try (KafkaProducer<String, String> producer = new KafkaProducer<>(prop)) {
        // working with producer ...
    }
}

Т.е. нужно передать дополнительные параметры. Притом есть параметры, которые представляют путь к существующему файлу. Этот файл нужно подготовить, передать на сервер, и указать к нему путь.

Значения MYBPM_KAFKA_CON_...

Кроме MYBPM_KAFKA_SERVERS можно ещё определить несколько дополнительных п.о. которые будут дополнительно добавляться к списку параметров доступа к Кафке.

Чтобы это сделать нужно указать несколько п.о., которые начинаются с MYBPM_KAFKA_CON_ и имеют только цифры после этого префикса, которые нужно для того, чтобы можно было указать несколько параметров с одним смыслом.

Значения у этих п.о. должны иметь вид:

<имя-параметра> = <ТИП> : <значение-параметра>

Где:

<имя-параметра> - это строка, которая будет передаваться в качестве ключа в объект prop (см. Java-код выше).

<ТИП> - одно из значений: TXT или Base64_to_File

<значение-параметра> - строка, которая будет обрабатываться в зависимости от <ТИП>-а.

Если <ТИП> = TXT, то это обозначает, что <значение-параметра> будет переходить в prop как есть - один-к-одному.

Если <ТИП> = Base64_to_File, то это обозначает, что <значение-параметра> должно представлять собой код Base64. Система возьмёт этот код Base64, превратит его в последовательность байт, и сохранит его во временный файл. А в объект prop будет передана строка с абсолютным путём к этому файлу.

Таким образом Вы можете передать файл, не имея доступа к серверу.

Другими словами Вы можете сделать так:

Получите из Вашего файла код Base64, например командой:

base64 -w0 имя_исходного_файла > имя_файла_где_будет_сохранён_base64

Допустим у Вас получился код (Ваш код может быть значительно длинней):

4kjh32b454/534b256k45b64l3b21434==

Этот код передайте в переменную окружения следующим образом (здесь использован синтаксис docker compose):

environment:
    MYBPM_KAFKA_CON_004:  "ssl.truststore.location = Base64_to_File:4kjh32b454/534b256k45b64l3b21434=="

И тогда в объект prop прилетит параметр с ключом ssl.truststore.location и значением некого абсолютного пути к файлу, содержимое которого будет соответствовать указанному Вами коду Base64.

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

/ssl/client.truststore.jks

И указать переменную окружения:

environment:
    MYBPM_KAFKA_CON_004:  "ssl.truststore.location = TXT:/ssl/client.truststore.jks"

Путь будет скопирован в объект prop как есть - один-к-одному.


MYBPM_MONGO_SERVERS, MYBPM_MONGO_DB, MYBPM_MONGO_USER, MYBPM_MONGO_PASS

Параметры доступа к кластеру MongoDB

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

Если MYBPM_MONGO_SERVERS НЕ содержит подстроку '://', то строка доступа к кластеру определяется по следующей схеме:

Если MYBPM_MONGO_USER определено и НЕ пустое, то получается следующая строка доступа:

mongodb://${MYBPM_MONGO_USER}:${MYBPM_MONGO_PASS}@${MYBPM_MONGO_SERVERS}/${MYBPM_MONGO_DB}

Если MYBPM_MONGO_USER НЕ определено или пустое, то получается такая строка доступа:

mongodb://${MYBPM_MONGO_SERVERS}/${MYBPM_MONGO_DB}

Притом /${MYBPM_MONGO_DB} добавляется только в том случае, если MYBPM_MONGO_DB определено и НЕ пустое.

В приведённых обозначениях подстановка делается по синтаксису интерпретатора bash, т.е. в место ${HI} подставляется значение переменной окружения HI

Если MYBPM_MONGO_SERVERS содержит подстроку '://', то для доступа к кластеру MongoDB используется только данное значение. Переменные окружения MYBPM_MONGO_DB, MYBPM_MONGO_USER, MYBPM_MONGO_PASS будут проигнорированы.

В этом случае значение переменной окружения MYBPM_MONGO_SERVERS будет использоваться как строка доступа к MongoDB. Подробное описание данной строки доступа приводиться в официальной документации по MongoDB, а именно по ссылке:

https://www.mongodb.com/docs/manual/reference/connection-string/

Если вкратце, то шаблон значения (взятый из приведённой ссылки) может быть такой:

MYBPM_MONGO_SERVERS = mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]]

Тут квадратные скобки обозначают не обязательное значение.


MYBPM_MONGO_FILES_SERVERS, MYBPM_MONGO_FILES_DB, MYBPM_MONGO_FILES_USER, MYBPM_MONGO_FILES_PASS

Параметры доступа к кластеру MongoDB для хранения файлов

Эти п.о. используются так же как и MYBPM_MONGO_[SERVERS,USER...], но для доступа к кластеру MongoDB, в котором хранятся файлы.

Если данные п.о. не заданны, то используются переменные MYBPM_MONGO_[SERVERS,USER...] для доступа к кластеру файлов. Т.е. в таком случае файлы хранятся там, же где и остальные данные.


MYBPM_SCHEDULER_OFF

Если эта переменна установлена в yes, то шедулер не запускается


MYBPM_CACHE_REDIS_HOST_PORT

В этой переменной нужно передать хост, порт, логин и пароль разделённые двоеточием, которые указывают на сервер redis. Он будет использоваться для кэширования. Если эта переменная окружения не указана, то будет использоваться внутренний кэш на основе библиотеки caffeine.

Переменная может содержать только хост, например:

192.168.11.23

В этом случае система будет обращаться по адресу 192.168.11.23 и порту 6379

Переменная может содержать хост и порт, разделённые двоеточием, например:

redis.super.host.kz:40110

В этом случае система будет обращаться по адресу redis.super.host.kz и порту 40110

Переменная может содержать хост, порт, логин и пароль, разделённые двоеточием, например:

redis.wood.com:34089:SharonStone:4gjv321gh5v:4v::23

В этом случае система будет обращаться по адресу redis.wood.com и порту 34089 под пользователем SharonStone и паролем: 4gjv321gh5v:4v::23


MYBPM_TOPIC_SUFFIX_REFRESH

Добавление суффикса топику REFRESH

Возможные значения:
строка из латинских символов, цифр

Данная переменная окружения позволяет добавить суффикс к топику REFRESH в кафке. Если эта переменная не определена или имеет пустое значение, то топик так и называется REFRESH. Но если эта переменная равна например:

MYBPM_TOPIC_SUFFIX_REFRESH = 123

То топик REFRESH не используется, а вместо него используется топик REFRESH123.


MYBPM_ELASTIC_NUMBER_OF_REPLICAS

Количество реплик, которые есть у каждого основного шарда в ElasticSearch.

Возможные значения:
целочисленные значения

Данная переменная окружения позволяет настройку количества репликационных шардов при создании основного шарда. Если эта переменная не указана, значение по умолчанию для данной переменной окружения является 1. Если значение данной переменной окружения является:

MYBPM_ELASTIC_NUMBER_OF_REPLICAS = 2

Тогда при создании индекса, будет создано 2 репликационных шарда для основного шарда.


MYBPM_SCRIPTS_SHOW_PANEL_WITH_OLD_ELEMENTS

Открывает панель с устаревшими компонентами в редакторе скриптов.

Возможные значения:
yes,no

Старыми компонентами в скриптах пользоваться нельзя, поэтому панель для них убрана. НО... если всё-таки сильно хочется, то можно установить эту переменную окружения со значением yes и панель станет доступна


MYBPM_SYSTEM_PROPERTY_...

Задаёт системные параметры внутри виртуальной Java-машины

Возможные значения:
<имя-параметра> = <ТИП> : <значение-параметра>

Где:

<имя-параметра> - это строка, которая будет передаваться в качестве имени системного параметра

<ТИП> - одно из значений: TXT или Base64_to_File

<значение-параметра> - строка, которая будет обрабатываться в зависимости от <ТИП>-а.

Если <ТИП> = TXT, то это обозначает, что <значение-параметра> будет переходить как есть - один-к-одному. Другими словами для значения:

<имя-параметра> = TXT : <значение-параметра>

Будет устанавливаться следующее значение системного параметра:

System.setProperty( "<имя-параметра>", "<значение-параметра>" );

Если <ТИП> = Base64_to_File, то это обозначает, что <значение-параметра> должно представлять собой код Base64. Система возьмёт этот код Base64, превратит его в последовательность байт, и сохранит её во временный файл. А в системный параметр будет передана строка с абсолютным путём к этому файлу. Другими словами для значения:

<имя-параметра> = Base64_to_File : jk34hb5hjg4352hv35vj==

Будет устанавливаться следующее значение системного параметра:

System.setProperty( "<имя-параметра>", "/абсолютный/путь/к/файлу/c/содержимым/jk34hb5hjg4352hv35vj==" );

С помощью переменных, которые начинаются на MYBPM_SYSTEM_PROPERTY_ можно передать системные параметры в виртуальную машину Java - по одному параметру за одну переменную окружения. Системные параметры внутри виртуальной машины доступны с помощью функции:

System.getProperty("system.param.key")

Например, если в docker compose указать переменные окружения:

environment:
  MYBPM_SYSTEM_PROPERTY_001: "some.key = TXT: some-value"
  MYBPM_SYSTEM_PROPERTY_002: "test.config = Base64_to_File: jhkb45hj3kB254BV/24hgV355=="

То внутри Java-машины можно будет вызвать:

System.getProperty("some.key"); 

И он вернёт строку: "some-value". А если вызвать:

System.getProperty("test.config"); 

То он вернёт путь к файлу, в котором лежат байты из Base64-кода: jhkb45hj3kB254BV/24hgV355==


MYBPM_MEMORY_LIMIT

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

Возможные значения:
10Gi

Значение представляет собой целое положительное число, за которым следует единица измерения информации. Между числом и единицей измерения можно поставить пробел. А можно не ставить - писать слитно.

Единицу измерения можно не указывать - оставить одно число. В этом случае это число будет указывать количество байт.

Ниже в таблице указаны доступные единицы измерения:

Единица измерения Масштабный коэффициент Пример Что пример обозначает
(пусто) 1 3500 3 500 байтов
Ki 1024 17Ki 17 408 байтов
K 1000 17K 17 000 байтов
Mi 1024 * 1024 21Mi 22 020 096 байтов
M 1000 * 1000 21M 21 000 000 байтов
Gi 1024 * 1024 * 1024 13Gi 13 958 643 712 байтов
G 1000 * 1000 * 1000 13G 13 000 000 000 байтов
Ti 1024 * 1024 * 1024 * 1024 21Ti 23 089 744 183 296 байтов
T 1000 * 1000 * 1000 * 1000 21T 21 000 000 000 000 байтов

Разделители разрядов (точка или запятая) использовать нельзя. Если Вы хотите указать: 1.3G, то пишите 1300M

В Kubernetes данную переменную рекомендуется задать следующим образом:

# .....
spec:
  containers:
    - name: main
      image: hub.mybpm.kz/mybpm-api
      resources:
        limits:
          memory: "1Gi"
        requests:
          memory: "1Gi"
  # .....
  env:
    - name: MYBPM_MEMORY_LIMIT,
      valueFrom: { resourceFieldRef: { containerName: main, resource: limits.memory } }
# ....

Что обозначает чтение её значение из самого ограничения. Это уберёт необходимость указания одного параметра в разных местах. Подробнее об использовании этой переменной смотрите в разделе Генерация heap-dump-файлов