Timetta.Presentation.Cli — служебная консольная утилита для первоначальной настройки, обновления и диагностики on-premises-инсталляции Timetta.
Основной сценарий использования — запуск в Docker Compose или в виде Kubernetes Job перед запуском сервисов Timetta.
CLI использует те же настройки, что и остальные сервисы Timetta. Рекомендуется подключать к нему общую конфигурацию инсталляции, описанную в отдельной статье, а не создавать отдельный набор настроек.
Для работы CLI необходимы:
Лицензия проверяется перед выполнением каждой команды. Проверяются:
Пароли и лицензионный ключ не выводятся в диагностические сообщения.
Общий формат:
tmt <command>
В Docker-образе уже настроен entrypoint, поэтому контейнеру передаётся только команда:
docker compose run --rm admin-cli <command>
Вызов без аргументов, а также help, --help и -h, выводит встроенную справку:
tmt --help
initИнициализирует новую пустую базу данных.
Последовательно выполняет:
public пуста.tmt init
Если база уже содержит таблицы, команда завершается с ошибкой. Для обновления существующей базы используйте команду migrate.
migrateПрименяет ожидающие миграции к существующей базе данных и обновляет системные данные.
tmt migrate
Команда:
Для пустой базы используйте команду init.
migrate-s3Переносит файлы из PostgreSQL в S3-совместимое Object Storage.
tmt migrate-s3
Команда:
Для запуска необходимо:
S3;Команда безопасна для повторного запуска. Уже перенесённые файлы удалены из PostgreSQL и не будут обработаны повторно. Если выполнение прервалось, следующий запуск продолжит перенос оставшихся файлов.
Перед запуском рекомендуется:
Во время миграции сервисы, записывающие новые файлы, желательно временно остановить.
check-modelПроверяет соответствие текущей EF-модели снимку последней миграции.
tmt check-model
Команда подключается к TimettaDB и:
1, если обнаружены изменения модели, не отражённые в миграциях.Команда предназначена для проверки состава поставки перед развёртыванием. Она не изменяет базу данных и не создаёт миграции.
pending-migrationsВыводит список миграций, которые ещё не применены к TimettaDB.
tmt pending-migrations
Если ожидающих миграций нет, команда выводит соответствующее сообщение. Если миграции есть, выводится их количество и идентификаторы.
Команда не применяет миграции и не изменяет базу данных. Для применения используйте migrate.
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"]
Для миграции в S3-хранилище:
command: ["migrate-s3"]
Для проверки соответствия EF-модели снимку миграции:
command: ["check-model"]
Для просмотра ожидающих миграций:
command: ["pending-migrations"]
Запуск:
docker compose run --rm admin-cli <command>
Пример Job для применения миграций:
apiVersion: batch/v1
kind: Job
metadata:
name: timetta-admin-cli
spec:
backoffLimit: 2
template:
spec:
restartPolicy: Never
containers:
- name: <name-command>
image: registry.example.com/timetta/admin-cli:1.0.0
args: ["<command>"]
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.
Похоже, вам удобнее русский язык. Перейти на русскую версию?