Configurator
| Версии в этом релизе | |
|---|---|
| Чарт | trisigma-configurator 0.1.0 |
| Образ | configurator 0.1.0 |
Сервис управления A/B-экспериментами.
Назначение
Configurator — центральный сервис платформы. Управляет жизненным циклом экспериментов: создание, настройка, расчёт результатов, визуализация.
Ключевые функции:
- Управление схемами и миграциями ClickHouse (
clickhouseInit: trueпри первом деплое) - Отправка конфигураций экспериментов (маркеры, сегменты) в 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.
Миграции
| Параметр | Описание |
|---|---|
postgresqlMigrator.image.repository | Образ мигратора для PostgreSQL миграций |
PostgreSQL
| Параметр | Описание |
|---|---|
postgresql.host | Хостнейм для подключения к PostgreSQL |
postgresql.port | Порт для подключения к PostgreSQL |
postgresql.database | Название БД, к которой подключается сервис |
postgresql.user | Учетная запись для подключения к PostgreSQL |
Redis (Valkey)
| Параметр | Описание |
|---|---|
redis.host | Хостнейм Redis/Valkey |
redis.port | Порт. По умолчанию 6379 |
redis.login | Учетная запись. По умолчанию default |
ClickHouse
| Параметр | Описание |
|---|---|
clickhouse.hosts | Список ClickHouse-хостов в формате host:port,host:port, например ch1.example.com:9440 |
clickhouse.user | Учетная запись для подключения к ClickHouse |
Trino
| Параметр | Описание |
|---|---|
trino.host | Хостнейм для подключения к Trino |
trino.port | Порт. По умолчанию 8080 |
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 API, например https://api.github.com |
repo.name | Имя репозитория. По умолчанию trisigma_ab_metrics |
repo.project | Проект/организация репозитория |
Межсервисные связи
| Параметр | Описание |
|---|---|
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 |
Фоновые задачи (Crons)
| Параметр | Описание |
|---|---|
crons.image.repository | Образ планировщика фоновых задач |
| Крон | Расписание | Описание |
|---|---|---|
status_updater | Каждую минуту | Обновление статусов экспериментов |
dimensions_updater | Каждый час | Обновление размерностей |
report_updater | Каждые 10 мин | Обновление отчётов |
holdout_updater | Ежедневно в 00:01 | Обновление состояния holdout-экспериментов |
clickhouse_etl | Ежедневно в 01:55 | Ночной ETL ClickHouse |
trino_etl | Ежедневно в 01:55 | Ночной ETL Trino |
clickhouse_realtime_etl | Каждые 20 мин в 8–22 ч | Realtime-ETL ClickHouse |
lists_uploader | Ежедневно в 22:00 | Загрузка списков пользователей |
experiments_archivator | Ежедневно в 09:00 | Архивация завершённых экспериментов |
metrics_repo_sync | Каждые 10 мин | Синхронизация репозитория метрик |
metrics_repo_validate_prs | Каждые 5 мин | Валидация PR в репозитории метрик |
metrics_repo_apply_migrations | Каждую минуту | Применение миграций из репозитория метрик |
airflow_daily | Ежедневно в 02:00 | Регулярная отправка DAG-конфигов в Airflow |
export_segments_trino | Каждую минуту | Экспорт сегментов в Trino |
export_segments_csv | Каждую минуту | Экспорт сегментов в CSV |
datamart_state_collector | Каждые 10 мин | Сбор состояния витрин |
iceberg_maintenance | Ежедневно в 01:11 | Обслуживание Iceberg-таблиц |
remove_old_experiments_analytics_data | Ежедневно в 01:01 | Очистка устаревших аналитических данных |
dwh_datamart_cache_warmup_today | В начале каждого часа | Прогрев кэша витрин на сегодня |
dwh_datamart_cache_warmup_tomorrow | На 30-й мин каждого часа | Прогрев кэша витрин на завтра |
update_report_monitor | На 47-й мин каждого часа | Мониторинг обновления отчётов |
mde_calculation_status_updater | Каждую минуту | Обновление статусов MDE-расчётов |
materialized_view_refresh | Каждый час | Обновление materialized views |
materialized_view_refresher | Каждую минуту | Триггер обновления materialized views |
materialized_view_event_generator | Каждый час | Генерация событий для materialized views |
outbox_queue_depth_metrics | Каждую минуту | Метрики глубины outbox-очереди |
retro_updater | Каждые 20 мин | Обновление ретро-отчётов |
clickhouse_maintenance | Ежедневно в 22:00 | Обслуживание ClickHouse |
enrichments_duplicates_check | Ежедневно в 09:00 | Проверка дубликатов в enrichment'ах |
report_metrics_getter | Каждые 10 мин | Сбор метрик отчётов |
source_statistics_collector | Ежедневно в 20:00 | Сбор статистики источников |
update_dimension_stats | Ежедневно в 08:00 | Обновление статистик размерностей |
metric_calculation_change_notifier | Ежедневно в 10:10 | Нотификации об изменениях расчётов |
metrics_recalculate_health | Ежедневно в 05:00 | Проверка здоровья пересчётов метрик |
Расписание, включение/выключение и ресурсы каждого крона переопределяются в values-trisigma.yaml под ключом crons.jobs.<имя>.
Воркеры
Долгоживущие процессы, отдельные от основного API:
| Воркер | Назначение |
|---|---|
retro-starter | Запуск ретроспективных расчётов экспериментов |
materialized-view-refresher | Обработка очереди обновлений materialized views |
Включение, реплики и ресурсы воркеров настраиваются в values-trisigma.yaml под ключом workers.<имя>.
Секреты приложения
Секреты в приложение можно передать двумя способами:
задать значения напрямую в secrets-values.yaml —
или указать имя существующего Kubernetes Secret в поле existingSecret в чарте
(например, созданного через Vault или External Secrets Operator).
Создайте файл из примера: cp secrets-values.yaml.example secrets-values.yaml.
| Секрет | Ключ | Описание |
|---|---|---|
PGPASSWORD | postgresql.password | Пароль PostgreSQL |
REDIS_PASSWORD | redis.password | Пароль Redis/Valkey |
CLICKHOUSE_PASSWORD | clickhouse.password | Пароль ClickHouse |
INTERNAL_API_KEY | internalApi.internalApiKey | Внутренний API-ключ |
EXTERNAL_API_KEY | internalApi.externalApiKey | Внешний API-ключ |
SECRET_KEY | internalApi.secretKey | Секретный ключ приложения для подписи JWT |
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_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 |
TRINO_USER / TRINO_PASSWORD | trino.user / trino.password | Креды Trino |
TRINO_ADMIN_USER / TRINO_ADMIN_PASSWORD | trino.adminUser / trino.adminPassword | Админ-креды Trino |
TRINO_READONLY_USER / TRINO_READONLY_PASSWORD | trino.readonlyUser / trino.readonlyPassword | Read-only креды Trino |
SPLITTER_TOKEN | splitter.token | Токен авторизации запросов в Splitter1 |
REPO_USER / REPO_TOKEN | repo.user / repo.token | Креды Git-репозитория метрик |
REPO_SECRET_KEY | repo.webhookSecret | Секретный ключ для подписи webhook'ов репозитория |
AIRFLOW_USER / AIRFLOW_PASSWD | airflow.user / airflow.password | Креды Airflow API |
AIRFLOW_CONFIG_COPY_TOKEN | airflow.configCopyToken | Токен для загрузки DAG-конфигов в Airflow |
Использование существующего 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=TRINO_ADMIN_USER='...' \
--from-literal=TRINO_ADMIN_PASSWORD='...' \
--from-literal=SPLITTER_TOKEN='...' \
--from-literal=REPO_USER='...' \
--from-literal=REPO_TOKEN='...' \
--from-literal=REPO_SECRET_KEY='...' \
--from-literal=AIRFLOW_USER='...' \
--from-literal=AIRFLOW_PASSWD='...' \
-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
adminUserKey: TRINO_ADMIN_USER
adminPasswordKey: TRINO_ADMIN_PASSWORD
splitter:
existingSecret: trisigma-configurator-secrets
secretKeys:
tokenKey: SPLITTER_TOKEN
airflow:
existingSecret: trisigma-configurator-secrets
secretKeys:
userKey: AIRFLOW_USER
passwordKey: AIRFLOW_PASSWD
repo:
existingSecret: trisigma-configurator-secrets
secretKeys:
userKey: REPO_USER
tokenKey: REPO_TOKEN
webhookSecretKey: REPO_SECRET_KEY
Если имя ключа в Secret отличается — например, pg_password вместо PGPASSWORD —
укажите соответствие через secretKeys:
postgresql:
existingSecret: trisigma-configurator-secrets
secretKeys:
passwordKey: pg_password
Использовать одновременно secrets-values.yaml и existingSecret в одном блоке не получится, способы несовместимы друг с другом.
Helm-установка
cd helm/trisigma-configurator
helm upgrade --install trisigma-configurator . \
--namespace trisigma-configurator \
-f values.yaml \
-f values-trisigma.yaml \
-f secrets-values.yaml # уберите, если все секреты через existingSecret
Проверка деплоя
После установки убедитесь, что сервис работает:
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>"
}