Подготовка окружения EVPT для облачных сред#
Общие предусловия установки EVPT для облачных сред#
Необходимо убедиться, что выполнены следующие действия:
Установлен OpenShift версии 4.8 и выше (обслуживается средствами сторонних администраторов СПО).
Создан проект в OpenShift, а также имеется доступ к проекту (логин, пароль пользователя с правами администратора).
Установлены утилиты oc и helm (находятся в разделе помощи Command Line Tools в OpenShift) на host, с которого производится установка.
OS должен быть доступен для вызова со стороны Jenkins.
Не рекомендуется установка в среде OS в случае, когда предполагается обращение к EVPT извне среды OS.
Предусловия установки в OS#
Установить пакеты или проверить, что пакеты установлены: Java, Unzip, Ansible, Helm (необходимо установить на сервер, с которого будет производиться установка).
Создать сертификаты по инструкции.
Убедиться, что получены дистрибутивы компонента. Состав дистрибутивов описан в разделе Состав дистрибутива и информация о дистрибутиве EVPT.
Перед началом установки под пользователем с правами администратора, с host, с которого производится установка, необходимо авторизоваться в OpenShift:
oc login <cluster_url>
Выбрать проект в OS:
oc project <project_name>
Создать сервисного пользователя:
oc create sa <service_user_name>
Выдать созданному пользователю права, достаточные для запуска сценариев:
oc policy add-role-to-user <role_name> system:serviceaccount:<project_name>:<service_user_name>
, где <role_name> — роль, имеющая права на запуск/создание приложений в OS. Имя роли необходимо получить у администраторов OS.
Создать секрет для скачивания образов:
oc create secret docker-registry
<pull_secret_name> \
--docker-server=<registry_server> \
--docker-username=<username> \
--docker-password=<password> \
--docker-email=unused
Привязать созданный секрет к созданному сервисному пользователю:
oc secrets link default <pull_secret_name> --for=pull,mount
Получить токен сервисного пользователя для использования в inventory:
oc sa get-token <service_user_name>
Предусловия установки с помощью Jenkins Job#
Для установки необходимо создать и настроить Jenkins Job. Подрообнее описано в подразделе «Создание Jenkins Job для автоматической установки EVPT для облачных сред».
Необходимо убедиться, что выполнены следующие действия:
OpenShift доступен для вызова со стороны Jenkins.
Настроен доступ в Jenkins и созданы необходимые сущности в нем. Подробнее в разделе Установка EVPT для облачных сред, подраздел «Автоматическая установка EVPT для облачных сред с использованием Jenkins».
Настроен доступ в Nexus и туда должен быть помещен дистрибутив EVPT.
Настроен доступ в 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 для облачных сред#
Создать директорию в папке
inventoriesGit-репозитория, задать название директории и параметры.
Пример настроек находится в папке !EXAMPLE_OS! (внутри папки Inventories).
В созданной папке должны содержаться следующие элементы:
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
├──...
Параметр для заполнения файла
inventoryнеобходимо использовать из папки!EXAMPLE_OS!.
Параметр:
localhost ansible_connection=local
Заполнить файлы в директории
group_vars/all. Файлvars.ymlзаполнить по аналогии с имеющимися примерамиvars.ymlв папке!EXAMPLE_OS!.
Ознакомиться с примером заполненного файла vars.yml можно в подразделе «Пример заполненного файла vars.yml для EVPT для облачных сред».
Продолжить заполнение файлов в директории
group_vars/all. Файлvault.ymlсодержит пароли в зашифрованном виде.
Шифровать пароли можно используя механизм ansible-vault. Ознакомиться с инструкцией можно в разделе Использование ansible-vault для шифрования паролей.
Подложить используемые сертификаты в директорию
ssl.
Создание Jenkins Job для автоматической установки EVPT для облачных сред#
Настройка credentials для Ansible-Vault#
Создать файл с паролем, с помощью которого при автоматической установке будут расшифровываться пароли, зашифрованные через ansible-vault в параметрах
varsвыбранного inventory.

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

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

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

После перехода будут доступны поля для заполнения:
«Kind» — в выпадающем списке выбрать параметр Secret file;
«File» — загрузить созданный файл с паролем;
«ID» — указать наименование, которое придумываете самостоятельно (данный ID необходимо будет указать в Jenkins Job в параметре
vault_cred);«Description» — необязательное поле, в котором можно добавить описание.
Нажать кнопку Create — Credentials для Vault созданы:

Создание Jenkins Job для установки#
Содержимое дистрибутива
./EVPT-scripts-[version]-distrib.zipпоместить в Git-репозиторий.Выбрать в Jenkins New Item для создания нового Jenkins Job:

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

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.
Сохранить получившийся Jenkins Pipeline.
На появившейся странице в меню боковой панели выбрать «Собрать сейчас». Запускается первоначальная сборка:

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

На появившейся странице необходимо заполнить следующие параметры и нажать кнопку «Собрать»:
jenkins_slave– имя агента Jenkins для сборки;ansible_version– указание Jenkins Tool с необходимой версией Ansible. Конкретное значение необходимо получить у администратора Jenkins.
Необходимо обновить страницу и после окончания работы Jenkins Job снова нажать «Собрать с параметрами».
Появится страница со всем списком настраиваемых параметров, отвечающих за установку 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 используется для настройки базы данных.
Выбрать в Jenkins New Item для создания нового Jenkins Job:

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

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.
Сохранить получившийся Jenkins Pipeline.
На появившейся странице в меню боковой панели выбрать «Собрать сейчас». Запустится первоначальная сборка:

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

На появившейся странице необходимо заполнить следующие параметры и нажать кнопку «Собрать»:
job_config_renew— отвечает за обновление Jenkins Job. Для обновления текущих параметров и сохранения значений по умолчанию должен быть включен (true).
Если параметры не появились, то в настройках необходимо самостоятельно добавить приведенные параметры.
Необходимо обновить страницу и после окончания работы Jenkins Job снова нажать «Собрать с параметрами».
Появится страница со всем списком настраиваемых параметров:
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 пароля
При необходимости раскомментировать нужные блоки.