config: simplify runtime environment model
This commit is contained in:
@@ -7,7 +7,7 @@
|
||||
## 2. Предусловия
|
||||
|
||||
- доступен `PostgreSQL`;
|
||||
- задан `CRANK_DATABASE_URL`;
|
||||
- заданы `POSTGRES_HOST`, `POSTGRES_PORT`, `POSTGRES_DB`, `POSTGRES_USER`, `POSTGRES_PASSWORD`;
|
||||
- задан `CRANK_STORAGE_ROOT`;
|
||||
- доступны `CRANK_ADMIN_BIND` и `CRANK_MCP_BIND`;
|
||||
- если нужен заполненный demo state без ручного онбординга, задан `CRANK_DEMO_SEED=true`;
|
||||
|
||||
+4
-13
@@ -165,17 +165,10 @@ services:
|
||||
- поднимать `postgres`, `admin-api`, `mcp-server`, `ui`;
|
||||
- использовать env vars вместо hardcoded config;
|
||||
- иметь persistent storage для БД и artifacts;
|
||||
- поддерживать настраиваемый bind host для published ports;
|
||||
- публиковать `ui`, `admin-api` и `mcp-server` на loopback, если reverse proxy живет на том же хосте;
|
||||
- публиковать `ui`, `admin-api` и `mcp-server` на LAN bind address или `0.0.0.0`, если reverse proxy вынесен на отдельный хост;
|
||||
- публиковать `ui`, `admin-api` и `mcp-server` на loopback по умолчанию;
|
||||
- не публиковать внутренние сервисы наружу без необходимости;
|
||||
- содержать healthchecks.
|
||||
|
||||
Практически это должно быть управляемо через env вроде `CRANK_PUBLISH_HOST`:
|
||||
|
||||
- `127.0.0.1` для local reverse proxy на том же Linux host;
|
||||
- конкретный внутренний IP или `0.0.0.0` для отдельного центрального reverse proxy в LAN.
|
||||
|
||||
## 10. Healthchecks
|
||||
|
||||
Нужны как минимум:
|
||||
@@ -238,20 +231,18 @@ CD для MVP должен:
|
||||
Workflow собирает `.env` на сервере из отдельных GitHub secrets. Для runtime-переменных нужно
|
||||
создавать secrets с теми же именами, что и у приложений:
|
||||
|
||||
- `POSTGRES_HOST`
|
||||
- `POSTGRES_PORT`
|
||||
- `POSTGRES_DB`
|
||||
- `POSTGRES_USER`
|
||||
- `POSTGRES_PASSWORD`
|
||||
- `CRANK_DATABASE_URL`
|
||||
- `CRANK_STORAGE_ROOT`
|
||||
- `CRANK_PUBLISH_HOST`
|
||||
- `CRANK_ADMIN_BIND`
|
||||
- `CRANK_MCP_BIND`
|
||||
- `CRANK_MCP_REFRESH_MS`
|
||||
- `CRANK_LOG_LEVEL`
|
||||
- `CRANK_SECRET_PROVIDER`
|
||||
- `CRANK_MASTER_KEY`
|
||||
- `CRANK_PUBLIC_BASE_URL`
|
||||
- `CRANK_MCP_PUBLIC_URL`
|
||||
- `CRANK_BASE_URL`
|
||||
- `CRANK_SESSION_SECRET`
|
||||
- `CRANK_PASSWORD_PEPPER`
|
||||
- `CRANK_SESSION_TTL_HOURS`
|
||||
|
||||
+17
-4
@@ -55,7 +55,11 @@ var/crank/
|
||||
|
||||
Минимально ожидаются:
|
||||
|
||||
- `CRANK_DATABASE_URL`
|
||||
- `POSTGRES_HOST`
|
||||
- `POSTGRES_PORT`
|
||||
- `POSTGRES_DB`
|
||||
- `POSTGRES_USER`
|
||||
- `POSTGRES_PASSWORD`
|
||||
- `CRANK_ADMIN_API_IMAGE`
|
||||
- `CRANK_MCP_SERVER_IMAGE`
|
||||
- `CRANK_UI_IMAGE`
|
||||
@@ -64,10 +68,8 @@ var/crank/
|
||||
- `CRANK_MCP_BIND`
|
||||
- `CRANK_MCP_REFRESH_MS`
|
||||
- `CRANK_LOG_LEVEL`
|
||||
- `CRANK_SECRET_PROVIDER`
|
||||
- `CRANK_MASTER_KEY`
|
||||
- `CRANK_PUBLIC_BASE_URL`
|
||||
- `CRANK_MCP_PUBLIC_URL`
|
||||
- `CRANK_BASE_URL`
|
||||
|
||||
Опционально:
|
||||
|
||||
@@ -151,6 +153,17 @@ runtime env-переменной. Это значит, что:
|
||||
- `CRANK_DEMO_SEED` хранится как GitHub secret `CRANK_DEMO_SEED`;
|
||||
- и так же для остальных runtime-переменных.
|
||||
|
||||
Для БД основной runtime-контракт теперь компонентный:
|
||||
|
||||
- `POSTGRES_HOST`
|
||||
- `POSTGRES_PORT`
|
||||
- `POSTGRES_DB`
|
||||
- `POSTGRES_USER`
|
||||
- `POSTGRES_PASSWORD`
|
||||
|
||||
`CRANK_DATABASE_URL` допускается только как backward-compatible fallback для локальных тестов и
|
||||
переходного периода, но не как основная deployment-модель.
|
||||
|
||||
## 8.1. Delivery artifacts
|
||||
|
||||
Для production-like запуска проект должен поставляться с:
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
- `auth_profile_ref` в `ExecutionConfig`;
|
||||
- CRUD endpoints для `auth_profiles`;
|
||||
- UI поля для upstream auth headers;
|
||||
- env `CRANK_SECRET_PROVIDER` и `CRANK_MASTER_KEY` в runtime docs.
|
||||
- env `CRANK_MASTER_KEY` в runtime docs.
|
||||
|
||||
Что еще не работает end-to-end:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user