docs: update README and Docker Compose configurations to clarify usage of pre-built images from the Container Registry, introduce the new microvps-full profile with Web UI, NATS, and Prometheus, and enhance quickstart instructions for improved deployment guidance.
CI / changes (push) Successful in 5s
CI / openapi (push) Has been skipped
CI / go (push) Successful in 19s
CI / bird2 (push) Successful in 15s
CI / docker-images (deploy/docker/bird2/Dockerfile, , evobgp-bird2) (push) Successful in 39s
CI / docker-images (deploy/docker/evobgp-agent/Dockerfile, , evobgp-agent) (push) Successful in 1m7s
CI / docker-images (deploy/docker/evobgp-web/Dockerfile, , evobgp-web) (push) Successful in 56s
CI / docker-images (deploy/docker/evobgp-web/Dockerfile, evobgp-all, evobgp-web-all) (push) Successful in 53s
CI / docker-images (evobgp-all, 1, deploy/docker/gobinary/Dockerfile, , evobgp-all) (push) Successful in 1m26s
CI / docker-images (evobgp-api, 1, deploy/docker/gobinary/Dockerfile, , evobgp-api) (push) Successful in 1m27s
CI / docker-images (evobgp-deploy, 0, deploy/docker/gobinary/Dockerfile, , evobgp-deploy) (push) Successful in 1m31s
CI / docker-images (evobgp-ingest, 0, deploy/docker/gobinary/Dockerfile, , evobgp-ingest) (push) Successful in 1m36s
CI / docker-images (evobgp-node, 0, deploy/docker/gobinary/Dockerfile, , evobgp-node) (push) Successful in 1m20s
CI / docker-images (evobgp-render, 0, deploy/docker/gobinary/Dockerfile, , evobgp-render) (push) Successful in 1m30s
CI / docker-images (evobgp-scheduler, 0, deploy/docker/gobinary/Dockerfile, , evobgp-scheduler) (push) Successful in 1m23s
CI / changes (push) Successful in 5s
CI / openapi (push) Has been skipped
CI / go (push) Successful in 19s
CI / bird2 (push) Successful in 15s
CI / docker-images (deploy/docker/bird2/Dockerfile, , evobgp-bird2) (push) Successful in 39s
CI / docker-images (deploy/docker/evobgp-agent/Dockerfile, , evobgp-agent) (push) Successful in 1m7s
CI / docker-images (deploy/docker/evobgp-web/Dockerfile, , evobgp-web) (push) Successful in 56s
CI / docker-images (deploy/docker/evobgp-web/Dockerfile, evobgp-all, evobgp-web-all) (push) Successful in 53s
CI / docker-images (evobgp-all, 1, deploy/docker/gobinary/Dockerfile, , evobgp-all) (push) Successful in 1m26s
CI / docker-images (evobgp-api, 1, deploy/docker/gobinary/Dockerfile, , evobgp-api) (push) Successful in 1m27s
CI / docker-images (evobgp-deploy, 0, deploy/docker/gobinary/Dockerfile, , evobgp-deploy) (push) Successful in 1m31s
CI / docker-images (evobgp-ingest, 0, deploy/docker/gobinary/Dockerfile, , evobgp-ingest) (push) Successful in 1m36s
CI / docker-images (evobgp-node, 0, deploy/docker/gobinary/Dockerfile, , evobgp-node) (push) Successful in 1m20s
CI / docker-images (evobgp-render, 0, deploy/docker/gobinary/Dockerfile, , evobgp-render) (push) Successful in 1m30s
CI / docker-images (evobgp-scheduler, 0, deploy/docker/gobinary/Dockerfile, , evobgp-scheduler) (push) Successful in 1m23s
This commit is contained in:
+1
-1
@@ -55,7 +55,7 @@ Job **changes** вычисляет два флага:
|
||||
git.shts.su/<owner_lowercase>/<имя>:<тег>
|
||||
```
|
||||
|
||||
где `<имя>` — одно из: `evobgp-api`, `evobgp-all`, `evobgp-scheduler`, `evobgp-ingest`, `evobgp-render`, `evobgp-deploy`, `evobgp-node`, `evobgp-web`, `evobgp-agent`, `evobgp-bird2`.
|
||||
где `<имя>` — одно из: `evobgp-api`, `evobgp-all`, `evobgp-scheduler`, `evobgp-ingest`, `evobgp-render`, `evobgp-deploy`, `evobgp-node`, `evobgp-web`, `evobgp-web-all` (UI с прокси на `evobgp-all` для профиля Compose `microvps-full`), `evobgp-agent`, `evobgp-bird2`.
|
||||
|
||||
Теги: `latest`, короткий SHA (7 символов), `sha-<полный_commit_sha>`.
|
||||
|
||||
|
||||
@@ -161,36 +161,49 @@ jobs:
|
||||
dockerfile: deploy/docker/gobinary/Dockerfile
|
||||
bin: evobgp-api
|
||||
birdc: "1"
|
||||
evobgp_upstream: ""
|
||||
- image: evobgp-all
|
||||
dockerfile: deploy/docker/gobinary/Dockerfile
|
||||
bin: evobgp-all
|
||||
birdc: "1"
|
||||
evobgp_upstream: ""
|
||||
- image: evobgp-scheduler
|
||||
dockerfile: deploy/docker/gobinary/Dockerfile
|
||||
bin: evobgp-scheduler
|
||||
birdc: "0"
|
||||
evobgp_upstream: ""
|
||||
- image: evobgp-ingest
|
||||
dockerfile: deploy/docker/gobinary/Dockerfile
|
||||
bin: evobgp-ingest
|
||||
birdc: "0"
|
||||
evobgp_upstream: ""
|
||||
- image: evobgp-render
|
||||
dockerfile: deploy/docker/gobinary/Dockerfile
|
||||
bin: evobgp-render
|
||||
birdc: "0"
|
||||
evobgp_upstream: ""
|
||||
- image: evobgp-deploy
|
||||
dockerfile: deploy/docker/gobinary/Dockerfile
|
||||
bin: evobgp-deploy
|
||||
birdc: "0"
|
||||
evobgp_upstream: ""
|
||||
- image: evobgp-node
|
||||
dockerfile: deploy/docker/gobinary/Dockerfile
|
||||
bin: evobgp-node
|
||||
birdc: "0"
|
||||
evobgp_upstream: ""
|
||||
- image: evobgp-web
|
||||
dockerfile: deploy/docker/evobgp-web/Dockerfile
|
||||
evobgp_upstream: ""
|
||||
- image: evobgp-web-all
|
||||
dockerfile: deploy/docker/evobgp-web/Dockerfile
|
||||
evobgp_upstream: evobgp-all
|
||||
- image: evobgp-agent
|
||||
dockerfile: deploy/docker/evobgp-agent/Dockerfile
|
||||
evobgp_upstream: ""
|
||||
- image: evobgp-bird2
|
||||
dockerfile: deploy/docker/bird2/Dockerfile
|
||||
evobgp_upstream: ""
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
@@ -225,6 +238,7 @@ jobs:
|
||||
IMAGE: ${{ matrix.image }}
|
||||
BIN: ${{ matrix.bin }}
|
||||
BIRDC: ${{ matrix.birdc }}
|
||||
EVOBGP_UPSTREAM: ${{ matrix.evobgp_upstream }}
|
||||
run: |
|
||||
set -euxo pipefail
|
||||
WS="${{ github.workspace }}"
|
||||
@@ -236,6 +250,9 @@ jobs:
|
||||
BUILD_ARGS+=(--build-arg "BIN=${BIN}")
|
||||
BUILD_ARGS+=(--build-arg "INSTALL_BIRDC=${BIRDC:-0}")
|
||||
fi
|
||||
if [ -n "${EVOBGP_UPSTREAM:-}" ]; then
|
||||
BUILD_ARGS+=(--build-arg "EVOBGP_UPSTREAM=${EVOBGP_UPSTREAM}")
|
||||
fi
|
||||
|
||||
if [ "$DO_PUSH" = "true" ]; then
|
||||
IMG="git.shts.su/${OWNER_LC}/${IMAGE}"
|
||||
|
||||
@@ -21,15 +21,19 @@ Control plane для управления префиксами, модулями
|
||||
|
||||
```powershell
|
||||
cd deploy\compose
|
||||
docker compose --profile microvps up -d --build
|
||||
Copy-Item .env.example .env -Force # EVOBGP_REGISTRY=git.shts.su/<owner>
|
||||
docker login git.shts.su
|
||||
docker compose --profile microvps pull
|
||||
docker compose --profile microvps up -d
|
||||
```
|
||||
|
||||
Профиль **microvps** поднимает `evobgp-all`, PostgreSQL, BIRD2 и агент. API по умолчанию: `http://localhost:8080`.
|
||||
Профиль **microvps** поднимает `evobgp-all`, PostgreSQL, BIRD2 и агент (образы из Container Registry, без `--build`). API по умолчанию: `http://localhost:8080`.
|
||||
|
||||
Эталонный стек (несколько сервисов, NATS, веб UI, Prometheus):
|
||||
|
||||
```powershell
|
||||
docker compose --profile reference up -d --build
|
||||
docker compose --profile reference pull
|
||||
docker compose --profile reference up -d
|
||||
```
|
||||
|
||||
Подробности портов и переменных окружения — в [docs/quickstart.md](docs/quickstart.md) и в комментариях в [deploy/compose/docker-compose.yaml](deploy/compose/docker-compose.yaml).
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
# Скопируйте в .env рядом с docker-compose.yaml и подставьте своего владельца реестра (нижний регистр).
|
||||
# Перед первым запуском: docker login git.shts.su
|
||||
|
||||
EVOBGP_REGISTRY=git.shts.su/denozord
|
||||
EVOBGP_IMAGE_TAG=latest
|
||||
@@ -1,15 +1,13 @@
|
||||
# Устаревший минимальный стек только bird2 + agent. Полные профили reference / microvps:
|
||||
# docker compose --profile reference up -d --build -f deploy/compose/docker-compose.yaml
|
||||
# docker compose --profile microvps up -d --build -f deploy/compose/docker-compose.yaml
|
||||
# Устаревший минимальный стек только bird2 + agent (образы из реестра, см. .env.example). Полный стек:
|
||||
# cd deploy/compose && docker compose pull && docker compose --profile reference up -d
|
||||
# cd deploy/compose && docker compose pull && docker compose --profile microvps up -d
|
||||
#
|
||||
# Для входящего BGP (TCP/179) на Linux часто нужен network_mode: host или macvlan — см. план §4.1.
|
||||
name: evobgp-bgp-stack
|
||||
|
||||
services:
|
||||
bird2:
|
||||
build:
|
||||
context: ../..
|
||||
dockerfile: deploy/docker/bird2/Dockerfile
|
||||
image: ${EVOBGP_REGISTRY:-git.shts.su/denozord}/evobgp-bird2:${EVOBGP_IMAGE_TAG:-latest}
|
||||
restart: unless-stopped
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
@@ -19,9 +17,7 @@ services:
|
||||
# network_mode: "host" # раскомментируйте при анонсе BGP с хоста
|
||||
|
||||
evobgp-agent:
|
||||
build:
|
||||
context: ../..
|
||||
dockerfile: deploy/docker/evobgp-agent/Dockerfile
|
||||
image: ${EVOBGP_REGISTRY:-git.shts.su/denozord}/evobgp-agent:${EVOBGP_IMAGE_TAG:-latest}
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- bird2
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
# Дополнительный файл Compose: профиль microvps-full + ужатые лимиты под хост ~1 ГиБ RAM.
|
||||
#
|
||||
# Запуск (PowerShell, из каталога deploy\compose): сначала .env из .env.example, docker login git.shts.su, docker compose pull
|
||||
# docker compose -f docker-compose.yaml -f docker-compose.microvps-full.yaml --profile microvps-full up -d
|
||||
#
|
||||
# Остановка:
|
||||
# docker compose -f docker-compose.yaml -f docker-compose.microvps-full.yaml --profile microvps-full down
|
||||
#
|
||||
# Лимиты под хост ~1 ГиБ: сумма лимитов контейнеров ~800 МиБ + запас ОС/Docker. При OOM увеличьте RAM VPS или уберите prometheus/nats из профиля (отдельная правка compose).
|
||||
|
||||
services:
|
||||
evobgp-all:
|
||||
environment:
|
||||
EVOBGP_BROKER_URL: nats://nats:4222
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: "0.85"
|
||||
memory: 280M
|
||||
|
||||
postgres:
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: "0.45"
|
||||
memory: 180M
|
||||
|
||||
bird2:
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
memory: 96M
|
||||
|
||||
evobgp-agent:
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
memory: 48M
|
||||
|
||||
nats:
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: "0.2"
|
||||
memory: 48M
|
||||
|
||||
evobgp-web-microvps:
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: "0.3"
|
||||
memory: 48M
|
||||
|
||||
prometheus-microvps:
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: "0.25"
|
||||
memory: 128M
|
||||
@@ -1,12 +1,18 @@
|
||||
# EvoBGP Compose: профили `reference` (эталон) и `microvps` (одна VPS).
|
||||
#
|
||||
# Образы EvoBGP тянутся из Container Registry (не собираются здесь). Префикс и тег — .env (см. .env.example):
|
||||
# EVOBGP_REGISTRY=git.shts.su/<owner> EVOBGP_IMAGE_TAG=latest
|
||||
# Перед up: docker login git.shts.su && docker compose pull
|
||||
#
|
||||
# Запуск:
|
||||
# docker compose --profile reference up -d --build
|
||||
# docker compose --profile microvps up -d --build
|
||||
# docker compose --profile reference up -d
|
||||
# docker compose --profile microvps up -d
|
||||
# microVPS ~1 ГиБ + Web UI — docs/quickstart.md и docker-compose.microvps-full.yaml
|
||||
#
|
||||
# reference: 5× Go (api + scheduler + ingest + render + deploy) + postgres + NATS JetStream + bird2 + agent + web.
|
||||
# Async jobs выполняются in-process в evobgp-api (jobs.Registry); NATS — задел под брокер (см. docs/architecture.md).
|
||||
# microvps: evobgp-all + postgres + bird2 + agent (без брокера).
|
||||
# microvps: evobgp-all + postgres + bird2 + agent (без брокера и без UI).
|
||||
# microvps-full: как microvps + evobgp-web-microvps (порт 3000) + nats + prometheus-microvps (порт 9090).
|
||||
#
|
||||
# Опция microVPS_sqlite из плана (без контейнера Postgres): требует реализации store на SQLite в приложении;
|
||||
# пока используйте microvps с контейнерным Postgres (единые миграции).
|
||||
@@ -36,7 +42,7 @@ x-env-micro: &env-micro
|
||||
|
||||
services:
|
||||
postgres:
|
||||
profiles: ["reference", "microvps"]
|
||||
profiles: ["reference", "microvps", "microvps-full"]
|
||||
image: postgres:16-alpine
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
@@ -58,7 +64,7 @@ services:
|
||||
memory: 384M
|
||||
|
||||
nats:
|
||||
profiles: ["reference"]
|
||||
profiles: ["reference", "microvps-full"]
|
||||
image: nats:2.10-alpine
|
||||
restart: unless-stopped
|
||||
command: ["-js", "-m", "8222"]
|
||||
@@ -72,12 +78,7 @@ services:
|
||||
|
||||
evobgp-api:
|
||||
profiles: ["reference"]
|
||||
build:
|
||||
context: ../..
|
||||
dockerfile: deploy/docker/gobinary/Dockerfile
|
||||
args:
|
||||
BIN: evobgp-api
|
||||
INSTALL_BIRDC: "1"
|
||||
image: ${EVOBGP_REGISTRY:-git.shts.su/denozord}/evobgp-api:${EVOBGP_IMAGE_TAG:-latest}
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
postgres:
|
||||
@@ -111,12 +112,7 @@ services:
|
||||
|
||||
evobgp-scheduler:
|
||||
profiles: ["reference"]
|
||||
build:
|
||||
context: ../..
|
||||
dockerfile: deploy/docker/gobinary/Dockerfile
|
||||
args:
|
||||
BIN: evobgp-scheduler
|
||||
INSTALL_BIRDC: "0"
|
||||
image: ${EVOBGP_REGISTRY:-git.shts.su/denozord}/evobgp-scheduler:${EVOBGP_IMAGE_TAG:-latest}
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
postgres:
|
||||
@@ -138,12 +134,7 @@ services:
|
||||
|
||||
evobgp-ingest:
|
||||
profiles: ["reference"]
|
||||
build:
|
||||
context: ../..
|
||||
dockerfile: deploy/docker/gobinary/Dockerfile
|
||||
args:
|
||||
BIN: evobgp-ingest
|
||||
INSTALL_BIRDC: "0"
|
||||
image: ${EVOBGP_REGISTRY:-git.shts.su/denozord}/evobgp-ingest:${EVOBGP_IMAGE_TAG:-latest}
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
postgres:
|
||||
@@ -161,12 +152,7 @@ services:
|
||||
|
||||
evobgp-render:
|
||||
profiles: ["reference"]
|
||||
build:
|
||||
context: ../..
|
||||
dockerfile: deploy/docker/gobinary/Dockerfile
|
||||
args:
|
||||
BIN: evobgp-render
|
||||
INSTALL_BIRDC: "0"
|
||||
image: ${EVOBGP_REGISTRY:-git.shts.su/denozord}/evobgp-render:${EVOBGP_IMAGE_TAG:-latest}
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
postgres:
|
||||
@@ -184,12 +170,7 @@ services:
|
||||
|
||||
evobgp-deploy:
|
||||
profiles: ["reference"]
|
||||
build:
|
||||
context: ../..
|
||||
dockerfile: deploy/docker/gobinary/Dockerfile
|
||||
args:
|
||||
BIN: evobgp-deploy
|
||||
INSTALL_BIRDC: "0"
|
||||
image: ${EVOBGP_REGISTRY:-git.shts.su/denozord}/evobgp-deploy:${EVOBGP_IMAGE_TAG:-latest}
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
postgres:
|
||||
@@ -210,9 +191,7 @@ services:
|
||||
|
||||
evobgp-web:
|
||||
profiles: ["reference"]
|
||||
build:
|
||||
context: ../..
|
||||
dockerfile: deploy/docker/evobgp-web/Dockerfile
|
||||
image: ${EVOBGP_REGISTRY:-git.shts.su/denozord}/evobgp-web:${EVOBGP_IMAGE_TAG:-latest}
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- evobgp-api
|
||||
@@ -226,13 +205,8 @@ services:
|
||||
memory: 128M
|
||||
|
||||
evobgp-all:
|
||||
profiles: ["microvps"]
|
||||
build:
|
||||
context: ../..
|
||||
dockerfile: deploy/docker/gobinary/Dockerfile
|
||||
args:
|
||||
BIN: evobgp-all
|
||||
INSTALL_BIRDC: "1"
|
||||
profiles: ["microvps", "microvps-full"]
|
||||
image: ${EVOBGP_REGISTRY:-git.shts.su/denozord}/evobgp-all:${EVOBGP_IMAGE_TAG:-latest}
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
postgres:
|
||||
@@ -259,11 +233,48 @@ services:
|
||||
cpus: "1.0"
|
||||
memory: 512M
|
||||
|
||||
# Web UI → evobgp-all (образ evobgp-web-all из реестра). Reference: сервис evobgp-web → evobgp-api.
|
||||
evobgp-web-microvps:
|
||||
profiles: ["microvps-full"]
|
||||
image: ${EVOBGP_REGISTRY:-git.shts.su/denozord}/evobgp-web-all:${EVOBGP_IMAGE_TAG:-latest}
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- evobgp-all
|
||||
ports:
|
||||
- "3000:80"
|
||||
logging: *default-logging
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: "0.5"
|
||||
memory: 128M
|
||||
|
||||
prometheus-microvps:
|
||||
profiles: ["microvps-full"]
|
||||
image: prom/prometheus:v2.54.1
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- evobgp-all
|
||||
ports:
|
||||
- "9090:9090"
|
||||
volumes:
|
||||
- ../prometheus/prometheus-microvps.yml:/etc/prometheus/prometheus.yml:ro
|
||||
- ../prometheus/alerts.yml:/etc/prometheus/alerts.yml:ro
|
||||
command:
|
||||
- --config.file=/etc/prometheus/prometheus.yml
|
||||
- --storage.tsdb.path=/prometheus
|
||||
- --storage.tsdb.retention.time=7d
|
||||
- --web.enable-lifecycle
|
||||
logging: *default-logging
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: "0.35"
|
||||
memory: 256M
|
||||
|
||||
bird2:
|
||||
profiles: ["reference", "microvps"]
|
||||
build:
|
||||
context: ../..
|
||||
dockerfile: deploy/docker/bird2/Dockerfile
|
||||
profiles: ["reference", "microvps", "microvps-full"]
|
||||
image: ${EVOBGP_REGISTRY:-git.shts.su/denozord}/evobgp-bird2:${EVOBGP_IMAGE_TAG:-latest}
|
||||
restart: unless-stopped
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
@@ -282,10 +293,8 @@ services:
|
||||
memory: 256M
|
||||
|
||||
evobgp-agent:
|
||||
profiles: ["reference", "microvps"]
|
||||
build:
|
||||
context: ../..
|
||||
dockerfile: deploy/docker/evobgp-agent/Dockerfile
|
||||
profiles: ["reference", "microvps", "microvps-full"]
|
||||
image: ${EVOBGP_REGISTRY:-git.shts.su/denozord}/evobgp-agent:${EVOBGP_IMAGE_TAG:-latest}
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- bird2
|
||||
|
||||
@@ -8,5 +8,7 @@ COPY web/ ./
|
||||
RUN npm run build
|
||||
|
||||
FROM public.ecr.aws/docker/library/nginx:1.27-alpine
|
||||
COPY deploy/docker/evobgp-web/nginx.conf /etc/nginx/conf.d/default.conf
|
||||
ARG EVOBGP_UPSTREAM=evobgp-api
|
||||
COPY deploy/docker/evobgp-web/nginx.conf /tmp/nginx-default.conf
|
||||
RUN sed -e "s/evobgp-api/${EVOBGP_UPSTREAM}/g" /tmp/nginx-default.conf > /etc/nginx/conf.d/default.conf && rm -f /tmp/nginx-default.conf
|
||||
COPY --from=build /web/build /usr/share/nginx/html
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
# Scrape для профиля compose microvps-full (метрики с evobgp-all).
|
||||
global:
|
||||
scrape_interval: 15s
|
||||
evaluation_interval: 15s
|
||||
|
||||
rule_files:
|
||||
- /etc/prometheus/alerts.yml
|
||||
|
||||
scrape_configs:
|
||||
- job_name: evobgp-all
|
||||
metrics_path: /metrics
|
||||
static_configs:
|
||||
- targets: ["evobgp-all:8080"]
|
||||
@@ -91,6 +91,8 @@ flowchart LR
|
||||
|
||||
Внутри `evobgp-all` все воркеры используют **тот же** `store` и `jobs.Registry`, что и HTTP handlers, поэтому `module_refresh` выполняется в том же процессе без HTTP.
|
||||
|
||||
Профиль Compose **`microvps-full`** добавляет к этому стеку **Web UI** (nginx → `evobgp-all`), **NATS** и **Prometheus** без отдельных контейнеров воркеров (функционально то же, что отдельные `scheduler`/`ingest`/… в reference). Запуск и лимиты под ~1 ГиБ RAM — в [quickstart.md](quickstart.md).
|
||||
|
||||
## Поток: ревизия и бандл для ноды
|
||||
|
||||
1. Оператор (роль `operator` или выше по политике) изменяет модули и запускает цепочку, приводящую к новой **ревизии** (часть шагов может быть асинхронной через jobs — см. OpenAPI).
|
||||
|
||||
+50
-4
@@ -46,7 +46,8 @@ docker login git.shts.su
|
||||
| `evobgp-render` | Render | [packages/…/evobgp-render](https://git.shts.su/denozord/-/packages/container/evobgp-render/latest) | `docker pull git.shts.su/denozord/evobgp-render:latest` |
|
||||
| `evobgp-deploy` | Deploy | [packages/…/evobgp-deploy](https://git.shts.su/denozord/-/packages/container/evobgp-deploy/latest) | `docker pull git.shts.su/denozord/evobgp-deploy:latest` |
|
||||
| `evobgp-node` | Нода на площадке | [packages/…/evobgp-node](https://git.shts.su/denozord/-/packages/container/evobgp-node/latest) | `docker pull git.shts.su/denozord/evobgp-node:latest` |
|
||||
| `evobgp-web` | Статика UI + nginx | [packages/…/evobgp-web](https://git.shts.su/denozord/-/packages/container/evobgp-web/latest) | `docker pull git.shts.su/denozord/evobgp-web:latest` |
|
||||
| `evobgp-web` | Статика UI + nginx (прокси на **evobgp-api**) | [packages/…/evobgp-web](https://git.shts.su/denozord/-/packages/container/evobgp-web/latest) | `docker pull git.shts.su/denozord/evobgp-web:latest` |
|
||||
| `evobgp-web-all` | Тот же UI, прокси на **evobgp-all** (профиль `microvps-full`) | [packages/…/evobgp-web-all](https://git.shts.su/denozord/-/packages/container/evobgp-web-all/latest) | `docker pull git.shts.su/denozord/evobgp-web-all:latest` |
|
||||
| `evobgp-agent` | Агент (bird2 в образе) | [packages/…/evobgp-agent](https://git.shts.su/denozord/-/packages/container/evobgp-agent/latest) | `docker pull git.shts.su/denozord/evobgp-agent:latest` |
|
||||
| `evobgp-bird2` | Только BIRD2 | [packages/…/evobgp-bird2](https://git.shts.su/denozord/-/packages/container/evobgp-bird2/latest) | `docker pull git.shts.su/denozord/evobgp-bird2:latest` |
|
||||
|
||||
@@ -63,7 +64,7 @@ docker run --rm -p 8080:8080 `
|
||||
git.shts.su/denozord/evobgp-api:latest
|
||||
```
|
||||
|
||||
Для полного стека удобнее **Compose** из репозитория: по умолчанию он собирает из исходников (`--build`). Чтобы использовать **уже скачанные** образы из реестра, задайте в override-файле или правке `deploy/compose/docker-compose.yaml` у сервисов поле **`image:`** вместо **`build:`** с тем же префиксом `git.shts.su/<owner>/...` и тегом (`:latest` или зафиксированный `:sha-...` для воспроизводимости). Подробности CI и имён — [.gitea/README.md](../.gitea/README.md).
|
||||
**Compose** в `deploy/compose` поднимает стек **только из образов реестра** (`image:`, без локальной сборки). Префикс и тег задаются через **`.env`** рядом с compose-файлами (шаблон — [deploy/compose/.env.example](../deploy/compose/.env.example)): `EVOBGP_REGISTRY=git.shts.su/<owner>` (владелец в **нижнем регистре**), `EVOBGP_IMAGE_TAG=latest` или SHA. Перед первым запуском: `docker login git.shts.su`, затем `docker compose pull` и `docker compose ... up -d`. Имена пакетов и CI — [.gitea/README.md](../.gitea/README.md).
|
||||
|
||||
## Вариант 1: Docker, профиль microvps
|
||||
|
||||
@@ -71,7 +72,10 @@ docker run --rm -p 8080:8080 `
|
||||
|
||||
```powershell
|
||||
cd deploy\compose
|
||||
docker compose --profile microvps up -d --build
|
||||
Copy-Item .env.example .env -Force # или создайте .env вручную; укажите EVOBGP_REGISTRY / EVOBGP_IMAGE_TAG
|
||||
docker login git.shts.su
|
||||
docker compose --profile microvps pull
|
||||
docker compose --profile microvps up -d
|
||||
```
|
||||
|
||||
Ожидаемые сервисы:
|
||||
@@ -97,13 +101,55 @@ docker compose --profile microvps down
|
||||
docker compose --profile microvps down -v
|
||||
```
|
||||
|
||||
## Вариант 1b: microVPS ~1 ГиБ RAM — полный набор + Web UI
|
||||
|
||||
Один монолит **`evobgp-all`** (те же in-process воркеры, что и в варианте 1), плюс **статическая панель** за nginx (`evobgp-web-microvps`), **NATS JetStream** (как в reference, для `EVOBGP_BROKER_URL` и будущей интеграции) и **Prometheus** со скрейпом метрик с `evobgp-all`. Отдельные контейнеры `evobgp-scheduler` / `evobgp-ingest` / … не нужны — это не дублирование логики, а тот же код в одном процессе.
|
||||
|
||||
**Рекомендация:** на хосте с ровно **1 ГиБ** включите **swap** (1–2 ГиБ), иначе при пиках возможен OOM. На **2+ ГиБ** можно поднять тот же профиль **без** второго файла — останутся более мягкие лимиты из основного `docker-compose.yaml`.
|
||||
|
||||
Из каталога `deploy\compose` (как в варианте 1: `.env` из `.env.example`, при необходимости `docker login git.shts.su`):
|
||||
|
||||
```powershell
|
||||
# С ужатыми лимитами и EVOBGP_BROKER_URL=nats://… (ориентир под ~1 ГиБ RAM на хосте)
|
||||
docker compose -f docker-compose.yaml -f docker-compose.microvps-full.yaml --profile microvps-full pull
|
||||
docker compose -f docker-compose.yaml -f docker-compose.microvps-full.yaml --profile microvps-full up -d
|
||||
```
|
||||
|
||||
Только профиль `microvps-full` и **без** файла `docker-compose.microvps-full.yaml` (лимиты как в базовом compose, без принудительной подстановки брокера в `evobgp-all`):
|
||||
|
||||
```powershell
|
||||
docker compose --profile microvps-full pull
|
||||
docker compose --profile microvps-full up -d
|
||||
```
|
||||
|
||||
При необходимости задайте брокер вручную для `evobgp-all` (override или `.env` рядом с compose): `EVOBGP_BROKER_URL=nats://nats:4222`.
|
||||
|
||||
| Порт | Назначение |
|
||||
|------|------------|
|
||||
| **3000** | Web UI (nginx → API под капотом) |
|
||||
| **8080** | Прямой HTTP API (`evobgp-all`) |
|
||||
| **9090** | Prometheus (`prometheus-microvps`) |
|
||||
| **4222** | NATS |
|
||||
| **179** | BGP (BIRD2), как в варианте 1 |
|
||||
|
||||
Проверка UI: откройте `http://<IP-вашей-VPS>:3000`. Health API: `http://<IP>:8080/v1/health`.
|
||||
|
||||
Остановка (если поднимали с двумя `-f`):
|
||||
|
||||
```powershell
|
||||
docker compose -f docker-compose.yaml -f docker-compose.microvps-full.yaml --profile microvps-full down
|
||||
```
|
||||
|
||||
## Вариант 2: Docker, профиль reference
|
||||
|
||||
Эталонное разбиение: отдельные контейнеры `evobgp-api`, `evobgp-scheduler`, `evobgp-ingest`, `evobgp-render`, `evobgp-deploy`, сервис **NATS JetStream** (в compose; привязка очереди задач к брокеру — следующая итерация), веб UI за nginx, опционально Prometheus.
|
||||
|
||||
```powershell
|
||||
cd deploy\compose
|
||||
docker compose --profile reference up -d --build
|
||||
Copy-Item .env.example .env -Force
|
||||
docker login git.shts.su
|
||||
docker compose --profile reference pull
|
||||
docker compose --profile reference up -d
|
||||
```
|
||||
|
||||
Полезные порты:
|
||||
|
||||
Reference in New Issue
Block a user