Сервис управления A/B-экспериментами.
Назначение
Configurator — центральный сервис платформы. Управляет жизненным циклом экспериментов: создание, настройка, расчёт результатов, визуализация.
Ключевые функции:
- Управление схемами и миграциями
- Отправка конфигураций экспериментов (маркеры, сегменты) в Splitter
- ETL-загрузки и аналитические запросы через Trino
- Генерация DAG-конфигов для Airflow
- API для Frontend и внешних интеграций
Деплой
Параметры инсталляции задаются в values-trisigma.yaml. Создайте файл из примера: cp values-trisigma.yaml.example values-trisigma.yaml.
values.yaml содержит значения по умолчанию — не изменяйте его напрямую, а переопределяйте нужные параметры в values-trisigma.yaml.
Параметры приложения
Образ сервиса
| Параметр | Описание |
|---|
image.repository | Образ сервиса в Container registry |
image.tag | Тег образа сервиса в Container registry |
Не используйте registry.trisigma.io напрямуюОбразы необходимо предварительно зеркалировать в ваш собственный Container Registry.
Таймзона
| Параметр | Описание |
|---|
timezone | Таймзона. IANA tz, например Europe/Moscow |
Миграции
| Параметр | Описание |
|---|
postgresqlMigrator.image.repository | Образ мигратора для PostgreSQL миграций в Container registry |
PostgreSQL
| Параметр | Описание |
|---|
postgresql.host | Хостнейм для подключения к PostgreSQL |
postgresql.port | Порт для подключения к PostgreSQL |
postgresql.database | Название БД, к которой подключается сервис |
postgresql.user | Учетная запись для подключения к PostgreSQL |
Redis (Valkey)
| Параметр | Описание |
|---|
redis.host | Хостнейм Redis/Valkey |
redis.port | Порт для подключения к Redis/Valkey |
redis.login | Учетная запись для подключения к Redis/Valkey |
ClickHouse
| Параметр | Описание |
|---|
clickhouse.hosts | Список ClickHouse-хостов в формате host:port,host:port, например ch1.example.com:9440 |
clickhouse.user | Учетная запись для подключения к ClickHouse |
clickhouse.cluster | Название кластера Clickhouse из system.clusters |
Trino
| Параметр | Описание |
|---|
trino.host | Хостнейм для подключения к Trino |
trino.port | Порт для подключения к Trino |
S3 — бакет вложений
| Параметр | Описание |
|---|
s3Attachments.host | Endpoint S3 для подключения |
s3Attachments.bucket | Имя бакета для вложений (trisigma-configurator-attachments) |
S3 — бакет аналитических данных и загрузок
| Параметр | Описание |
|---|
s3AnalyticUploads.host | Endpoint S3 для подключения |
s3AnalyticUploads.bucket | Имя бакета для ан алитики (trisigma-analytic-uploads) |
Git-репозиторий метрик
| Параметр | Описание |
|---|
repo.type | Тип репозитория: github / bitbucket / gitlab |
repo.host | URL репозитория1 |
repo.project | Проект/организация репозитория |
repo.mainBranch | Имя основной ветки репозитория |
Bitbucket
| Параметр | Описание |
|---|
repo.bitbucket.httpUrl | HTTPS URL Bitbucket-сервера для git-клона, например https://bitbucket.example.com |
Межсервисные связи
| Параметр | Описание |
|---|
splitter.url | In-cluster URL Splitter, например http://trisigma-splitter.trisigma-splitter:8890 |
airflow.apiUrl | URL Airflow API, например http://trisigma-airflow-webserver.trisigma-airflow:8080 |
airflow.configUploadUrl | URL загрузки DAG-конфигов, например http://trisigma-airflow-configs-uploader.trisigma-airflow |
frontend.url | Browser-facing URL Frontend, например https://trisigma.example.com |
Auth (OIDC)
Configurator аутентифицирует пользователей через OpenID Connect (Authorization Code flow).
| Параметр | Описание |
|---|
auth.enabled | Включение OIDC аутентификации |
auth.clientId | OAuth client ID, зарегистрированный в вашем IDP |
auth.configUrl | OIDC discovery URL |
Фоновые задачи (Crons)
| Параметр | Описание |
|---|
crons.image.repository | Образ планировщика фоновых задач в Container registry |
Для большинства кронов в сервисе выставлены рекомендуемые значения по умолчанию.
Ниже описаны кроны, для которых вам может быть необходимо переопределить расписания в зависимости от особенностей вашего окружения.
airflow_daily
Запускает в Airflow ежедневный расчёт аналитического отчёта за прошедшие сутки. Должен стартовать не раньше обновления метрик в источниках DWH, указанных в репозитории метрик; по умолчанию — в 02:00.
Воркеры
Долгоживущие процессы, отдельные от основного API:
| Воркер | Назначение |
|---|
retro-starter | Запуск ретро экспериментов |
materialized-view-refresher | Обработка очереди обновлений Materialized Views |
event-worker-pool | Обработка событий EventBus |
Секреты приложения
Секреты в приложение можно передать двумя способами:
задать значения напрямую в secrets-values.yaml —
или указать имя существующего Kubernetes Secret в поле existingSecret в чарте
(например, созданного через Vault или External Secrets Operator).
Создайте файл из примера: cp secrets-values.yaml.example secrets-values.yaml.
PostgreSQL
| Секрет | Ключ | Описание |
|---|
PGPASSWORD | postgresql.password | Пароль PostgreSQL |
Redis (Valkey)
| Секрет | Ключ | Описание |
|---|
REDIS_PASSWORD | redis.password | Пароль Redis/Valkey |
ClickHouse
| Секрет | Ключ | Описание |
|---|
CLICKHOUSE_PASSWORD | clickhouse.password | Пароль ClickHouse |
Trino
| Секрет | Ключ | Описание |
|---|
TRINO_USER | trino.user | Учётная запись для подключения к Trino |
TRINO_PASSWORD | trino.password | Пароль для подключения к Trino |
S3 — бакет вложений
| Секрет | Ключ | Описание |
|---|
S3_ATTACHMENTS_ACCESS_KEY | s3Attachments.accessKey | S3 access key для доступа к бакету trisigma-configurator-attachments |
S3_ATTACHMENTS_SECRET_ACCESS_KEY | s3Attachments.secretAccessKey | S3 secret key для доступа к бакету trisigma-configurator-attachments |
S3 — бакет аналитических данных и загрузок
| Секрет | Ключ | Описание |
|---|
S3_ANALYTIC_UPLOADS_ACCESS_KEY | s3AnalyticUploads.accessKey | S3 access key для доступа к бакету trisigma-analytic-uploads |
S3_ANALYTIC_UPLOADS_SECRET_ACCESS_KEY | s3AnalyticUploads.secretAccessKey | S3 secret key для доступа к бакету trisigma-analytic-uploads |
Git-репозиторий метрик
| Секрет | Ключ | Описание |
|---|
REPO_USER | repo.user | Учётная запись для подключения к Git-репозиторию |
REPO_TOKEN | repo.token | Токен для подключения к Git-репозиторию |
REPO_SECRET_KEY | repo.webhookSecret | Секретный ключ для подписи webhook'ов репозитория |
Межсервисные связи
| Секрет | Ключ | Описание |
|---|
SPLITTER_TOKEN | splitter.token | Токен авторизации запросов в Splitter2 |
AIRFLOW_USER | airflow.user | Учётная запись для подключения к Airflow API |
AIRFLOW_PASSWD | airflow.password | Пароль для подключения к Airflow API |
AIRFLOW_CONFIG_COPY_TOKEN | airflow.configCopyToken | Токен для загрузки DAG-конфигов в Airflow |
Auth (OIDC)
| Секрет | Ключ | Описание |
|---|
AUTH_CLIENT_SECRET | auth.clientSecret | OAuth client secret в вашем IDP |
Internal API
| Секрет | Ключ | Описание |
|---|
INTERNAL_API_KEY | internalApi.internalApiKey | Внутренний API-ключ |
EXTERNAL_API_KEY | internalApi.externalApiKey | Внешний API-ключ |
SECRET_KEY | internalApi.secretKey | Секретный ключ приложения для подписи JWT |
Лицензия
| Секрет | Ключ | Описание |
|---|
LICENSE_KEY | license.licenseKey | Лицензионный ключ Trisigma Enterprise |
Использование существующего Secret (existingSecret)
Если вы не хотите передавать значения через secrets-values.yaml — укажите название вашего собственного Secret:
kubectl create secret generic trisigma-configurator-secrets \
--from-literal=PGPASSWORD='...' \
--from-literal=REDIS_PASSWORD='...' \
--from-literal=CLICKHOUSE_PASSWORD='...' \
--from-literal=INTERNAL_API_KEY='...' \
--from-literal=EXTERNAL_API_KEY='...' \
--from-literal=SECRET_KEY='...' \
--from-literal=S3_ATTACHMENTS_ACCESS_KEY='...' \
--from-literal=S3_ATTACHMENTS_SECRET_ACCESS_KEY='...' \
--from-literal=S3_ANALYTIC_UPLOADS_ACCESS_KEY='...' \
--from-literal=S3_ANALYTIC_UPLOADS_SECRET_ACCESS_KEY='...' \
--from-literal=TRINO_USER='...' \
--from-literal=TRINO_PASSWORD='...' \
--from-literal=SPLITTER_TOKEN='...' \
--from-literal=REPO_USER='...' \
--from-literal=REPO_TOKEN='...' \
--from-literal=REPO_SECRET_KEY='...' \
--from-literal=AUTH_CLIENT_SECRET='...' \
--from-literal=AIRFLOW_USER='...' \
--from-literal=AIRFLOW_PASSWD='...' \
--from-literal=AIRFLOW_CONFIG_COPY_TOKEN='...' \
--from-literal=LICENSE_KEY='...' \
-n trisigma-configurator
postgresql:
existingSecret: trisigma-configurator-secrets
secretKeys:
passwordKey: PGPASSWORD
redis:
existingSecret: trisigma-configurator-secrets
secretKeys:
passwordKey: REDIS_PASSWORD
clickhouse:
existingSecret: trisigma-configurator-secrets
secretKeys:
passwordKey: CLICKHOUSE_PASSWORD
internalApi:
existingSecret: trisigma-configurator-secrets
secretKeys:
internalApiKeyKey: INTERNAL_API_KEY
externalApiKeyKey: EXTERNAL_API_KEY
secretKeyKey: SECRET_KEY
s3Attachments:
existingSecret: trisigma-configurator-secrets
secretKeys:
accessKeyKey: S3_ATTACHMENTS_ACCESS_KEY
secretAccessKeyKey: S3_ATTACHMENTS_SECRET_ACCESS_KEY
s3AnalyticUploads:
existingSecret: trisigma-configurator-secrets
secretKeys:
accessKeyKey: S3_ANALYTIC_UPLOADS_ACCESS_KEY
secretAccessKeyKey: S3_ANALYTIC_UPLOADS_SECRET_ACCESS_KEY
trino:
existingSecret: trisigma-configurator-secrets
secretKeys:
userKey: TRINO_USER
passwordKey: TRINO_PASSWORD
splitter:
existingSecret: trisigma-configurator-secrets
secretKeys:
tokenKey: SPLITTER_TOKEN
airflow:
existingSecret: trisigma-configurator-secrets
secretKeys:
userKey: AIRFLOW_USER
passwordKey: AIRFLOW_PASSWD
configCopyTokenKey: AIRFLOW_CONFIG_COPY_TOKEN
repo:
existingSecret: trisigma-configurator-secrets
secretKeys:
userKey: REPO_USER
tokenKey: REPO_TOKEN
webhookSecretKey: REPO_SECRET_KEY
auth:
existingSecret: trisigma-configurator-secrets
secretKeys:
clientSecretKey: AUTH_CLIENT_SECRET
license:
existingSecret: trisigma-configurator-secrets
secretKeys:
licenseKeyKey: LICENSE_KEY
Если имя ключа в Secret отличается — например, pg_password вместо PGPASSWORD —
укажите соответствие через secretKeys:
postgresql:
existingSecret: trisigma-configurator-secrets
secretKeys:
passwordKey: pg_password
Использовать одновременно secrets-values.yaml и existingSecret в одном блоке не получится, способы несовместимы друг с другом.
Helm Install
cd helm/trisigma-configurator
helm upgrade --install trisigma-configurator . \
--namespace trisigma-configurator \
-f values-trisigma.yaml \
-f secrets-values.yaml
Инициализация БД
Для инициализации БД при первом деплое добавьте к команде helm upgrade --install:
--set init.databases=true \
--set init.clickhouseDictUser=true \
--set init.trinoSchemas=true
| Параметр | Контейнер | Назначение |
|---|
init.databases | init-databases | Инициализация схем в Postgres и ClickHouse |
init.clickhouseDictUser | init-clickhouse-dict-user | Создание системного пользователя ClickHouse |
init.trinoSchemas | init-trino-schemas | Иницализация схем в Trino |
Проверка деплоя
После установки убедитесь, что сервис работает:
curl http://<configurator-host>:8890/_info
Ожидаемый ответ:
{
"environment": {
"server": {
"host": "trisigma-configurator-<pod-id>",
"ip": "10.x.x.x",
"os": "Linux ..."
}
},
"language": {
"name": "python",
"version": "3.x.x",
"flaskVersion": "..."
},
"appTag": "trisigma-configurator",
"imageTag": "<git-sha>"
}