Files
EvoBGP/docs/quickstart.md
T

5.7 KiB
Raw Blame History

Быстрый запуск

Примеры команд для 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.

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).

Проверка живости (без ключа):

Invoke-RestMethod -Uri "http://localhost:8080/v1/health"

Остановка:

docker compose --profile microvps down

Полная очистка томов (осторожно, удалит данные БД):

docker compose --profile microvps down -v

Вариант 2: Docker, профиль reference

Эталонное разбиение: отдельные контейнеры evobgp-api, evobgp-scheduler, evobgp-ingest, evobgp-render, evobgp-deploy, NATS JetStream, веб UI за nginx, опционально Prometheus.

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 для локального запуска включены 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:
$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"
  1. Запуск только HTTP API:
cd <корень-клона-репозитория>
go run .\cmd\evobgp-api

Или монолит microVPS (тот же API плюс горутины заглушек scheduler/ingest/render/deploy):

go run .\cmd\evobgp-all

При старте в лог выводится публичный ключ бандла (base64) — его нужно передать на сторону evobgp-node для проверки подписи. При включённом демо-сиде (EVOBGP_SEED_DEMO не равен 0, поведение по умолчанию) сервер также печатает подсказку с примером EVOBGP_API_KEYS.

Для разработки без настройки ключей (только демо-данные):

$env:EVOBGP_DEV_INSECURE = "1"
go run .\cmd\evobgp-api

Запросы с заголовком Authorization: Bearer dev получают роль operator в демо-tenant. Не включайте в продакшене.

Вариант 4: Веб-интерфейс (разработка)

cd web
npm install
npm run dev

Укажите в окружении API список разрешённых origin для CORS (пример для Vite на порту 5173):

$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:

.\scripts\build-openapi-html.ps1

Подробности — OPENAPI-GITEA.md.

Дальше

  • access.md — как выдать ключи и настроить ноду.
  • architecture.md — состав сервисов и пакетов.