Подготовка окружения EVPT для облачных сред#

Общие предусловия установки EVPT для облачных сред#

Необходимо убедиться, что выполнены следующие действия:

  1. Установлен OpenShift версии 4.8 и выше (обслуживается средствами сторонних администраторов СПО).

  2. Создан проект в OpenShift, а также имеется доступ к проекту (логин, пароль пользователя с правами администратора).

  3. Установлены утилиты oc и helm (находятся в разделе помощи Command Line Tools в OpenShift) на host, с которого производится установка.

  4. OS должен быть доступен для вызова со стороны Jenkins.

Не рекомендуется установка в среде OS в случае, когда предполагается обращение к EVPT извне среды OS.

Предусловия установки в OS#

  1. Установить пакеты или проверить, что пакеты установлены: Java, Unzip, Ansible, Helm (необходимо установить на сервер, с которого будет производиться установка).

  2. Создать сертификаты по инструкции.

  3. Убедиться, что получены дистрибутивы компонента. Состав дистрибутивов описан в разделе Состав дистрибутива и информация о дистрибутиве EVPT.

  4. Перед началом установки под пользователем с правами администратора, с host, с которого производится установка, необходимо авторизоваться в OpenShift:

oc login <cluster_url>
  1. Выбрать проект в OS:

oc project <project_name>
  1. Создать сервисного пользователя:

oc create sa <service_user_name>
  1. Выдать созданному пользователю права, достаточные для запуска сценариев:

oc policy add-role-to-user <role_name> system:serviceaccount:<project_name>:<service_user_name>

, где <role_name> — роль, имеющая права на запуск/создание приложений в OS. Имя роли необходимо получить у администраторов OS.

  1. Создать секрет для скачивания образов:

oc create secret docker-registry
  <pull_secret_name> \
  --docker-server=<registry_server> \
  --docker-username=<username> \
  --docker-password=<password> \
  --docker-email=unused
  1. Привязать созданный секрет к созданному сервисному пользователю:

oc secrets link default <pull_secret_name> --for=pull,mount
  1. Получить токен сервисного пользователя для использования в inventory:

oc sa get-token <service_user_name>

Предусловия установки с помощью Jenkins Job#

Для установки необходимо создать и настроить Jenkins Job. Подрообнее описано в подразделе «Создание Jenkins Job для автоматической установки EVPT для облачных сред».

Необходимо убедиться, что выполнены следующие действия:

  1. OpenShift доступен для вызова со стороны Jenkins.

  2. Настроен доступ в Jenkins и созданы необходимые сущности в нем. Подробнее в разделе Установка EVPT для облачных сред, подраздел «Автоматическая установка EVPT для облачных сред с использованием Jenkins».

  3. Настроен доступ в Nexus и туда должен быть помещен дистрибутив EVPT.

  4. Настроен доступ в BitBucket и создан в нем проект для помещения скриптов развертывания из дистрибутива (./EVPT-scripts-[version]-distrib.zip), подробнее в подразделе «Получение скриптов развертывания Ansible для EVPT».

Получение скриптов развертывания Ansible для EVPT#

Скачать и разархивировать дистрибутив ./EVPT-scripts-[version]-distrib.zip, содержащий ansible роли (каталог Ansible) и Jenkins скрипты (каталог Pipeline).

  • При установке с помощью ansible: поместить содержимое директории Ansible на сервер, с которого будет производиться установка.

  • При установке через Jenkins: поместить директории Ansible и Pipeline в корень Git-репозитория, данный репозиторий указать в настройках Jenkins job.

Настройка inventory для EVPT для облачных сред#

  1. Создать директорию в папке inventories Git-репозитория, задать название директории и параметры.

Пример настроек находится в папке !EXAMPLE_OS! (внутри папки Inventories).

  1. В созданной папке должны содержаться следующие элементы:

group_vars/all — директория, в которой лежат файл vars и файл vault;

ssl — директория с сертификатами;

inventory — файл, где прописываются группы host, на которых будут выполняться playbooks.

Пример структуры репозитория:

├── ...
├── files
├── inventories
│   ├── !EXAMPLE_OS!
│   │   ├── group_vars
│   │   │   └── all
│   │   │       ├── vars.yml
│   │   │       └── vault.yml
│   │   ├── ssl
│   │   │   └── vaultclient.jks
│   │   │
│   │   └── inventory
│   │
│   ├── [новая директория]
│   │   ├── group_vars
│   │   │   └── all
│   │   │       ├── vars.yml
│   │   │       └── vault.yml
│   │   ├── ssl
│   │   │   └── vaultclient.jks
│   │   │
│   │   └── inventory
├── roles
│   │   ...
├── ansible.cfg
├── ***.yml
├──...
  1. Параметр для заполнения файла inventory необходимо использовать из папки !EXAMPLE_OS!.

Параметр:

localhost ansible_connection=local
  1. Заполнить файлы в директории group_vars/all. Файл vars.yml заполнить по аналогии с имеющимися примерами vars.yml в папке !EXAMPLE_OS!.

Ознакомиться с примером заполненного файла vars.yml можно в подразделе «Пример заполненного файла vars.yml для EVPT для облачных сред».

  1. Продолжить заполнение файлов в директории group_vars/all. Файл vault.yml содержит пароли в зашифрованном виде.

Шифровать пароли можно используя механизм ansible-vault. Ознакомиться с инструкцией можно в разделе Использование ansible-vault для шифрования паролей.

  1. Подложить используемые сертификаты в директорию ssl.

Создание Jenkins Job для автоматической установки EVPT для облачных сред#

Настройка credentials для Ansible-Vault#

  1. Создать файл с паролем, с помощью которого при автоматической установке будут расшифровываться пароли, зашифрованные через ansible-vault в параметрах vars выбранного inventory.

NewFile

  1. Зайти в Jenkins в свой проект, перейти во вкладку «Credentials», далее выбрать ваш проект:

Jenkins

  1. Открывается страница, где необходимо выбрать «Global credentials (unrestricted)»:

Jenkins

  1. Далее перейти во вкладку «Add Credentials»:

Jenkins

  1. После перехода будут доступны поля для заполнения:

  • «Kind» — в выпадающем списке выбрать параметр Secret file;

  • «File» — загрузить созданный файл с паролем;

  • «ID» — указать наименование, которое придумываете самостоятельно (данный ID необходимо будет указать в Jenkins Job в параметре vault_cred);

  • «Description» — необязательное поле, в котором можно добавить описание.

  1. Нажать кнопку Create — Credentials для Vault созданы:

Jenkins

Создание Jenkins Job для установки#

  1. Содержимое дистрибутива ./EVPT-scripts-[version]-distrib.zip поместить в Git-репозиторий.

  2. Выбрать в Jenkins New Item для создания нового Jenkins Job:

NewItem

2.1. Добавить название создаваемого Jenkins Job. Нельзя использовать в названии русские буквы, спецсимволы (название может быть любым, например, scheduler).

2.2. Выбрать Pipeline и нажать кнопку «ОК»:

NewItem_create

2.3. На появившейся странице необходимо заполнить поля в блоке Pipeline:

  • Изменить значение параметра „Definition“ на «Pipeline script from SCM»;

  • Изменить значение параметра SCM на «Git»;

  • Заполнить параметр „Repository URL“, в параметре указать путь до вашего Git-репозитория;

  • Заполнить параметр „Credentials“, в параметре указать ваши Credentials с правами на чтение;

  • В параметре „Branches to build“ выбрать ветку, в которой находятся скрипты;

  • В параметре „Script Path“ указать путь до groovy-скрипта: «Pipeline/scheduler_os.groovy».

  • Убедиться, что НЕ стоит галочка Lightweight checkout.

  1. Сохранить получившийся Jenkins Pipeline.

  2. На появившейся странице в меню боковой панели выбрать «Собрать сейчас». Запускается первоначальная сборка:

Now

  1. Необходимо обновить страницу.

  2. Затем выбрать в меню боковой панели «Собрать с параметрами»:

Params

  1. На появившейся странице необходимо заполнить следующие параметры и нажать кнопку «Собрать»:

  • jenkins_slave – имя агента Jenkins для сборки;

  • ansible_version – указание Jenkins Tool с необходимой версией Ansible. Конкретное значение необходимо получить у администратора Jenkins.

  1. Необходимо обновить страницу и после окончания работы Jenkins Job снова нажать «Собрать с параметрами».

  2. Появится страница со всем списком настраиваемых параметров, отвечающих за установку EVPT:

