feat: harden community production foundation through story 1.5
This commit is contained in:
+10
-7
@@ -2,11 +2,12 @@
|
||||
|
||||
Документ описывает поддерживаемый путь запуска Crank на сервере.
|
||||
|
||||
Crank запускается как три контейнера за reverse proxy:
|
||||
Crank запускает три long-running контейнера за reverse proxy и один обязательный one-shot migration job:
|
||||
|
||||
- `ui`
|
||||
- `admin-api`
|
||||
- `mcp-server`
|
||||
- `migrate` (завершается до readiness Admin/MCP)
|
||||
|
||||
Можно использовать внешний PostgreSQL или локальный PostgreSQL из compose-профиля `local-db`.
|
||||
|
||||
@@ -18,8 +19,10 @@ reverse proxy
|
||||
/api/admin/ -> admin-api:3001
|
||||
/mcp/ -> mcp-server:3002
|
||||
|
||||
admin-api -> PostgreSQL
|
||||
mcp-server -> PostgreSQL
|
||||
migrate -> PostgreSQL -> exit 0
|
||||
|
|
||||
+-> admin-api readiness
|
||||
+-> mcp-server readiness
|
||||
admin-api -> Valkey/Redis, опционально
|
||||
mcp-server -> Valkey/Redis, опционально
|
||||
admin-api -> внешний OTLP endpoint, опционально
|
||||
@@ -105,7 +108,7 @@ docker compose \
|
||||
config -q
|
||||
```
|
||||
|
||||
Запуск с внешним PostgreSQL:
|
||||
Перед обновлением существующей установки выполните preflight и проверенный backup по [migration runbook](migrations.md). Source Compose по умолчанию поднимает локальный PostgreSQL 16. После безопасной последовательности запустите:
|
||||
|
||||
```bash
|
||||
docker compose \
|
||||
@@ -143,7 +146,7 @@ cp .env.example .env
|
||||
docker compose --profile local-db up -d
|
||||
```
|
||||
|
||||
Если используется внешний PostgreSQL, заполните `POSTGRES_HOST`, `POSTGRES_PORT`, `POSTGRES_DB`, `POSTGRES_USER`, `POSTGRES_PASSWORD` и запустите:
|
||||
Если используется внешний PostgreSQL, заполните `POSTGRES_HOST`, `POSTGRES_PORT`, `POSTGRES_DB`, `POSTGRES_USER`, `POSTGRES_PASSWORD`, сначала выполните preflight и backup по [migration runbook](migrations.md), затем запустите:
|
||||
|
||||
```bash
|
||||
docker compose up -d
|
||||
@@ -182,9 +185,9 @@ curl -I http://127.0.0.1:3000/
|
||||
CRANK_RESTORE_CONFIRM=restore ./scripts/restore-community.sh /opt/crank /opt/crank/backups/20260721T120000Z
|
||||
```
|
||||
|
||||
- Обновления схемы выполняются под блокировкой, одной транзакцией и фиксируются в `__crank_core_migrations`. Миграции Community должны оставаться обратно совместимыми с предыдущей версией приложения.
|
||||
- Обновления схемы выполняет только one-shot `crank-migrate apply` под canonical transaction advisory lock. `admin-api` и `mcp-server` выполняют read-only compatibility check и не стартуют до успешного migration job. Canonical sequence фиксируется в `__crank_migrations`, legacy ledgers остаются readable; подробности — в [migrations.md](migrations.md).
|
||||
- Не храните реальные секреты в Git.
|
||||
- CD использует неизменяемые теги коммитов и автоматически возвращает прежнюю конфигурацию и образы при провале readiness.
|
||||
- CD использует неизменяемые теги коммитов. После schema migration автоматический возврат старых образов запрещён, пока N/N-1 window не квалифицирован Story 7.2: оператор сохраняет backup и выбирает matching forward image либо доказанное восстановление согласованного комплекта.
|
||||
- `CRANK_PUBLISH_BIND=0.0.0.0` нужен только если reverse proxy работает на другом host.
|
||||
- OTLP Collector и хранилище трасс не входят в Community Compose. Для
|
||||
внешнего приёмника задайте `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT`; секретные
|
||||
|
||||
Reference in New Issue
Block a user