Splitter
| Версии в этом релизе | |
|---|---|
| Чарт | registry.trisigma.io/trisigma/charts/trisigma-splitter:0.2.0 |
| Образ | registry.trisigma.io/trisigma/images/trisigma-splitter:0.1.0 |
Назначение
Splitter — сервис, назначающий эксперименты пользователям и разбивающий их на группы. Получает конфигурации экспериментов от Configurator и записывает события распределения в ClickHouse.
Схемы данных
Схемы и таблицы в PostgreSQL создаются автоматически при деплое Splitter. Дополнительная настройка не требуется.
Справочно — основные таблицы:
| Таблица | Назначение |
|---|---|
markers | Конфигурации экспериментов, получаемые от Configurator |
segments | Списки пользователей для таргетирования экспериментов |
marks, user_overrides | Ручные назначения групп пользователям в конкретных экспериментах |
global_exclusion | Исключение пользователей из всех экспериментов |
Деплой
Для установки необходимо заполнить файл с параметрами values-trisigma.yaml
values.yaml содержит значения по умолчанию — не изменяйте его напрямую, а переопределяйте нужные параметры в отдельны х файлах.
Параметры приложения
Хранятся в values-trisigma.yaml. Создайте файл из примера: cp values-trisigma.yaml.example 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 |
ClickHouse
| Параметр | Описание |
|---|---|
clickhouse.host | Для записи expose-событий (таблица ab_clickstream) |
clickhouse.port | Порт для подключения к ClickHouse БД сервиса (native-протокол) |
clickhouse.user | Учетная запись для подключения к ClickHouse |
clickhouse.tls.enabled | Использовать TLS при подключении к ClickHouse |
Фоновые задачи (Crons)
| Параметр | Описание |
|---|---|
crons.image.repository | Образ планировщика фоновых задач в Container registry |
| Крон | Описание |
|---|---|
overrides_watcher | Чистит устаревшие и истёкшие ручные назначения групп пользователям |
configs_watcher | Удаляет устаревшие конфигурации экспериментов и сегментов пользователей |
Секреты приложения
Секреты в приложение можно передать двумя способами:
задать значения напрямую в secrets-values.yaml —
или указать имя существующего Kubernetes Secret в поле existingSecret в чарте
(например, созданного через Vault или External Secrets Operator).
Создайте файл из примера: cp secrets-values.yaml.example secrets-values.yaml.
PostgreSQL
| Секрет | Ключ | Описание |
|---|---|---|
PGPASSWORD | postgresql.password | Пароль для подключения к PostgreSQL |
ClickHouse
| Секрет | Ключ | Описание |
|---|---|---|
CLICKHOUSE_PASSWORD | clickhouse.password | Пароль для подключения к ClickHouse |
Межсервисная авторизация
| Секрет | Ключ | Описание |
|---|---|---|
CONFIGURATION_TOKEN | interServiceAuth.configurationToken | Токен для авторизации запросов от Configurator1 |
Публичный API
| Секрет | Ключ | Описание |
|---|---|---|
USER_TOKEN | publicApi.userToken | Токен для авторизации запросов для публичных эндпоинтов2. Без заполнения эндпоинты доступны без авторизации |
ROTATABLE_USER_TOKEN | publicApi.rotatableUserToken | Опциональный. Второй слот для бесшовной ротации USER_TOKEN |
- Задайте новый токен как
ROTATABLE_USER_TOKEN - Обновите клиентов на новый токен
- Перенесите его в
USER_TOKENи очиститеROTATABLE_USER_TOKEN
Лицензия
| Секрет | Ключ | Описание |
|---|---|---|
LICENSE_KEY | license.licenseKey | Лицензионный ключ Trisigma Enterprise |
Использование существующего Secret (existingSecret)
Если вы не хотите передавать значения через secrets-values.yaml — укажите название вашего собственного Secret:
kubectl create namespace trisigma-splitter
kubectl create secret generic trisigma-splitter-secrets \
--from-literal=PGPASSWORD='...' \
--from-literal=CLICKHOUSE_PASSWORD='...' \
--from-literal=CONFIGURATION_TOKEN='...' \
--from-literal=USER_TOKEN='...' \
--from-literal=LICENSE_KEY='...' \
-n trisigma-splitter
postgresql:
existingSecret: trisigma-splitter-secrets
secretKeys:
passwordKey: PGPASSWORD
clickhouse:
existingSecret: trisigma-splitter-secrets
secretKeys:
passwordKey: CLICKHOUSE_PASSWORD
interServiceAuth:
existingSecret: trisigma-splitter-secrets
secretKeys:
configurationTokenKey: CONFIGURATION_TOKEN
publicApi:
existingSecret: trisigma-splitter-secrets
secretKeys:
userTokenKey: USER_TOKEN
rotatableUserTokenKey: ROTATABLE_USER_TOKEN
license:
existingSecret: trisigma-splitter-secrets
secretKeys:
licenseKeyKey: LICENSE_KEY
Если имя ключа в Secret отличается — например, pg_password вместо PGPASSWORD —
укажите соответствие через secretKeys:
postgresql:
existingSecret: trisigma-splitter-secrets
secretKeys:
passwordKey: pg_password
Использовать одновременно secrets-values.yaml и existingSecret в одном блоке не получится, способы несовместимы друг с другом.
Helm Install
cd trisigma-splitter
helm upgrade --install trisigma-splitter . \
--namespace trisigma-splitter --create-namespace \
-f values-trisigma.yaml \
-f secrets-values.yaml # уберите, если все секреты через existingSecret
Проверка деплоя
После установки убедитесь, что сервис работает:
curl http://<splitter-host>:8890/_info
Ожидаемый ответ:
{
"ip": "10.x.x.x",
"host": "trisigma-splitter-<pod-id>",
"os": "Linux ...",
"language": "go",
"languageVersion": "go1.25.x"
}