Параметры для установки на OS:

  • job_config_renew – отвечает за обновление Jenkins Job. При установке приложения должен быть выключен (false). Для обновления текущих параметров и сохранения значений по умолчанию должен быть включен (true);

  • inventory – имя inventory для установки;

  • nexusHelmUrl – ссылка на дистриутив EVPT-cfg-[version]-distrib.zip установки компонента в OS. Для скачивания дистрибутива используется параметр nexus_user_cred;

  • nexusUrl – ссылка на конфигурационный дистрибутив. Для скачивания дистрибутива используется параметр nexus_user_cred. Если поле остается пустым, то устанавливаются все EVPT, описанные в inventory;

  • tags – cписок тегов. При пустом значении выполняется установка или обновление EVPT. При теге uninstall выполняется удаление EVPT;

  • custom_vault_password - проверка, нужен ли ручной ввод пароля для Ansible Vault;

  • jenkins_slave — выбор Jenkins slave;

  • ansible_branch — ветка скриптов развертывания;

  • ansible_version — указание Jenkins Tool с необходимой версией Ansible. Конкретное значение необходимо получить у администратора Jenkins;

  • jdk_tool — указание Jenkins Tool с необходимой версией JDK. Конкретное значение необходимо получить у администратора Jenkins;

  • nexus_user_cred — Jenkins username with password credential ID для выкачивания дистрибутива. При задании secman_url – полный путь в HashiCorp Vault до пользователя и пароля. Например: {Jenkins *vault app role* credential ID для получения секретов из SecMan}|path/to/nexus:{user},{password}.

  • vault_cred — Jenkins secret file credential ID со строкой для расшифровки паролей (ansible vault) (несколько через запятую); При задании secman_url – полный путь в HashiCorp Vault до пароля. Например: {Jenkins *vault app role* credential ID_1}|/path/to/vault:{password_1}, {Jenkins *vault app role* credential ID_2}|/path/to/vault:{password_2}.В качестве пароля можно использовать не строку, а файл в base64 формате с ключом секрета, заканчивающимся на Base64, например, myVaultBase64.

  • secman_url — URL для подключения к HashiCorp Vault;

  • ssl_verify — проверяем, являются ли сертификаты HashiCorp Vault/Nexus доверенными;

  • second_hand_approve — подтверждение запуска другим администратором (контроль «второй рукой»). Двухэтапное подтверждение запуска, требующее действия другого администратора для запуска задания Jenkins Job. При активации этой опции одному администратору будет недоступна возможность запуска задания Jenkins Job без подтверждения со стороны другого администратора;

  • helmCliVersion — версия helm;

  • inventories_repo, inventories_branch, inventories_path — необязательные параметры. Выкачивание inventory из стороннего репозитория.

Успешным результатом работы Jenkins job будет запущенный EVPT на hosts, указанных в inventory.

Создание Jenkins Job db_action#

Задание Jenkins db_action используется для настройки базы данных.

  1. Выбрать в Jenkins New Item для создания нового Jenkins Job:

NewItem

1.1. Выбрать Pipeline и нажать кнопку ОК:

NewItem_create

1.2. На появившейся странице необходимо заполнить поля в блоке Pipeline поля:

  • Изменить значение параметра «Definition» на Pipeline script from SCM;

  • Изменить значение параметра «SCM» на Git;

  • Заполнить параметр «Repository URL», в параметре указать путь до вашего Git-репозитория;

  • Заполнить параметр «Credentials», в параметре указать ваши сredentials с правами на чтение;

  • В параметре «Branches to build» выбрать ветку, в которой находятся скрипты;

  • В параметре «Script Path» указать путь до groovy-скрипта Pipeline/db_action.groovy;

  • Убедиться, что НЕ стоит галочка Lightweight checkout.

  1. Сохранить получившийся Jenkins Pipeline.

  2. На появившейся странице в меню боковой панели выбрать «Собрать сейчас». Запустится первоначальная сборка:

Now

  1. Необходимо обновить страницу.

  2. Выбрать в меню боковой панели «Собрать с параметрами»:

