Timetta.Presentation.Cli — служебная консольная утилита для первоначальной настройки, обновления и диагностики on-premises-инсталляции Timetta.
Основной сценарий использования — запуск в Docker Compose или в виде Kubernetes Job перед запуском сервисов Timetta.
CLI использует те же настройки, что и остальные сервисы Timetta. Рекомендуется подключать к нему общую конфигурацию инсталляции, описанную в отдельной статье, а не создавать отдельный набор настроек.
Для работы CLI необходимы:
TimettaDB;SchedulerDB;LicenseKey;Tenant.Лицензия проверяется перед выполнением каждой команды. Проверяются корректность ключа, соответствие домена конфигурации tenant и срок действия лицензии.
Пароли и лицензионный ключ не выводятся в диагностические сообщения.
Общий формат:
tmt <command>
В Docker-образе уже настроен entrypoint, поэтому контейнеру передаётся только команда:
docker compose run --rm admin-cli <command>
initИнициализирует новую пустую базу данных.
Последовательно выполняет:
public пуста.tmt init
Если база уже содержит таблицы, команда завершается с ошибкой. Для обновления существующей базы следует использовать migrate.
migrateПрименяет ожидающие миграции к существующей базе данных.
tmt migrate
Команда:
Для пустой базы необходимо использовать init.
statusПроверяет конфигурацию и доступность инфраструктуры.
tmt status
Команда выводит:
Healthy или Unhealthy.При ошибке подключения выводятся тип исключения, сообщение и цепочка внутренних причин.
Если обязательная инфраструктура недоступна, команда возвращает код 1.
versionВыводит версию CLI:
tmt version
Перед выполнением также проверяется лицензия.
reset --forceПолностью удаляет схему public, создаёт её заново и выполняет полную инициализацию:
tmt reset --force
Команда выполняет:
public.Внимание
Команда безвозвратно удаляет данные. Аргумент --force защищает от случайного запуска.
Команду не следует включать в автоматический production-процесс.
0 — команда успешно выполнена;1 — ошибка выполнения, лицензии или инфраструктуры;2 — неизвестная команда или некорректные аргументы.CLI следует подключать к той же общей конфигурации и секретам, что и остальные сервисы Timetta.
admin-cli:
container_name: admin-cli
image: cr.yandex/crpr8bvek949tq2fuqkf/admin-cli:${BACKEND_IMAGE_TAG}
<<: *app-config
configs:
- source: app_settings
target: /app/secrets/settings.json
Для первоначальной установки:
command: ["init"]
Для диагностики:
command: ["status"]
Для миграции данных:
command: ["migrate"]
Запуск:
docker compose run --rm admin-cli <command>
Пример Job для применения миграций:
apiVersion: batch/v1
kind: Job
metadata:
name: timetta-migrate
spec:
backoffLimit: 2
template:
spec:
restartPolicy: Never
containers:
- name: migrate
image: registry.example.com/timetta/admin-cli:1.0.0
args: ["migrate"]
envFrom:
- configMapRef:
name: timetta-config
- secretRef:
name: timetta-secrets
Образ содержит entrypoint dotnet tmt.dll, поэтому команда CLI передаётся через args.
Для первоначальной установки используется:
args: ["init"]
CLI должен получать ту же конфигурацию и те же secrets, что и остальные сервисы Timetta.
Новая установка:
Создать инфраструктуру → init → запустить сервисы Timetta
Обновление:
Создать резервную копию → migrate → запустить новую версию сервисов
init предназначен только для пустой базы. Для всех последующих обновлений используется migrate.
Перейти на русскую версию?