133 lines
5.7 KiB
Markdown
133 lines
5.7 KiB
Markdown
# Быстрый запуск
|
||
|
||
Примеры команд для **PowerShell**. Репозиторий: корень `EvoBGP`, Docker Compose лежит в `deploy\compose`.
|
||
|
||
## Требования
|
||
|
||
- **Docker** с поддержкой Compose v2 — для готового стека.
|
||
- **Go 1.22+** (версию см. в `go.mod`) — для локального запуска бинарников из исходников.
|
||
- **Node.js** и npm — для разработки веб-интерфейса в `web/`.
|
||
- **PostgreSQL** — если запускаете API вне Compose; строка подключения в `EVOBGP_DATABASE_URL`.
|
||
|
||
## Вариант 1: Docker, профиль microvps
|
||
|
||
Один процесс `evobgp-all` (HTTP API + in-process заглушки воркеров), PostgreSQL, BIRD2, `evobgp-agent`.
|
||
|
||
```powershell
|
||
cd deploy\compose
|
||
docker compose --profile microvps up -d --build
|
||
```
|
||
|
||
Ожидаемые сервисы:
|
||
|
||
- **API:** `http://localhost:8080` (внутри контейнера `EVOBGP_HTTP_ADDR=:8080`).
|
||
- **BGP:** порт **179/tcp** проброшен с контейнера BIRD (для отладки; в проде часто нужен `network_mode: host` или отдельная сеть — см. комментарии в `docker-compose.yaml`).
|
||
|
||
Проверка живости (без ключа):
|
||
|
||
```powershell
|
||
Invoke-RestMethod -Uri "http://localhost:8080/v1/health"
|
||
```
|
||
|
||
Остановка:
|
||
|
||
```powershell
|
||
docker compose --profile microvps down
|
||
```
|
||
|
||
Полная очистка томов (осторожно, удалит данные БД):
|
||
|
||
```powershell
|
||
docker compose --profile microvps down -v
|
||
```
|
||
|
||
## Вариант 2: Docker, профиль reference
|
||
|
||
Эталонное разбиение: отдельные контейнеры `evobgp-api`, `evobgp-scheduler`, `evobgp-ingest`, `evobgp-render`, `evobgp-deploy`, NATS JetStream, веб UI за nginx, опционально Prometheus.
|
||
|
||
```powershell
|
||
cd deploy\compose
|
||
docker compose --profile reference up -d --build
|
||
```
|
||
|
||
Полезные порты:
|
||
|
||
| Порт | Назначение |
|
||
|------|------------|
|
||
| 8080 | HTTP API (`evobgp-api`) |
|
||
| 3000 | Веб UI (`evobgp-web` → nginx, прокси на API) |
|
||
| 4222 | NATS |
|
||
| 9090 | Prometheus (в compose) |
|
||
| 179 | BGP (BIRD2) |
|
||
|
||
**Воркеры reference:** `evobgp-scheduler` ходит в API по HTTP (`EVOBGP_CONTROL_PLANE_URL`, `EVOBGP_SCHEDULER_BEARER`); в [docker-compose.yaml](../deploy/compose/docker-compose.yaml) для локального запуска включены `EVOBGP_DEV_INSECURE=1` на API и токен `dev` у планировщика. `evobgp-ingest` обновляет ETag CDN-источников; `evobgp-render` по умолчанию не трогает `published_revision` (включите `EVOBGP_RENDER_AUTOPUBLISH=1` осознанно); `evobgp-deploy` пишет в лог расхождение applied vs published. Очередь `jobs` остаётся in-process у **evobgp-api**; общий брокер — в планах.
|
||
|
||
В **evobgp-all** (microvps) те же пакеты крутятся в одном процессе и используют общий `jobs.Registry` без HTTP.
|
||
|
||
## Вариант 3: Локально без Docker (только API)
|
||
|
||
1. Поднимите PostgreSQL и создайте БД (или используйте существующую).
|
||
2. Установите переменные окружения в текущей сессии PowerShell:
|
||
|
||
```powershell
|
||
$env:EVOBGP_DATABASE_URL = "postgres://user:pass@localhost:5432/evobgp?sslmode=disable"
|
||
$env:EVOBGP_HTTP_ADDR = ":8080"
|
||
# Ключи обязательны для защищённых маршрутов (пример формата см. access.md)
|
||
$env:EVOBGP_API_KEYS = "op|YOUR_TENANT_ID|operator"
|
||
```
|
||
|
||
3. Запуск только HTTP API:
|
||
|
||
```powershell
|
||
cd <корень-клона-репозитория>
|
||
go run .\cmd\evobgp-api
|
||
```
|
||
|
||
Или монолит **microVPS** (тот же API плюс горутины заглушек scheduler/ingest/render/deploy):
|
||
|
||
```powershell
|
||
go run .\cmd\evobgp-all
|
||
```
|
||
|
||
При старте в лог выводится **публичный ключ бандла** (base64) — его нужно передать на сторону `evobgp-node` для проверки подписи. При включённом демо-сиде (`EVOBGP_SEED_DEMO` не равен `0`, поведение по умолчанию) сервер также печатает подсказку с примером `EVOBGP_API_KEYS`.
|
||
|
||
Для разработки без настройки ключей (только демо-данные):
|
||
|
||
```powershell
|
||
$env:EVOBGP_DEV_INSECURE = "1"
|
||
go run .\cmd\evobgp-api
|
||
```
|
||
|
||
Запросы с заголовком `Authorization: Bearer dev` получают роль operator в демо-tenant. **Не включайте в продакшене.**
|
||
|
||
## Вариант 4: Веб-интерфейс (разработка)
|
||
|
||
```powershell
|
||
cd web
|
||
npm install
|
||
npm run dev
|
||
```
|
||
|
||
Укажите в окружении API список разрешённых origin для CORS (пример для Vite на порту 5173):
|
||
|
||
```powershell
|
||
$env:EVOBGP_CORS_ORIGINS = "http://localhost:5173,http://127.0.0.1:5173"
|
||
```
|
||
|
||
В эталонном Compose для `evobgp-api` уже заданы origin для 5173 и 3000 — см. `deploy/compose/docker-compose.yaml`.
|
||
|
||
## Пересборка HTML из OpenAPI
|
||
|
||
После правок `docs/openapi.yaml`:
|
||
|
||
```powershell
|
||
.\scripts\build-openapi-html.ps1
|
||
```
|
||
|
||
Подробности — [OPENAPI-GITEA.md](OPENAPI-GITEA.md).
|
||
|
||
## Дальше
|
||
|
||
- [access.md](access.md) — как выдать ключи и настроить ноду.
|
||
- [architecture.md](architecture.md) — состав сервисов и пакетов.
|