Params

  1. На появившейся странице необходимо заполнить следующие параметры и нажать кнопку «Собрать»:

  • job_config_renew — отвечает за обновление Jenkins Job. Для обновления текущих параметров и сохранения значений по умолчанию должен быть включен (true).

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

  1. Необходимо обновить страницу и после окончания работы Jenkins Job снова нажать «Собрать с параметрами».

  2. Появится страница со всем списком настраиваемых параметров:

  • job_config_renew — перенастройка задания Jenkins. Данный параметр используется, если был добавлен новый inventory. Меняет значения по умолчанию всех параметров. Сохраняет предыдущее состояние параметров inventories_repo, inventories_branch, inventories_path;

  • inventory — имя inventory для установки;

  • nexusUrl — полный путь до дистрибутива (можно указать несколько через запятую);

  • db_action — выбор действия, которое необходимо выполнить: update;

  • jenkins_slave — выбор jenkins slave;

  • jdk_tool — указание Jenkins Tool с нужной версией JDK, конкретное значение необходимо получить у администратора Jenkins;

  • ansible_branch — используется для работы с несколькими ветками скриптов развертывания. Работает только при значении Branch Specifier (blank for „any“) равным ${ansible_branch};

  • ansible_version — указание Jenkins Tool с необходимой версией Ansible. Конкретное значение необходимо получить у администратора Jenkins;

  • nexus_user_cred — ID credential типа username with password для выкачивания дистрибутива компонента из Nexus. Чтобы получить username и password для Nexus из SecMan, необходимо заполнить параметр secman_url в формате: JenkinsCredID |SecManPath:SecManKeys|SecManParams, где:

    • JenkinsСredID — Jenkins Vault App Role Credential ID c реквизитами для подключения к SecMan;

    • SecManPath — путь к секретам в SecMan;

    • SecManKeys — имена полей для username и password в SecMan (через запятую);

    • SecManParams — параметры для подключения к SecMan (через точку с запятой). Если данные параметры по умолчанию, то пропускаются вместе с «|». Примеры:

      • SecManAppRoleCred|/CI01994970_CI02618129_ES/A/DEV/APP/JEN/KV/nexus:username,password

      • SecManAppRoleCred|/CI01994970_CI02618129_ES/A/DEV/APP/JEN/KV/nexus:username,password|engineVersion:2

  • vault_cred — ID credential типа secret file со строкой для расшифровки паролей ansible vault (можно указывать несколько через запятую). Чтобы получить ansible vault password из SecMan, необходимо заполнить параметр secman_url в формате: JenkinsСredID|SecManPath:SecManKey|SecManParams, где:

    • JenkinsСredID — Jenkins Vault App Role Credential ID с реквизитами для подключения к SecMan;

    • SecManPath — путь к секрету в SecMan;

    • SecManKey — имя поля для ansible vault password в SecMan;

    • SecManParams — параметры для подключения к SecMan (через точку с запятой). Если данные параметры по умолчанию, то пропускаются вместе с «|» (в качестве пароля можно использовать не строку, а файл в base64 формате и секрет в SecMan с именем, оканчивающимся на «Base640», например: myVaultBase64). Примеры:

      • SecManAppRoleCred|/CI01994970_CI02618129_ES/A/DEV/APP/JEN/KV/vault:ansible_vault_password

      • SecManAppRoleCred|/CI01994970_CI02618129_ES/A/DEV/APP/JEN/KV/vault:ansible_vault_password|engineVersion:2

      • SecManAppRoleCred1|/CI01994970_CI02618129_ES/A/DEV/APP/JEN/KV/vault:ansible_vault_password1,SecManAppRoleCred2|/CI01994970_CI02618129_ES/A/DEV/APP/JEN/KV/vault:ansible_vault_password2

      • SecManAppRoleCred1|/CI01994970_CI02618129_ES/A/DEV/APP/JEN/KV/vault:ansible_vault_password1|engineVersion:2,SecManAppRoleCred2|/CI01994970_CI02618129_ES/A/DEV/APP/JEN/KV/vault:ansible_vault_password2|engineVersion:2

  • secman_url — URL для подключения к HashiCorp Vault;

  • ssl_verify — проверка, являются ли сертификаты HashiCorp Vault/Nexus доверенными;

  • second_hand_approve — подтверждение запуска другим администратором (контроль «второй рукой»). Двухэтапное подтверждение запуска, требующее действия другого администратора для запуска задания Jenkins Job. При активации этой опции одному администратору будет недоступна возможность запуска задания Jenkins Job без подтверждения со стороны другого администратора;

  • inventories_repo — репозиторий с inventory (ssh://);

  • inventories_branch — ветка репозитория;

  • inventories_path — путь до inventories от корня репозитория.

Пример заполненного файла vars.yml для EVPT для облачных сред#

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

Базовый файл для OS#

Базовый файл — файл Ansible/inventories/!EXAMPLE_OS!/group_vars/all/vars.yml, содержащий минимум настроек для корректной установки приложения.

Пример заполненного базового файла vars.yml:

openshift_url: https://api.example.ru:6443 # Адрес подключения к openshift
openshift_token: "{{ token }}" # токен подключения к openshift
openshift_namespace: _PLACEHOLDER_ # наименование пространства в openshift

scheduler: # В OpenShift/Kubernetes
  name: example # Суффикс деплоймента. !!! Только строчные буквы, цифры и знак минус. Иначе будет ошибка и деплоймент не сработает !!!
  registry: "registry" # Адрес репозитория до образа~~
  registry_path: "path/to" # Путь в репозитории
  replicas: 2   # Количество реплик
  pullImage: "TUZ"   # ТУЗ для подключения к репозиторию образов
  healthCheckPort: 8081   # Порт проверки состояния доступности приложения
  jvmArgs: "-noverify -XX:+AlwaysPreTouch -XX:+AlwaysActAsServerClassMachine -XX:+UseContainerSupport"   # Дополнительные аргументы JVM
  #resources:   # Пример переопределения дефолтных ресурсов
  #  limits: # Ресурсы для лимитов
  #    cpu: 10.5  # Устанавливаемый лимит для CPU
  #    memory: 1600000M # Устанавливаемый лимит для памяти
  #  requests: # Ресурсы для запросов
  #    cpu: 10.3 # Запрашиваемое CPU
  #    memory: 1400000M # Запрашиваемая памяти
  # Аннотации для Deployment
  annotations:
    "sidecar.istio.io/inject": "false" # Включение/выключение интеграции с Сервисным прокси SVPX/ istio
  serviceAccountName: sa-fpss # Имя serviceAccount используемое для развертывания EVPT
  #  cluster: # Настройки akka кластера
  #    management:
  #      port: 8082
  #    remote:
  #      port: 8002
  #    timeoutes:
  #      unstable: "120s"
  #      init: "15s"
  #      join: "120s"
  scheduler:
    port: "8092" # Порт на котором запускается EVPT
    logLevel: "info" # Уровень логирования трансформации сообщений
    parallel: 1  # Количество параллельных потоков обработки для одного экземпляра приложения
  pekko:   # Общие параметры для системы акторов
    logger:     # Параметры логирования акторов
      startupTimeout: "30s"       # Таймаут инициализации системы логирования акторов
  routeHostName: apps.example.ru # Host создаваемого route
  audit:
    audit.service.type: log     # Логирование событий

Расширенный файл настроек для OS#

Расширенный файл — файл Ansible/roles/scheduler_os/defaults/main.yml. Представляет из себя пример всех изменяемых настроек со значениями «по умолчанию». Любую из указанных настроек можно перенести в свой vars.yml для переопределения ее значения.

При использовании HashiCorp Vault необходимо выбрать один из вариантов получения сертификатов.

Ниже представлен вариант выпуск сертификата через «PKI Engine HashiCorp Vault».

Данный файл подразумевает включение всех блоков для работы с EVPT:

#helm_cli: helm # путь до helm
#kubeconfig_path: /home/user/kubeconfig # путь до файла kubeconfig (может быть зашифрован через ansible-vault)
api_url: https://api.example.ru:6443 # URL API openshift/k8s (не требуется при наличии kubeconfig_path)
token: __PLACEHOLDER__ # токен пользователя (сервис аккаунта) для установки (не требуется при наличии kubeconfig_path)
skip_tls_verify: false # игнорировать проверку доверия для URL API (не требуется при наличии kubeconfig_path)
namespace: my-evpt-namespace # наименование проекта в openshift/k8s

ansible_no_log: true # Маскирование сенситивных сообщений в ansible
scheduler:
  name: example # Суффикс деплоймента !!! Только строчные буквы, цифры и знак минус. Иначе будет ошибка и деплоймент не сработает !!!
  openshiftInstall: true # Установка в openshift (true) или в k8s (false)
  registry: "registry"   # Адрес репозитория до образа
  registry_path: "path/to"   # Путь в репозитории
  pullImage: "TUZ"   # ТУЗ для подключения к репозиторию образов
  serviceAccountName: sa-fpss # Имя serviceAccount используемое для развертывания EVPT
  replicas: 1   # Количество реплик
  # Параметры healthCheck
  healthCheck:
    healthCheckPort: 8080 # Порт проверки состояния доступности приложения
    changeLoggersAvailable: false # Возможность изменения уровня незаданных в logback логеров
    changeRootAvailable: false # Возможность изменения уровня root логера
  # Ожидание старта Vault Sidecar, при наличии аннотации "vault.hashicorp.com/agent-inject" со значением true
  waitVault: true
  # Ожидание старта Istio Sidecar, при наличии аннотации "sidecar.istio.io/inject" со значением true
  waitIstio: true
  #jvmArgs: ""   # Дополнительные аргументы JVM
  # Пример переопределения парамметров readinessProbe
  #readinessProbe:
  #  initialDelaySeconds: 30
  #  timeoutSeconds: 10
  #  periodSeconds: 10
  #  successThreshold: 1
  #  failureThreshold: 20
  # Пример переопределения парамметров livenessProbe
  #livenessProbe:
  #  initialDelaySeconds: 40
  #  timeoutSeconds: 10
  #  periodSeconds: 10
  #  successThreshold: 1
  #  failureThreshold: 20

  # FeatureToggle для включения/отключения антитенантности (pod anti-affinity)
  # Если значение установлено в true, то антитенантность будет применена к подам,
  # чтобы они не размещались на одном узле (node).
  # Значение по умолчанию: true
  feature:
    SelfAntiAffinity:
      enabled: true

  rollingUpdate:
    maxUnavailable: 25% # Максимальное количество недоступных подов во время обновления
    maxSurge: 25% # Максимальное количество дополнительных подов во время обновления

  # Пример переопределения дефолтных ресурсов
  #resources:
  #  limits: # Ресурсы для лимито
  #    cpu: 10.5 # Устанавливаемый лимит для CPU
  #    memory: 1600000M # Устанавливаемый лимит для памяти
  #  requests: # Ресурсы для запросов
  #    cpu: 10.3 # Запрашиваемое CPU
  #    memory: 1400000M # Запрашиваемая память
  annotations: {}   # Аннотации для Deployment
  labels: {} # Лейблы для Deployment, добавляются как есть
    "sidecar.istio.io/inject": "false" # Включение istio
  cluster: # Настройки pekko кластера
    scheduler:
      port: 8092
    management:
      port: 8082
    remote:
      port: 8002
    timeoutes:
      unstable: "120s"
      init: "15s"
      join: "120s"
  scheduler:
    port: "8092" # Порт на котором запускается EVPT
    logLevel: "debug"     # Уровень логирования трансформации сообщений
    parallel: 1     # Количество параллельных потоков обработки для одного экземпляра приложения
  #    ssl:
  #      truststore.location: /path/to/*.jks # Сертификат для scheduler
  #      truststore.password: __PLACEHOLDER__  # Пароль от keyStore
  #      keystore.location: /path/to/*.jks # Путь до keystore
  #      keystore.password: __PLACEHOLDER__ # Пароль keystore
  #      key.password: __PLACEHOLDER__ # Пароль для сертификата
  #      keystore.mode: 600 # Права для keystore хранилища
  #      truststore.mode: 600 # Права для truststore хранилища
  #      vault.address: https://vault.address # HashiCorp Vault URL
  #      vault.pki.role.name: test1 # Имя роли в PKI Engine
  #      vault.pki.common.name: EVPT # Common name (CN) для генерации сертификатов
  #      vault.auth.type: approle # Тип аутентификации. Доступные значения: approle, token, password, cert. Значение по умолчанию: approle
  #      vault.auth.role.id: <role_id> # Role ID для типа аутентификации approle
  #      vault.auth.secret.id: <secret.id> # Secret ID для типа аутентификации approle
  #      vault.tls.enable: "true" # Включение/выключение TLS
  #      vault.tls.keystore.location: /path/to/*.jks # Путь до keystore
  #      vault.tls.keystore.password: password # Пароль keystore
  #      vault.tls.key.password: password # Пароль ключа key
  #      vault.tls.truststore.location: /path/to/*.jks # Путь до truststore
  #      vault.tls.truststore.password: password # vault.tls.truststore.password
  #      vault.engine.version: 1 # Версия API для key-value машины. Значение по умолчанию: 1
  #      vault.secret.path: kv1/interceptor # Секретный путь для ключа, keystore и truststore паролей
  #      vault.secret.key: key # Secret key для пароля ключа
  #      vault.secret.keystore: keystore # Secret key для keystore пароля
  #      vault.secret.truststore: truststore # Secret key для truststore пароля
  environment:
    LANG: "ru_RU.UTF-8" # Язык для локализации сообщений программы
    LC_ALL: "ru_RU.UTF-8" # Устанавливает язык и локализацию для всех категорий
    LANGUAGE: "en_US:en:ru_RU.UTF-8:ru_RU:ru" # Язык для интерфейса пользователя и сообщений об ошибках

  fluentBit: # Подключение к fluentBit
    create: false
  #    logLevel: info # Уровень логирования
  #    image: fluent-bit:latest # Используемый образ fluent-bit
  #    kafka: # Настройки Kafka, в которую будут отправляться логи
  #      brokers: localhost:9092
  #      topics: logstash
  #      protocol: SSL
  #      keyFilePath: /vault/logger-key.pem
  #      certificateFilePath: /vault/logger-cert.pem
  #      caFilePath: /vault/logger-cacerts.pem
  #    extraConfig: # Опциональные парамтеры для Kafka
  #      rdkafka.queue.buffering.max.messages: 100000
  #      rdkafka.request.required.acks: 1
  #      rdkafka.ssl.key.password: <password>
  #    resources: # Опциональная настройка ресурсов для fluentBit
  #      limits:
  #        cpu: 100m
  #        memory: 200mi
  #      requests:
  #        cpu: 50m
  #        memory: 100mi

    telemetry: # Конфигурация для Open Telemetry
#    config:
#      file_format: "0.1"
#      resource:
#        attributes:
#          service.name: "<имя сервиса>"
#      propagators: [ tracecontext ]
#      tracer_provider:
#        processors:
#          - simple:
#              exporter:
#                otlp:
#                  endpoint: http://<host>:<port>
#        sampler:
#          always_on: { }

  pekko:   # Общие параметры для системы акторов
    logger:     # Параметры логирования акторов
      startupTimeout: "30s"       # Таймаут инициализации системы логирования акторов
  logback:
    level: info # Общий уровень логирования (error, debug, info, warn)
  #    loggers: # Настройка дополнительных логеров. В примере ниже указан пакет и уровень логирования
  #      - name: "org.apache.kafka"
  #        level: warn
  #      - name: "org.apache.pekko"
  #        level: debug
  #    rest: # HTTP appender для отправки логов через rest адаптер EVTA
  #      url: exampleadapter
  #      port: 8081
  #      path: /publish/ALPHA/K2_IAZCommon/Common/example/TESTA/1
  #      reconnectDelay: 10
  #      never_block: true # блокировка работы приложения при недоступности rest адаптера (при true недоставленные сообщения отбрасываются)
  #      discarding_threshold: 20 # процент свободного места в очереди отправки сообщений при достижении которого будут удаляться сообщения уровня TRACE, DEBUG, INFO
  #      queue_size: 512 # размер очереди для отправки
  #  kafka:
  #    topic: <topic_name> # Наименование топика
  #    retries: 3 # Количество переиницилизаций продюсера
  #    interval: 1000 # Интервал между переиницилизациями
  #    multiplier: 1 # Множитель интервала переинициализации
  #    properties:
  #      "bootstrap.servers": "hostname-1:9092,hostname-2:9092" # Bootstrap подключения к Apache Kafka вида host:port,host2:port2
  #      "client.id": "scheduler" # Client id для подключения
  #      "config.providers": decode # Объявление провайдера шифрования паролей. Значение не изменять
  #      "config.providers.decode.class": ru.sbt.ss.kafka.DecryptionConfigProvider # Класс провайдера шифрования паролей. Значение не изменять
  #      "config.providers.decode.param.security.encoding.key": ssl/secret.pass # Путь до файла, содержащего ключ шифрования паролей
  #      "config.providers.decode.param.security.encoding.class": ru.sbt.ss.password.BaseEncryptor # Класс шифрования паролей. Значение не изменять
  #      "security.protocol": SSL # Тип протокола подключения. Значение по умолчанию: SSL
  #      "ssl.endpoint.identification.algorithm": "" # Обязательный параметр. Значение "" не изменяемое. Отключение проверки хостнейма в сертификате, обязательно для стендов Kafka
  #      "ssl.keystore.location": "/path/to/*.jks" # Путь до хранилища сертификатов, для отправки логов в kafka
  #      "ssl.truststore.location": "/path/to/*.jks" # Путь до truststore
  #      "ssl.keystore.password": <password> Пароль от keystore
  #      "ssl.truststore.password": <password> # Пароль от truststore
  #      "ssl.key.password": <password> # Пароль для key.password

#  vaultConfigsFile: # Настройки подключения к Vault, помещаются в файл из параметра vault.properties.file
#    security.encoding.class: ru.sbt.ss.password.BaseEncryptor # Класс шифрования паролей
#    security.encoding.key: file:ssl/secret.pass # Путь до файла с ключом шифрования
#    ssl.vault.address: https:/host:port # Адрес vault-сервера
#    ssl.vault.namespace: "" # Используемое пространство в vault
#    ssl.vault.tls.enable: "true" # Включение/выключение безопасного подключения к vault
#    ssl.vault.tls.keystore.location: ssl/vault-client.jks
#    ssl.vault.tls.keystore.password: "{{ jks_password }}"
#    ssl.vault.tls.key.password: "{{ jks_password }}"
#    ssl.vault.tls.truststore.location: ssl/vault-client.jks # Хранилище доверенных сертификатов для безопасного подключения к vault
#    ssl.vault.tls.truststore.password: "{{ jks_password }}"  # Пароль от хранилища доверенных сертификатов
#    ssl.endpoint.identification.algorithm: "" # Отключение проверки хостнейма в сертификате
#    ssl.vault.auth.type: approle # Тип аутентификации
#    ssl.vault.auth.role.id: role.id # Role ID для типа аутентификации approle
#    ssl.vault.auth.secret.id: secret.id # Secret ID для типа аутентификации approle
#    ssl.vault.pki.mount: "pki" # Путь до API движка выпуска сертификатов в Vault pki
#    ssl.vault.pki.role.name: default # Имя роли в PKI Engine
#    ssl.vault.pki.common.name: EVPT-logback # Common name (CN) для генерации сертификатов
#    ssl.vault.pki.email: vasya@rambler.ru # Email для генерации сертификатов
#    ssl.keystore.location: ssl/vault-keystore.jks # Путь до keystore хранилища
#    ssl.keystore.mode: 600 # Права для keystore хранилища на файловой системе
#    ssl.truststore.location: ssl/vault-truststore.jks # Путь до truststore хранилища
#    ssl.truststore.mode: 600 # Права для keystore хранилища на файловой системе
#    ssl.vault.secret.path: kv1/certstore # Секретный путь для паролей от ключа, keystore и truststore
#    ssl.vault.engine.version: 1 # Версия API для key-value машины
#    ssl.vault.secret.key: password # Secret key для пароля от ключа
#    ssl.vault.secret.keystore: password # Secret key для пароль от keystore
#    ssl.vault.secret.truststore: password # Secret key для пароля от truststore

  routeHostName: apps.stands-vdc01.solution.sbt # Имя хоста для роута
  ingress:
    create: false
    name: ''
    hostName: '' # суффикс роута/ингресса
    ssl: false
    ingressClassName: ''
    annotations: {}
    # Openshift
    # openshift.io/host.generated: 'true'
    # haproxy.router.openshift.io/balance: roundrobin
    # Kubernetes
    # haproxy-ingress.github.io/ssl-passthrough: 'true'
    # ingress.kubernetes.io/rewrite-target: '/' # не включает endpoint в запрос (/server/clean -> /clean)
  quartz: # Дополнительные настройки quartz
    properties:  # Database properties
    org.quartz.jobStore.class: "org.выquartz.impl.jdbcjobstore.JobStoreTX" # Селектор JobStore
    org.quartz.jobStore.dataSource: "quartzDataSource" # Значением этого свойства должно быть имя одного из источников данных, определенных в файле свойств конфигурации
    org.quartz.jobStore.tablePrefix: "QRTZ_" # Строка, равная префиксу, присвоенному таблицам Quartz, которые были созданы в вашей базе данных. У вас может быть несколько наборов таблиц Quartz в одной базе данных, если они используют разные префиксы таблиц.
    org.quartz.jobStore.driverDelegateClass: "org.quartz.impl.jdbcjobstore.PostgreSQLDelegate" # Конкретный «диалект» различных систем баз данных.
    org.quartz.dataSource.quartzDataSource.driver: "org.postgresql.Driver" # Стандартная настройка библиотеки quartz
    org.quartz.dataSource.quartzDataSource.URL: "jdbc:postgresql://localhost:5432/scheduler" # URL подключения к БД
    org.quartz.dataSource.quartzDataSource.user: "user" # Пользователь для подключения к БД
    org.quartz.dataSource.quartzDataSource.password: "password" # Пароль для пользователя
    # Non-database specific properties
    org.quartz.scheduler.instanceName: "DatabaseScheduler" # Имя инстанса шедулера (будет использоваться только если имеется несколько шедулеров, работающих с одной и той же базой, тогда у них должно совпадать значение этого параметра)
    org.quartz.scheduler.instanceId: "EXAMPLE_INSTANCE" # Идентификатор инстанса шедулера (будет использоваться только если имеется несколько шедулеров, работающих с одной и той же базой, тогда у них не должно совпадать значение этого параметра. Можно использовать значение "AUTO" в качестве идентификатора экземпляра, если хотите, чтобы идентификатор был сгенерирован.)
    org.quartz.scheduler.skipUpdateCheck: "true" # Следует ли пропустить запуск быстрого веб-запроса, чтобы определить, доступна ли обновленная версия Quartz для загрузки. Если проверка будет выполнена и обновление будет найдено, оно будет указано как доступное в логах.
  # Настройки хранилища (storage)
  #  storage:
  #    type: kafka # Тип хранилища
  #    bootstrap.servers: "localhost:9092" # Адреса серверов Kafka
  #    group.id: "test-group" # Идентификатор группы
  #    auto.offset.reset: "earliest" # Поведение при сбросе смещения
  #    topic: "test" # Имя используемого топика
  # Настройки хранилища для компактного топика (storage)
  #  storage:
  #    type: compactKafka # Тип хранилища
  #    topic: "test" # Имя используемого топика
  #    timeout: 10000 # Таймаут для клиента Кафки
  #    bootstrap.servers: "localhost:9092" # Адреса серверов Kafka
  #    group.id: "test-group" # Идентификатор группы
  #    auto.offset.reset: "earliest" # Поведение при сбросе смещения

  audit:   # Параметры аудита
    audit.service.type: log  # Логирование событий

  #    Отправка событий в ТС Аудит
  #    audit.service.type: http
  #
  #    Идентификатор узла
  #    "audit.service.node.id": "hostname-1"
  #    Название инсталляции
  #    "audit.service.source.system": "source.system"
  #
  #    Параметры подключения к ТС Аудит
  #    "audit.service.url.base": "http://ext-http.audit2-http-proxy.apps.stands-vdc01.solution.sbt"
  #    "audit.service.url.event.path": "/v1/event"
  #    "audit.service.url.metamodel.path": "/v1/metamodel"
  #
  #    Параметры SSL для подключения к ТС Аудит
  #    "audit.service.ssl.enabled": "false"
  #    "audit.service.ssl.keystore": "keystore.jks"
  #    "audit.service.ssl.keystore.password": "password"
  #    "audit.service.ssl.key.password": "password"
  #    "audit.service.ssl.truststore": "truststore.jks"
  #    "audit.service.ssl.truststore.password": "password"
  #    "audit.service.ssl.protocol": "TLSv1.2"
  #    "audit.service.ssl.verify.hostname": "false"
  #
  #    Параметры метамодели событий аудита
  #    Путь до метамодели (можно не указывать, по умолчанию метамодель загружается из ресурсов приложения)
  #    "audit.service.audit.service.metamodel.path": ""
  #    Отправлять метамодель при старте приложения
  #    "audit.service.send.metamodel": "true"
  #    Переопределить module.id метамодели
  #    "audit.service.metamodel.module = Scheduler
  #    Переопределить версию метамодели
  #    "audit.service.metamodel.version = 1.0
  #
  #    Параметры переотправки событий аудита
  #    "audit.service.redelivery.enabled": "true"
  #    "audit.service.add.redelivery.headers": "true"
  #
  #    "audit.service.redelivery.buffers": "in-memory-buffer"
  #    "audit.service.redelivery.in-memory-buffer.type": "queue"
  #    "audit.service.redelivery.in-memory-buffer.max.size": "10k"
  #    "audit.service.redelivery.in-memory-buffer.clear.logger.name": "memory"

  #    ## Настройка kafka-транспорта для событий аудита
  #    audit.service.transport.type: kafka # Тип транспорта, http или kafka, по умолчанию http
  #    audit.service.metamodel.topic: metamodel-topic # Имя топика для отправки метамодели
  #    audit.service.event.topic: event-topic # Имя топика для отправки событий
  #    audit.service.kafka.bootstrap.servers: "localhost:9093" # Адреса kafka
  #    ## ОПЦИОНАЛЬНО Сериализаторы (по умолчанию org.apache.kafka.common.serialization.StringSerializer)
  #    audit.service.kafka.key.serializer: org.apache.kafka.common.serialization.StringSerializer
  #    audit.service.kafka.value.serializer: org.apache.kafka.common.serialization.StringSerializer
  #    ## ОПЦИОНАЛЬНО идентификатор клиента
  #    audit.service.kafka.client.id: audit-producer
  #    ## ОПЦИОНАЛЬНО настройки ssl
  #    audit.service.kafka.security.protocol: SSL
  #    audit.service.kafka.ssl.keystore.location: ssl/keystore.jks
  #    audit.service.kafka.ssl.keystore.password: password
  #    audit.service.kafka.ssl.truststore.location: ssl/truststore.jks
  #    audit.service.kafka.ssl.truststore.password: password
  #    audit.service.kafka.ssl.endpoint.identification.algorithm: ""

    # "audit.service.request.timeout.ms": "30000" # Максимальное время требуемое на отправку события аудита
    #  audit.service.ssl.vault.pem.trust.path: kv1/kvtrust # Путь до Key-Value секрета c доверенными сертификатами в формате PEM
    #  audit.service.ssl.vault.pem.trust.aliases: ca1, ca2 # Список ключей в секрете, содержимое которых необходимо загрузить в хранилище доверенных сертификатов
    #    Конфигурация аудита для получения сертификатов из HashiCorp Vault
    #    audit.service.ssl.keystore.location: ${vault:ssl.keystore.location} # Путь до keystore хранилища сертификата, где будет размещен сертификат сгенерированный Vault
    #    audit.service.ssl.truststore.location: ${vault:ssl.truststore.location} # Путь до truststore хранилища
    #    audit.service.ssl.keystore.mode: 600 # Права для keystore хранилища
    #    audit.service.ssl.truststore.mode: 600 # Права для truststore хранилища
    #    audit.service.ssl.vault.address: https:/host:port # HashiCorp Vault URL.
    #    audit.service.ssl.vault.pki.role.name: <role_name> # Имя роли в PKI Engine
    #    audit.service.ssl.vault.pki.common.name: <common_name> # Common name (CN) для генерации сертификатов
    #    audit.service.ssl.vault.pki.mount: "" # Путь до API движка выпуска сертификатов в Vault pki
    #    audit.service.ssl.vault.pki.email: email@example.com # Email для генерации сертификатов
    #    audit.service.ssl.vault.namespace: "" # Используемое пространство в vault
    #    audit.service.ssl.vault.auth.type: approle # Тип аутентификации в vault
    #    audit.service.ssl.vault.auth.role.id: <role_id> # Role ID для типа аутентификации approle
    #    audit.service.ssl.vault.auth.secret.id: "{{ vault_secret }}" # Secret ID для типа аутентификации approle
    #    audit.service.ssl.vault.tls.enable: "true" # Наличие защищенного соединения с HashiCorp Vault
    #    audit.service.ssl.vault.tls.truststore.location: /path/to/*.jks # Путь до truststore хранилища
    #    audit.service.ssl.vault.tls.truststore.password: "{{ jks_password }}" # Пароль от truststore хранилища
    #    audit.service.ssl.vault.engine.version: 1 # Версия API для key-value машины
    #    audit.service.ssl.vault.secret.path: path/to/certstore # Секретный путь для ключа, keystore и truststore паролей
    #    audit.service.ssl.vault.secret.key: key # Secret key для пароля ключа
    #    audit.service.ssl.vault.secret.keystore: keystore # Secret key для keystore пароля
    #    audit.service.ssl.vault.secret.truststore: truststore # Secret key для truststore пароля
    #    audit.service.ssl.vault.pem.trust.path: kv1/kvtrust # Путь до Key-Value секрета c доверенными сертификатами в формате PEM
    #    audit.service.ssl.vault.pem.trust.aliases: ca1, ca2 # Список ключей в секрете, содержимое которых необходимо загрузить в хранилище доверенных сертификатов
    #    audit.service.redelivery.memory.type: queue # Тип буфера
    #    audit.service.redelivery.memory.max.size: 100m # Максимальный размер буфера, может быть установлен в гига/мега/кило/байтах,например: 1024, 1024b, 100k, 10m, 1g, -1 для неограниченного размера
    #    audit.service.redelivery.kafka-buffer.ssl.keystore.location: ${vault:ssl.keystore.location} # Путь до keystore хранилища сертификата, где будет размещен сертификат сгенерированный Vault
    #    audit.service.redelivery.kafka-buffer.ssl.truststore.location: ${vault:ssl.truststore.location} # Путь до truststore хранилища
    #    audit.service.redelivery.kafka-buffer.ssl.endpoint.identification.algorithm: "" # Обязательный параметр. Значение "" неизменяемое. Отключение проверки хостнейма в сертификате, обязательно для стендов Kafka
    #    '"audit.service.redelivery.kafka-buffer.config.providers"': vault # Обязательно в кавычках
    #    audit.service.redelivery.kafka-buffer.config.providers.vault.class: ru.sbt.ss.kafka.VaultConfigProvider # Объявление провайдера шифрования паролей. Значение не изменять
    #    audit.service.redelivery.kafka-buffer.config.providers.vault.param.security.encoding.class: ru.sbt.ss.password.BaseEncryptor # Значение не изменяется. Используемый класс для расшифровки пароля
    #    audit.service.redelivery.kafka-buffer.config.providers.vault.param.security.encoding.key: file:path/to/encrypt.pass # Путь до файла, содержащего ключ шифрования паролей
    #    audit.service.redelivery.kafka-buffer.config.providers.vault.param.ssl.vault.address: https:/host:port # HashiCorp Vault URL.
    #    audit.service.redelivery.kafka-buffer.config.providers.vault.param.ssl.vault.tls.enable: "true" # Наличие защищенного соединения с HashiCorp Vault
    #    audit.service.redelivery.kafka-buffer.config.providers.vault.param.ssl.vault.tls.truststore.location:
    #    audit.service.redelivery.kafka-buffer.config.providers.vault.param.ssl.vault.tls.truststore.password: "{{ jks_password }}" # Пароль от truststore хранилища
    #    audit.service.redelivery.kafka-buffer.config.providers.vault.param.ssl.endpoint.identification.algorithm: "" # Обязательный параметр. Значение "" неизменяемое. Отключение проверки хостнейма в сертификате, обязательно для стендов Kafka
    #    audit.service.redelivery.kafka-buffer.config.providers.vault.param.ssl.vault.auth.type: approle # Тип аутентификации. Доступные значения: approle, token, password, cert
    #    audit.service.redelivery.kafka-buffer.config.providers.vault.param.ssl.vault.auth.role.id: <role_id> # Role ID для типа аутентификации approle
    #    audit.service.redelivery.kafka-buffer.config.providers.vault.param.ssl.vault.auth.secret.id: "{{ vault_secret }}" # Secret ID для типа аутентификации approle
    #    audit.service.redelivery.kafka-buffer.config.providers.vault.param.ssl.vault.pki.mount: "" # Путь до API движка выпуска сертификатов в Vault pki
    #    audit.service.redelivery.kafka-buffer.config.providers.vault.param.ssl.vault.pki.role.name: <role_name> # Имя роли в PKI Engine
    #    audit.service.redelivery.kafka-buffer.config.providers.vault.param.ssl.vault.pki.common.name: <common_name> # Common name (CN) для генерации сертификатов
    #    audit.service.redelivery.kafka-buffer.config.providers.vault.param.ssl.keystore.location: ${vault:ssl.keystore.location} # Путь до keystore хранилища сертификата, где будет размещен сертификат сгенерированный Vault
    #    audit.service.redelivery.kafka-buffer.config.providers.vault.param.ssl.truststore.location:${vault:ssl.truststore.location} # Путь до truststore хранилища
    #    audit.service.redelivery.kafka-buffer.config.providers.vault.param.ssl.vault.secret.path: path/to/certstore # Секретный путь для ключа, keystore и truststore паролей
    #    audit.service.redelivery.kafka-buffer.config.providers.vault.param.ssl.vault.engine.version: 1 # Версия API для key-value машины
    #    audit.service.redelivery.kafka-buffer.config.providers.vault.param.ssl.vault.secret.key: key # Secret key для пароля ключа
    #    audit.service.redelivery.kafka-buffer.config.providers.vault.param.ssl.vault.secret.keystore: keystore # Secret key для keystore пароля
    #    audit.service.redelivery.kafka-buffer.config.providers.vault.param.ssl.vault.secret.truststore: truststore # Secret key для truststore пароля
    #    audit.service.redelivery.kafka-buffer.config.providers.vault.param.ssl.vault.pki.email: email@example.com # Email для генерации сертификатов
    #    audit.service.redelivery.kafka-buffer.config.providers.vault.param.ssl.vault.namespace: "" # Используемое пространство в vault

    # Пример использования для файлового буфера:
    #    audit.service.redelivery.file-buffer.type: file # Тип буфера
    #    audit.service.redelivery.file-buffer.file.name: buffers/redelivery.txt # Используемый файл
    #    audit.service.redelivery.file-buffer.encryption.enabled: true # Включить шифрование событий
    #    audit.service.redelivery.file-buffer.encryption.class: ru.sbt.ss.password.BaseEncryptor # ОПЦИОНАЛЬНО Указать класс шифрования, по умолчанию ru.sbt.ss.password.BaseEncryptor
    #    audit.service.redelivery.file-buffer.encryption.encrypt.key: file:ssl/secret.pass # Ключ шифрования (encrypt.key)
    #    audit.service.redelivery.file-buffer.encryption.encrypt.algorithm: PBEWithHmacSHA512AndAES_256 # Алгоритм шифрования (algorithm), по умолчанию PBEWithHmacSHA512AndAES_256

istio: # настройки манифестов Istio
    peerAuthentication:
      create: false
#      name: peer-auth-0
#      mtls_mode: PERMISSIVE # UNSET (default) | DISABLE | PERMISSIVE | STRICT
    ingress:
      create: false
      hostName: '' # суффикс роута/ингресса
      #ingressClassName: ''
      annotations: {}
        # Openshift
        # openshift.io/host.generated: 'true'
        # haproxy.router.openshift.io/balance: roundrobin
        # Kubernetes
        # haproxy-ingress.github.io/ssl-passthrough: 'true' # если есть tls
        # ingress.kubernetes.io/rewrite-target: '/' # не включает endpoint в запрос (/server/clean -> /clean)
      #targetService: ''
      #targetPortName: ''
      #targetPortNumber: ''
      gateway:
        name: ingressgateway
        create: false
        selector:
          app: ingressgateway
          istio: ingressgateway
        tls:
          caCertificates: /vault/ingress/ca.pem
          mode: MUTUAL
          privateKey: /vault/ingress/key.pem
          serverCertificate: /vault/ingress/crt.pem
      service:
        create: false
        name: ingressgateway-svc
        selector:
          app: ingressgateway
          istio: ingressgateway
      virtualService:
        create: false
        name: ingress-vs
      destinationRule:
        create: false
        name: ingress-dr
#       outlierDetection:
#         consecutive5xxErrors: 5
#         interval: 5m
#         baseEjectionTime: 5m
#         maxEjectionPercent: 50
      deployment:
        create: false # создавать ли Deployment для istio ingressgateway
        readinessProbe: {}
        #  initialDelaySeconds: 1
        #  timeoutSeconds: 1
        #  periodSeconds: 2
        #  successThreshold: 1
        #  failureThreshold: 30
        name: evpt-ingressgateway
        # resources:
        #   limits:
        #     cpu: 0.1
        #     memory: 128M
        #   requests:
        #     cpu: 0.1
        #     memory: 64M
        annotations:
          sidecar.istio.io/inject: 'false'
          # # Дополнительные аннотации для граничного прокси. Здесь можно описать импорт сертификатов из vault/secman
          # vault.hashicorp.com/agent-inject-secret-ca.pem: 'true'
          # vault.hashicorp.com/secret-volume-path-ca.pem: /vault/ingress
          # vault.hashicorp.com/namespace: DEV_example
          # vault.hashicorp.com/role: role-ga-secman-eda
          # vault.hashicorp.com/secret-volume-path-key.pem: /vault/ingress
          # vault.hashicorp.com/agent-inject: 'true'
          # vault.hashicorp.com/agent-inject-secret-key.pem: 'true'
          # vault.hashicorp.com/agent-init-first: 'true'
          # vault.hashicorp.com/agent-limits-cpu: 100m
          # vault.hashicorp.com/agent-requests-cpu: 100m
          # vault.hashicorp.com/secret-volume-path-crt.pem: /vault/ingress
          # vault.hashicorp.com/agent-inject-secret-crt.pem: 'true'
          # vault.hashicorp.com/agent-inject-template-key.pem: |
          #   {%- raw %}
          #   {{- with secret "PKI/issue/role-ga-secman-eda"
          #   "common_name=evpt.eda.solution.sbt" "format=pem" "ttl=20h"
          #   "private_key_format=pkcs8" -}}
          #   {{ .Data.private_key }}
          #   {{- end }}
          #   {%- endraw %}
          # vault.hashicorp.com/agent-inject-template-ca.pem: |
          #   {%- raw %}
          #   {{- with secret "PKI/issue/role-ga-secman-eda"
          #   "common_name=evpt.eda.solution.sbt" "format=pem" "ttl=20h"
          #   "private_key_format=pkcs8" -}}
          #   {{- range $idx, $cert := .Data.ca_chain }}
          #   {{ $cert }}
          #   {{- end }}
          #   {{- end }}
          #   {%- endraw %}
          # vault.hashicorp.com/agent-inject-template-crt.pem: |
          #   {%- raw %}
          #   {{- with secret "PKI/issue/role-ga-secman-eda"
          #   "common_name=evpt.eda.solution.sbt" "format=pem" "ttl=20h"
          #   "private_key_format=pkcs8" -}}
          #   {{ .Data.certificate }}
          #   {{- end }}
          #   {%- endraw %}
        labels: {}
        #  secman-injector: enabled # лейбл для активации интеграции с secman vault agent injector
        istioDiscoveryService: istiod # название discovery сервиса панели истио к которой подключен ваш неймспейс
        istioControlPlane: control-plane-01 # название неймспейса контрольной панели истио к которой подключен ваш неймспейс
        proxyImage: image # ссылка на образ граничного прокси (IGEG)
    egress:
      deployment:
        create: false # создавать ли Deployment для istio egressgateway
        name: evpt-egressgateway
        # resources:
        #   limits:
        #     cpu: 0.1
        #     memory: 128M
        #   requests:
        #     cpu: 0.1
        #     memory: 64M
        annotations:
          sidecar.istio.io/inject: 'false'
          # # Дополнительные аннотации для граничного прокси. Здесь можно описать импорт сертификатов из vault/secman
          # vault.hashicorp.com/agent-inject-template-cert.pem: |
          #   {%- raw %}
          #   {{- with secret "A/DEV/SY/EVTD/KV/example-audit-cert" -}}
          #   {{ index .Data "cert" }}
          #   {{- end }}
          #   {%- endraw %}
          # vault.hashicorp.com/agent-inject-secret-ca.pem: 'true'
          # vault.hashicorp.com/secret-volume-path-ca.pem: /vault
          # vault.hashicorp.com/namespace: DEV_example
          # vault.hashicorp.com/role: role-ga-secman-eda
          # vault.hashicorp.com/agent-inject-secret-cert.pem: 'true'
          # vault.hashicorp.com/secret-volume-path-key.pem: /vault
          # vault.hashicorp.com/agent-inject: 'true'
          # vault.hashicorp.com/secret-volume-path-cert.pem: /vault
          # vault.hashicorp.com/agent-inject-secret-key.pem: 'true'
          # vault.hashicorp.com/agent-init-first: 'true'
          # vault.hashicorp.com/agent-limits-cpu: 200m
          # vault.hashicorp.com/agent-requests-cpu: 200m
          # vault.hashicorp.com/agent-inject-template-key.pem: |
          #   {%- raw %}
          #   {{- with secret "A/DEV/SY/EVTD/KV/example-audit-cert" -}}
          #   {{ index .Data "key" }}
          #   {{- end }}
          #   {%- endraw %}
          # vault.hashicorp.com/agent-inject-template-ca.pem: |
          #   {%- raw %}
          #   {{- with secret "A/DEV/SY/EVTD/KV/example-audit-cert" -}}
          #   {{ index .Data "ca" }}
          #   {{- end }}
          #   {%- endraw %}
        labels: {}
        #  secman-injector: enabled # лейбл для активации интеграции с secman vault agent injector
        istioDiscoveryService: istiod # название discovery сервиса панели истио к которой подключен ваш неймспейс
        istioControlPlane: control-plane-01 # название неймспейса контрольной панели истио к которой подключен ваш неймспейс
        proxyImage: image # ссылка на образ граничного прокси (IGEG)
    egressService: # параметры сервиса Egress
      #      name: "egressgateway0-svc" # имя сервиса Egress
      create: false # создавать ли манифест сервиса
    #      internalPort: 9443 # внутренний порт Egress
    #      selector: # содержимое поля spec.selector в манифесте сервиса
    #        app: egressgateway-tribe-sy-synes-dev
    #        istio: egressgateway-tribe-sy-synes-dev
    gateway: # параметры манифеста Gateway для Istio Egress
      #  name: egressgateway0-gw # имя манифеста
      create: false # создавать ли манифест
      #  selector: # содержимое поля spec.selector в манифесте
      #  istio: egressgateway-tribe-sy-synes-dev
      destinationRule:
        #     name: egressgateway0-dr
        create: false
      #      tls:
      #        mode: MUTUAL # DISABLE | SIMPLE | MUTUAL (own certs) | ISTIO_MUTUAL (control plane certs)
      #        caCertificates: /path/to/egress/certificates/ca-chain.cert.pem
      #        clientCertificate: /path/to/egress/certificates/tls.crt
      #        privateKey: /path/to/egress/certificates/tls.key
      #      outlierDetection:
      #        consecutive5xxErrors: 5
      #        interval: 5m
      #        baseEjectionTime: 5m
      #        maxEjectionPercent: 50
      # # После задания параметров перенаправления для kafka, из прикладного приложения к bootstrap серверу нужно обращаться на хост следующего формата:
  # # {название_сервиса_egressgateway}.{имя_неймспейса}.svc.cluster.local:{gwPort_для_Kafka_указываемый_ниже}
    kafka: [] # параметры для направления kafka трафика через istio egressgateway. Можно указать список bootstrap серверов Kafka
  #  - hosts: bootstrap.server1.host:9093,bootstrap.server2.host:9093 # хост и порт bootstrap серверов Kafka. Если кластер, можно указать несколько. Разделитель ","
  #    gwPort: 10092 # порт сервиса egressgateway по которому будет доступна кафка изнутри неймспейса
  #    gwTls:
  #      mode: ISTIO_MUTUAL # Валидные значения: "PASSTHROUGH", "SIMPLE", "MUTUAL", "AUTO_PASSTHROUGH", "ISTIO_MUTUAL", "OPTIONAL_MUTUAL"
  #    destinationRule: # параметры для манифеста DestinationRule Istio для Kafka
  #      create: true # создавать ли манифест
  #      outlierDetection:
  #        consecutive5xxErrors: 5
  #        interval: 5m
  #        baseEjectionTime: 5m
  #        maxEjectionPercent: 50
  #      tls:
  #        mode: MUTUAL
  #        clientCertificate: /path/to/egress/certificates/ca-chain.cert.pem
  #        privateKey: /path/to/egress/certificates/tls.crt
  #        caCertificates: /path/to/egress/certificates/tls.key
  #    virtualService: # параметры для манифеста VirtualService для Kafka
  #      create: true # создавать ли манифест
    vault: # параметры для интеграции с HashiCorp Vault
  #      host: srv-68-6.sy.dev.sbt # хост сервиса HashiCorp Vault
  #      port: 8200 # порт сервиса HashiCorp Vault
  #    externalPort: 8200 # порт сервиса HashiCorp Vault
  #    # Порты и протоколы ниже используются в манифестах VirtualService, Gateway, Gateway Service
  #    # Поддерживаемые gwSvc протоколы - "SCTP", "TCP", "UDP"
  #    gwPort: 9444 # порт на egressGateway
  #    gwProtocol: TLS # протокол на egressGateway
  #    gwSvcProtocol: TCP # протокол на service egressGateway
  #    gwTls:
  #      mode: ISTIO_MUTUAL # Валидные значения: "PASSTHROUGH", "SIMPLE", "MUTUAL", "AUTO_PASSTHROUGH", "ISTIO_MUTUAL", "OPTIONAL_MUTUAL"
      destinationRule: # параметры для манифеста DestinationRule Istio
        #        name: epf-vault-dr # имя манифеста
        create: false # создавать ли манифест
      #        tls: # параметры TLS в манифесте spec.trafficPolicy.portLevelSettings[0].tls
      #          mode: MUTUAL
      #          caCertificates: /path/to/egress/certificates/ca-chain.cert.pem
      #          clientCertificate: /path/to/egress/certificates/tls.crt
      #          privateKey: /path/to/egress/certificates/tls.key
      #          sni: vault.host
      virtualService: # параметры для манифеста VirtualService
      #      name: scheduler-vault-vs # имя манифеста
      #      protocol: http # протокол для создания virtual service. Валидные значения: http, tls, tcp
        create: false # создавать ли манифест VirtualService
    audit: # параметры для интеграции с сервисом Аудита
      #      host: ext-http.audit2-http-proxy.apps.stands-vdc01.solution.sbt # хост сервиса Аудита
      #      port: 80 # порт сервиса Аудита
      #    externalPort: 443 # порт сервиса Аудита
      #    # Порты и протоколы ниже используются в манифестах VirtualService, Gateway, Gateway Service
      #    # Поддерживаемые gwSvc протоколы - "SCTP", "TCP", "UDP"
      #    gwPort: 9443 # порт на egressGateway
      #    gwProtocol: HTTP # протокол на egressGateway
      #    gwSvcProtocol: TCP # протокол на service egressGateway
      #    gwTls:
      #      mode: ISTIO_MUTUAL # Валидные значения: "PASSTHROUGH", "SIMPLE", "MUTUAL", "AUTO_PASSTHROUGH", "ISTIO_MUTUAL", "OPTIONAL_MUTUAL"
      destinationRule: # параметры для манифеста DestinationRule Istio
        #        name: epf-audit-dr # имя манифеста
        create: false # создавать ли манифест
        # tls: # параметры TLS в манифесте spec.trafficPolicy.portLevelSettings[0].tls
        #   mode: MUTUAL
        #   caCertificates: /path/to/egress/certificates/ca-chain.cert.pem
        #   clientCertificate: /path/to/egress/certificates/tls.crt
        #   privateKey: /path/to/egress/certificates/tls.key
      virtualService: # параметры для манифеста VirtualService
        #      name: epf-audit-vs # имя манифеста
        #      protocol: http # протокол для создания virtual service. Валидные значения: http, tls, tcp
        create: false # создавать ли манифест VirtualService
    telemetry: # параметры для интеграции с OpenTelemetry
#      host: telemetry.url # хост сервиса OpenTelemetry
#      port: 80 # порт сервиса OpenTelemetry для обращения из pod'а
#      externalPort: 443 # порт сервиса OpenTelemetry
#      # Порты и протоколы ниже используются в манифестах VirtualService, Gateway, Gateway Service
#      # Поддерживаемые gwSvc протоколы - "SCTP", "TCP", "UDP"
#      gwPort: 9449 # порт на egressGateway
#      gwProtocol: HTTP # протокол на egressGateway
#      gwSvcProtocol: TCP # протокол на service egressGateway
#      gwTls:
#        mode: ISTIO_MUTUAL # Валидные значения: "PASSTHROUGH", "SIMPLE", "MUTUAL", "AUTO_PASSTHROUGH", "ISTIO_MUTUAL", "OPTIONAL_MUTUAL"
      destinationRule: # параметры для манифеста DestinationRule Istio
        name: telemetry-dr # имя манифеста
        create: false # создавать ли манифест
#        tls:
#          mode: MUTUAL
#          caCertificates: /path/to/egress/certificates/ca-chain.cert.pem
#          clientCertificate: /path/to/egress/certificates/tls.crt
#          privateKey: /path/to/egress/certificates/tls.key
#        outlierDetection:
#          consecutive5xxErrors: 5
#          interval: 5m
#          baseEjectionTime: 5m
#          maxEjectionPercent: 50
      virtualService: # параметры для манифеста VirtualService
        name: telemetry-vs # имя манифеста
        protocol: http # протокол для создания virtual service. Валидные значения: http, tls, tcp
        create: false # создавать ли манифест VirtualService

   postgres: # настройки манифестов Istio для работы с базой данных
#      - host: postgres.host # хост сервиса Postgres; указывать валидный SAN из сертификата
#        port: 5432 # порт сервиса Postgres для обращения из pod'а
#        externalPort: 5432 # порт сервиса Postgres
#        # Порты и протоколы ниже используются в манифестах VirtualService, Gateway, Gateway Service
#        # Поддерживаемые gwSvc протоколы - "SCTP", "TCP", "UDP"
#        gwPort: 9445 # порт на egressGateway
#        gwProtocol: TCP # протокол на egressGateway
#        gwSvcProtocol: TCP # протокол на service egressGateway
#        gwTls:
#          mode: ISTIO_MUTUAL # Валидные значения: "PASSTHROUGH", "SIMPLE", "MUTUAL", "AUTO_PASSTHROUGH", "ISTIO_MUTUAL", "OPTIONAL_MUTUAL"
      destinationRule:
        create: false # создавать ли манифест
#        tls:
#          mode: MUTUAL # DISABLE | SIMPLE | MUTUAL (own certs) | ISTIO_MUTUAL (control plane certs)
#          caCertificates: /path/to/egress/certificates/ca-chain.cert.pem
#          clientCertificate: /path/to/egress/certificates/tls.crt
#          privateKey: /path/to/egress/certificates/tls.key
#        outlierDetection:
#          consecutive5xxErrors: 5
#          interval: 5m
#          baseEjectionTime: 5m
#          maxEjectionPercent: 50
      virtualService: # параметры для манифеста VirtualService
        create: false # создавать ли манифест VirtualService
   # Массив serviceEntry, которые нужно создать
   # Для postgres указать протокол postgres, а не tcp
#    serviceEntry:
#      - host: my_hostname
#        port:
#          name: tcp-kafka
#          number: 9092
#          protocol: TCP
#        resolution: DNS
#        annotations: # расскомментировать если нужно чтобы serviceEntry осталась после helm uninstall
#          "helm.sh/resource-policy": keep
#      - host: my_hostname_2
#        addresses: { IP_ADDRESS }
#        port:
#          name: tcp-kafka
#          number: 9092
#          protocol: TCP
#        resolution: STATIC
#      - host: my_hostname_3
#        port:
#          name: tcp-kafka
#          number: 9092
#          protocol: TCP
#        resolution: NONE

# Файл настроек для playbook DB
db:
  host: localhost # адрес БД
  database: batch # наименовнавие БД
  schema: public # схема БД
  username: __PLACEHOLDER__ # пользователь БД
  password: __PLACEHOLDER__ # пароль БД
  ssl:
    enabled: false # включение/выключение SSL соединения
    keystore_path: ssl/test.jks # путь до keystore относительно inventory
    keystore_password: __PLACEHOLDER__ # пароль от keystore
    truststore_path: ssl/test.jks # Путь до truststore
    truststore_password: __PLACEHOLDER__ # пароль от truststore
    key: __PLACEHOLDER__ # key для truststore пароля

При необходимости раскомментировать нужные блоки.