Установка и инициализация TrackDB
TrackDB работает поверх ClickHouse. Актуальные SQL-файлы находятся в основном репозитории Altflow:
scripts/trackdb/createEvents.sql
scripts/trackdb/createUsers.sql
Установка ClickHouse
Пример для ALT-based окружения:
apt-get install clickhouse-client clickhouse-server
systemctl enable --now clickhouse-server
Проверка подключения:
clickhouse-client --query "SELECT version()"
Создание базы
clickhouse-client --query "CREATE DATABASE IF NOT EXISTS TrackDB"
Создание таблиц
Применить схему:
clickhouse-client --database=TrackDB --multiquery < scripts/trackdb/createEvents.sql
Скрипт пересоздаёт:
imageEvents
stateEvents
stateEvents_mv
stateList_State
stateList_State_mv
stateList
imagesByNames
imagesByNames_mv
imageEvents использует ENGINE = Null; это ожидаемое поведение. Данные хранятся в
таблицах, которые наполняются materialized views.
Создание пользователей
Перед применением createUsers.sql замените placeholder-пароли:
BY 'your_password_here'
BY 'another_password_here'
Затем выполните:
clickhouse-client --multiquery < scripts/trackdb/createUsers.sql
Скрипт создаёт:
| Пользователь | Назначение |
|---|---|
altflow | API, Saver, Distributor, Tracker. |
altflow_stager | Stager. |
Права:
GRANT SHOW TABLES, SELECT ON TrackDB.* TO altflow;
GRANT SHOW TABLES, SELECT ON TrackDB.* TO altflow_stager;
GRANT INSERT ON TrackDB.imageEvents TO altflow;
GRANT INSERT ON TrackDB.imageEvents TO altflow_stager;
Проверка схемы
clickhouse-client --database=TrackDB --query "SHOW TABLES"
Ожидаемые объекты:
imageEvents
imagesByNames
imagesByNames_mv
stateEvents
stateEvents_mv
stateList
stateList_State
stateList_State_mv
Проверка вставки события:
clickhouse-client --database=TrackDB --query "
INSERT INTO imageEvents (
eventTime, eventStage, eventStageState, taskId, user,
stageImageName, registryName, buildGitURL, buildGitBranch,
buildConfigPath, buildDockerfilePath, buildContextPath,
repoTags, userGID, entrypoints, architecture
) VALUES (
now(), 'BUILD', 'NEW', '01JBV2S4PGNV87EGC5WKYA0RND', 'test-user',
'project/image', 'registry.example.org', 'https://github.com/user/repo.git', 'master',
'', './Dockerfile', '.', ['latest'], 200, [], ['amd64']
)"
Проверка materialized view:
clickhouse-client --database=TrackDB --query "
SELECT eventStage, eventStageState, taskId, user
FROM stateEvents
WHERE taskId = '01JBV2S4PGNV87EGC5WKYA0RND'
"
Подключение компонентов
Компоненты Altflow ожидают следующие параметры TrackDB:
| Параметр | Значение по умолчанию/пример |
|---|---|
| database | TrackDB |
| status table для API | stateEvents |
| write table для Saver/Stager/Distributor/Tracker | imageEvents |
| task id field | taskId |
| HTTP port без TLS | 8123 |
| HTTP port с TLS | 8443 |
Для production-развёртывания компоненты обычно используют HTTPS endpoint ClickHouse и CA certificate, заданный в Helm values соответствующего компонента.
Тестовые данные
В документационном репозитории altflow-concept есть генератор нагрузочных данных:
scripts/TrackDB/SYNTH
Это отдельное дерево скриптов altflow-concept, а не scripts/trackdb из основного
репозитория altflow. SQL-схема при этом берётся из основного репозитория:
/home/artyom/git/altflow/altflow/scripts/trackdb/createEvents.sql
Путь к SQL-схеме можно переопределить переменной:
TRACKDB_SCHEMA_SQL=/path/to/createEvents.sql ./insertN.sh BUILD 1000 3
Базовый порядок генерации:
cd /home/artyom/git/altflow/altflow-concept/scripts/TrackDB/SYNTH/TrackDB/schemas
./generateNEW.sh
cd ../results
./NewToRunning.sh BUILD
./RunningToDone.sh BUILD
./insertN.sh BUILD 1000 3
watchLive.sh больше не использует удалённое stateEvents_live; он периодически делает
обычный SELECT из stateEvents по insertTime.