5.2 KiB
Runtime Config
1. Назначение документа
Этот документ фиксирует конфигурацию окружения, storage и базовые operational assumptions для MVP.
Его задача - убрать неявные решения, которые обычно всплывают уже в процессе написания кода.
2. Базовые решения для MVP
- каноническая БД:
PostgreSQL - локальная разработка и тесты используют ту же
PostgreSQL-модель хранения - artifact storage: локальная файловая система
- MCP transport:
Streamable HTTP - admin API и mcp-server запускаются как отдельные приложения
3. Artifact storage
В MVP sample JSON, .proto, descriptor set и YAML import payload должны храниться в локальном файловом storage.
Требования:
- все файлы кладутся в контролируемый базовый каталог;
- в БД хранится только
storage_ref; - структура каталогов должна быть детерминированной;
- storage слой должен быть абстрагирован, чтобы потом заменить его на S3-compatible backend.
Рекомендуемая структура:
var/crank/
samples/
descriptors/
yaml-imports/
4. Секреты и auth profiles
Для MVP:
- operation хранит только
auth_profile_ref; - auth profile хранит только
secret_ref; - реальные секреты не должны попадать в YAML export;
- секреты не должны логироваться.
Допустимые варианты secret storage:
- env-backed secret store;
- encrypted local secret storage.
Минимальный безопасный вариант для MVP:
secret_refуказывает на env variable alias или key в локальном secret store;- приложение резолвит его на runtime.
5. Переменные окружения
Минимально ожидаются:
CRANK_DATABASE_URLCRANK_STORAGE_ROOTCRANK_ADMIN_BINDCRANK_MCP_BINDCRANK_MCP_REFRESH_MSCRANK_LOG_LEVELCRANK_SECRET_PROVIDERCRANK_PUBLIC_BASE_URLCRANK_MCP_PUBLIC_URL
Опционально:
CRANK_ADMIN_TOKENCRANK_MASTER_KEY
Стартовое значение для refresh published tools:
CRANK_MCP_REFRESH_MS=5000
6. Логирование и трассировка
Для MVP нужно использовать:
- structured logging через
tracing; - correlation id для test runs и runtime execution;
- раздельные стадии ошибок: schema, mapping, adapter, external service.
7. Таймауты и retries
Рекомендуемые стартовые значения:
- default timeout:
10s - retry default:
1attempt, то есть без автоматического повтора
Причина:
- сначала важнее детерминированность и прозрачность;
- aggressive retries могут маскировать реальные ошибки интеграции.
8. Режимы запуска
Минимально нужны два режима:
- local development
- demo/deployment
Local development:
- локальное окружение должно иметь доступ к
PostgreSQL; - локальный storage;
- app-level auth и bootstrap admin user через
.env.
Demo/deployment:
PostgreSQL;- локальный или сетевой storage;
- включенная app-level auth-защита admin-api;
- стабильный
Streamable HTTPendpoint для MCP. - containerized runtime через
Dockerиdocker-compose.
Auth env
Для app-level auth нужны:
CRANK_SESSION_SECRETCRANK_PASSWORD_PEPPERCRANK_BOOTSTRAP_ADMIN_EMAILCRANK_BOOTSTRAP_ADMIN_PASSWORDCRANK_BOOTSTRAP_ADMIN_DISPLAY_NAME
8.1. Delivery artifacts
Для production-like запуска проект должен поставляться с:
Dockerfileдля backend приложений;docker-compose.yml;.env.example;- healthcheck endpoints;
- reverse proxy configuration examples.
Подробности вынесены в docs/deployment.md.
9. Что важно не допустить
- пути к storage, зашитые в код;
- секреты в
.yamlexports; - разные конфигурационные модели для local и production без причины;
- смешивание runtime config и business config operation.
10. Практический итог
До старта разработки должны быть приняты как минимум такие решения:
- где лежит БД;
- где лежат artifacts;
- как резолвятся
secret_ref; - на каких bind-address запускаются
admin-apiиmcp-server; - какой transport использует MCP server.