Перейти к основному содержимому

Configurator

Сервис управления 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
warning
Не используйте 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.hostEndpoint S3 для подключения
s3Attachments.bucketИмя бакета для вложений (trisigma-configurator-attachments)

S3 — бакет аналитических данных и загрузок

ПараметрОписание
s3AnalyticUploads.hostEndpoint S3 для подключения
s3AnalyticUploads.bucketИмя бакета для аналитики (trisigma-analytic-uploads)

Git-репозиторий метрик

ПараметрОписание
repo.typeТип репозитория: github / bitbucket / gitlab
repo.hostURL репозитория1
repo.projectПроект/организация репозитория
repo.mainBranchИмя основной ветки репозитория
Bitbucket
ПараметрОписание
repo.bitbucket.httpUrlHTTPS URL Bitbucket-сервера для git-клона, например https://bitbucket.example.com

Межсервисные связи

ПараметрОписание
splitter.urlIn-cluster URL Splitter, например http://trisigma-splitter.trisigma-splitter:8890
airflow.apiUrlURL Airflow API, например http://trisigma-airflow-webserver.trisigma-airflow:8080
airflow.configUploadUrlURL загрузки DAG-конфигов, например http://trisigma-airflow-configs-uploader.trisigma-airflow
frontend.urlBrowser-facing URL Frontend, например https://trisigma.example.com

Auth (OIDC)

Configurator аутентифицирует пользователей через OpenID Connect (Authorization Code flow).

ПараметрОписание
auth.enabledВключение OIDC аутентификации
auth.clientIdOAuth client ID, зарегистрированный в вашем IDP
auth.configUrlOIDC 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

СекретКлючОписание
PGPASSWORDpostgresql.passwordПароль PostgreSQL

Redis (Valkey)

СекретКлючОписание
REDIS_PASSWORDredis.passwordПароль Redis/Valkey

ClickHouse

СекретКлючОписание
CLICKHOUSE_PASSWORDclickhouse.passwordПароль ClickHouse

Trino

СекретКлючОписание
TRINO_USERtrino.userУчётная запись для подключения к Trino
TRINO_PASSWORDtrino.passwordПароль для подключения к Trino

S3 — бакет вложений

СекретКлючОписание
S3_ATTACHMENTS_ACCESS_KEYs3Attachments.accessKeyS3 access key для доступа к бакету trisigma-configurator-attachments
S3_ATTACHMENTS_SECRET_ACCESS_KEYs3Attachments.secretAccessKeyS3 secret key для доступа к бакету trisigma-configurator-attachments

S3 — бакет аналитических данных и загрузок

СекретКлючОписание
S3_ANALYTIC_UPLOADS_ACCESS_KEYs3AnalyticUploads.accessKeyS3 access key для доступа к бакету trisigma-analytic-uploads
S3_ANALYTIC_UPLOADS_SECRET_ACCESS_KEYs3AnalyticUploads.secretAccessKeyS3 secret key для доступа к бакету trisigma-analytic-uploads

Git-репозиторий метрик

СекретКлючОписание
REPO_USERrepo.userУчётная запись для подключения к Git-репозиторию
REPO_TOKENrepo.tokenТокен для подключения к Git-репозиторию
REPO_SECRET_KEYrepo.webhookSecretСекретный ключ для подписи webhook'ов репозитория

Межсервисные связи

СекретКлючОписание
SPLITTER_TOKENsplitter.tokenТокен авторизации запросов в Splitter2
AIRFLOW_USERairflow.userУчётная запись для подключения к Airflow API
AIRFLOW_PASSWDairflow.passwordПароль для подключения к Airflow API
AIRFLOW_CONFIG_COPY_TOKENairflow.configCopyTokenТокен для загрузки DAG-конфигов в Airflow

Auth (OIDC)

СекретКлючОписание
AUTH_CLIENT_SECRETauth.clientSecretOAuth client secret в вашем IDP

Internal API

СекретКлючОписание
INTERNAL_API_KEYinternalApi.internalApiKeyВнутренний API-ключ
EXTERNAL_API_KEYinternalApi.externalApiKeyВнешний API-ключ
SECRET_KEYinternalApi.secretKeyСекретный ключ приложения для подписи JWT

Лицензия

СекретКлючОписание
LICENSE_KEYlicense.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 # уберите, если все секреты через existingSecret

Инициализация БД

Для инициализации БД при первом деплое добавьте к команде helm upgrade --install:

  --set init.databases=true \
--set init.clickhouseDictUser=true \
--set init.trinoSchemas=true
ПараметрКонтейнерНазначение
init.databasesinit-databasesИнициализация схем в Postgres и ClickHouse
init.clickhouseDictUserinit-clickhouse-dict-userСоздание системного пользователя ClickHouse
init.trinoSchemasinit-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>"
}

Footnotes

  1. Для github — REST API URL https://api.github.com; для gitlab и bitbucket — URL сервера (например, https://gitlab.example.com / https://bitbucket.example.com).

  2. Соответствует секрету interServiceAuth.configurationToken (CONFIGURATION_TOKEN) в Splitter.