ci(deploy): narrow image build and document pool settings
quality / changes (push) Successful in 7s
quality / commitlint (push) Skipped
quality / docker-check (push) Skipped
quality / openapi (push) Successful in 43s
quality / web (push) Successful in 1m20s
quality / go (push) Failing after 1m9s
quality / bird2 (push) Skipped
quality / postgres-integration (push) Failing after 2m29s
quality / legacy-compatibility (1.0.0) (push) Successful in 1m14s
quality / legacy-compatibility (2.56.2) (push) Successful in 1m34s
CD / quality (push) Failing after 8m40s
CD / publish (push) Skipped

Примеры Compose задают пул соединений. Контекст сборки бинарника сужен, зеркало базовых образов обновляется явно, алерты Prometheus дополнены.

Co-authored-by: Cursor <[email protected]>
This commit is contained in:
DenozordecandCursor committed 2026-11-02 17:24:25 +07:00
1 parent 240d83fc61
commit 5bdb1f1f93
13 files changed
+132 -55

No files matched your search

+12
View File
@@ -4,5 +4,17 @@
EVOBGP_REGISTRY=git.shx.one/denozord
EVOBGP_IMAGE_TAG=latest
# Stable ID of the local BIRD node for telemetry. Set uniquely per actual BIRD node
# when several control-plane deployments share one PostgreSQL database.
# EVOBGP_TELEMETRY_LOCAL_ID=bird2-node-a
# Prometheus: ограничение TSDB по размеру (WAL и head требуют отдельного запаса).
# EVOBGP_PROMETHEUS_RETENTION_SIZE=2GB
# Для защищенного Web UI (Traefik + Let's Encrypt + Cloudflare DNS challenge)
# используйте второй файл рядом: .env.web-sec (шаблон: .env.web-sec.example)
# Reference Compose hardcodes EVOBGP_SCHEDULER_MODE=db (trusted, all tenant scopes).
# Setting HTTP variables in this .env DOES NOT switch the scheduler mode.
# To use a single-tenant HTTP scheduler, explicitly override its service environment
# with MODE=http plus URL, bearer and tenant; see docs/quickstart.md.
+7
View File
@@ -4,6 +4,13 @@
EVOBGP_REGISTRY=git.shx.one/denozord
EVOBGP_IMAGE_TAG=latest
# Уникальный стабильный ID локального BIRD-узла в общей БД; не меняйте при рестарте.
# EVOBGP_TELEMETRY_LOCAL_ID=bird2-node-a
# Optional NATS для внешних клиентов: COMPOSE_PROFILES=nats
# Prometheus: TSDB retention size; WAL/head требуют дополнительного места.
# EVOBGP_PROMETHEUS_RETENTION_SIZE=2GB
# Имя compose-проекта (должно совпадать с name: в docker-compose.yaml)
COMPOSE_PROJECT_NAME=evobgp-microvps-full
@@ -7,6 +7,13 @@
EVOBGP_REGISTRY=git.shx.one/denozord
EVOBGP_IMAGE_TAG=latest
# Уникальный стабильный ID локального BIRD-узла в общей БД; не меняйте при рестарте.
# EVOBGP_TELEMETRY_LOCAL_ID=bird2-node-a
# Optional NATS для внешних клиентов: COMPOSE_PROFILES=nats
# Prometheus: TSDB retention size; WAL/head требуют дополнительного места.
# EVOBGP_PROMETHEUS_RETENTION_SIZE=2GB
# Защищенный Web UI (Traefik + Let's Encrypt + Cloudflare DNS challenge)
WEBUI_DOMAIN=bgp.shz.su
WEBUI_IP_WHITELIST=109.174.26.78/32,87.103.241.8/32
@@ -1,4 +1,4 @@
# Дополнительный файл Compose: профиль microvps-full + ужатые лимиты под хост ~1 ГиБ RAM.
# Дополнительный файл Compose: профиль microvps-full + ресурсные лимиты.
#
# Запуск (PowerShell, из каталога deploy\compose): сначала .env из .env.example, docker login git.shx.one, docker compose pull
# docker compose -f docker-compose.yaml -f docker-compose.microvps-full.yaml --profile microvps-full up -d
@@ -6,13 +6,13 @@
# Остановка:
# 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).
# Сумма memory limits с edge и без optional NATS — 984M, это не замер потребления.
# Пригодность для хоста ~1 ГиБ требует workload-теста с запасом ОС/Docker и BIRD peaks.
# Postgres ниже ~240–256 МиБ часто не успевает пройти healthcheck / падает по памяти — не уменьшайте postgres без tuned postgresql.conf.
services:
evobgp-all:
environment:
EVOBGP_BROKER_URL: nats://nats:4222
EVOBGP_SERVICE: evobgp-all
EVOBGP_RUNTIME_LOGS_DIR: /opt/evobgp/runtime-logs
volumes:
@@ -62,6 +62,7 @@ services:
max-file: "3"
nats:
profiles: ["nats"]
image: nats:2.10-alpine
restart: unless-stopped
command: ["-js", "-m", "8222"]
@@ -104,7 +105,7 @@ services:
- bird_etc:/etc/bird
- bird_run:/run/bird
entrypoint: ["/usr/local/bin/evobgp-agent"]
command: ["watch", "-socket=/run/bird/bird.ctl", "-watch-interval=30s"]
command: ["-socket=/run/bird/bird.ctl", "-watch-interval=30s", "watch"]
logging:
driver: json-file
options:
@@ -117,20 +118,18 @@ services:
depends_on:
postgres:
condition: service_healthy
nats:
condition: service_started
bird2:
condition: service_started
ports:
- "8080:8080"
environment:
EVOBGP_DATABASE_URL: postgres://evobgp:evobgp@postgres:5432/evobgp?sslmode=disable
# EVOBGP_BROKER_URL: nats://nats:4222
EVOBGP_NODE_DISPATCH_ENABLED: "1"
EVOBGP_BUNDLE_SEED_HEX: "bd8fbcd31545aacfdd228203beca8e945ab9a752f2ce5624cf42d9f316389a9d"
EVOBGP_HTTP_ADDR: ":8080"
EVOBGP_SEED_DEMO: "1"
EVOBGP_BIRDC_SOCKET: /run/bird/bird.ctl
EVOBGP_TELEMETRY_LOCAL_ID: ${EVOBGP_TELEMETRY_LOCAL_ID:-}
EVOBGP_BIRDC_INTERVAL: 30s
EVOBGP_BIRD_ACTIVE_DIR: /etc/bird
EVOBGP_BIRD_STAGING_DIR: /tmp/evobgp-bird-staging
@@ -233,10 +232,13 @@ services:
target: /etc/prometheus/prometheus.yml
- source: prometheus_alerts_yml
target: /etc/prometheus/alerts.yml
volumes:
- prometheus_data:/prometheus
command:
- --config.file=/etc/prometheus/prometheus.yml
- --storage.tsdb.path=/prometheus
- --storage.tsdb.retention.time=7d
- --storage.tsdb.retention.size=${EVOBGP_PROMETHEUS_RETENTION_SIZE:-2GB}
- --web.enable-lifecycle
logging:
driver: json-file
@@ -285,6 +287,7 @@ services:
volumes:
pgdata:
prometheus_data:
bird_etc:
bird_run:
traefik_letsencrypt:
+14 -19
View File
@@ -9,10 +9,10 @@
# 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).
# reference: 5× Go (api + scheduler + ingest + render + deploy) + postgres + bird2 + agent + web.
# Async jobs выполняются in-process в evobgp-api (jobs.Registry); NATS — опция `--profile nats` (см. docs/architecture.md).
# microvps: evobgp-all + postgres + bird2 + agent (без брокера и без UI).
# microvps-full: как microvps + evobgp-web-microvps (порт 3000) + nats + prometheus-microvps (порт 9090).
# microvps-full: как microvps + evobgp-web-microvps (порт 3000) + prometheus-microvps (порт 9090).
#
# Опция microVPS_sqlite из плана (без контейнера Postgres): требует реализации store на SQLite в приложении;
# пока используйте microvps с контейнерным Postgres (единые миграции).
@@ -35,7 +35,6 @@ x-logging: &default-logging
x-env-ref: &env-ref
EVOBGP_DATABASE_URL: postgres://evobgp:evobgp@postgres:5432/evobgp?sslmode=disable
EVOBGP_BROKER_URL: nats://nats:4222
x-env-micro: &env-micro
EVOBGP_DATABASE_URL: postgres://evobgp:evobgp@postgres:5432/evobgp?sslmode=disable
@@ -67,7 +66,7 @@ services:
memory: 384M
nats:
profiles: ["reference", "microvps-full"]
profiles: ["nats"]
image: nats:2.10-alpine
restart: unless-stopped
command: ["-js", "-m", "8222"]
@@ -86,8 +85,6 @@ services:
depends_on:
postgres:
condition: service_healthy
nats:
condition: service_started
bird2:
condition: service_started
ports:
@@ -99,6 +96,7 @@ services:
# DEV ONLY — не для production. Bearer dev + слабые demo-секреты (см. docs/access.md).
EVOBGP_DEV_INSECURE: "1"
EVOBGP_BIRDC_SOCKET: /run/bird/bird.ctl
EVOBGP_TELEMETRY_LOCAL_ID: ${EVOBGP_TELEMETRY_LOCAL_ID:-}
EVOBGP_BIRDC_INTERVAL: 30s
EVOBGP_BIRD_ACTIVE_DIR: /etc/bird
EVOBGP_BIRD_STAGING_DIR: /tmp/evobgp-bird-staging
@@ -120,16 +118,13 @@ services:
depends_on:
postgres:
condition: service_healthy
nats:
condition: service_started
evobgp-api:
condition: service_started
environment:
<<: *env-ref
# Split deploy: scheduler must enqueue jobs via API, not in-process Registry (ARCH-04).
# Trusted DB scheduler enqueues into the shared durable queue; API workers claim jobs.
EVOBGP_SCHEDULER_STANDALONE: "1"
EVOBGP_CONTROL_PLANE_URL: http://evobgp-api:8080
EVOBGP_SCHEDULER_BEARER: dev
EVOBGP_SCHEDULER_MODE: db
logging: *default-logging
deploy:
resources:
@@ -144,8 +139,6 @@ services:
depends_on:
postgres:
condition: service_healthy
nats:
condition: service_started
environment:
<<: *env-ref
logging: *default-logging
@@ -162,8 +155,6 @@ services:
depends_on:
postgres:
condition: service_healthy
nats:
condition: service_started
environment:
<<: *env-ref
logging: *default-logging
@@ -180,8 +171,6 @@ services:
depends_on:
postgres:
condition: service_healthy
nats:
condition: service_started
environment:
<<: *env-ref
EVOBGP_BIRD_ACTIVE_DIR: /etc/bird
@@ -225,6 +214,7 @@ services:
EVOBGP_HTTP_ADDR: ":8080"
EVOBGP_SEED_DEMO: "1"
EVOBGP_BIRDC_SOCKET: /run/bird/bird.ctl
EVOBGP_TELEMETRY_LOCAL_ID: ${EVOBGP_TELEMETRY_LOCAL_ID:-}
EVOBGP_BIRDC_INTERVAL: 30s
EVOBGP_BIRD_ACTIVE_DIR: /etc/bird
EVOBGP_BIRD_STAGING_DIR: /tmp/evobgp-bird-staging
@@ -315,10 +305,12 @@ services:
volumes:
- ../prometheus/prometheus-microvps.yml:/etc/prometheus/prometheus.yml:ro
- ../prometheus/alerts.yml:/etc/prometheus/alerts.yml:ro
- prometheus_data:/prometheus
command:
- --config.file=/etc/prometheus/prometheus.yml
- --storage.tsdb.path=/prometheus
- --storage.tsdb.retention.time=7d
- --storage.tsdb.retention.size=${EVOBGP_PROMETHEUS_RETENTION_SIZE:-2GB}
- --web.enable-lifecycle
logging: *default-logging
deploy:
@@ -359,7 +351,7 @@ services:
- bird_etc:/etc/bird
- bird_run:/run/bird
entrypoint: ["/usr/local/bin/evobgp-agent"]
command: ["watch", "-socket=/run/bird/bird.ctl", "-watch-interval=30s"]
command: ["-socket=/run/bird/bird.ctl", "-watch-interval=30s", "watch"]
logging: *default-logging
deploy:
resources:
@@ -377,10 +369,12 @@ services:
volumes:
- ../prometheus/prometheus.yml:/etc/prometheus/prometheus.yml:ro
- ../prometheus/alerts.yml:/etc/prometheus/alerts.yml:ro
- prometheus_data:/prometheus
command:
- --config.file=/etc/prometheus/prometheus.yml
- --storage.tsdb.path=/prometheus
- --storage.tsdb.retention.time=15d
- --storage.tsdb.retention.size=${EVOBGP_PROMETHEUS_RETENTION_SIZE:-2GB}
- --web.enable-lifecycle
logging: *default-logging
deploy:
@@ -390,6 +384,7 @@ services:
volumes:
pgdata:
prometheus_data:
bird_etc:
bird_run:
traefik_letsencrypt:
+9 -5
View File
@@ -1,4 +1,5 @@
# Standalone stack (без profiles): Portainer / `docker compose -f stack.microvps-full.yaml up -d`
# Standalone stack: Portainer / `docker compose -f stack.microvps-full.yaml up -d`.
# Основные сервисы запускаются без профиля; NATS доступен только в профиле `nats`.
# Эквивалент microvps-full из docker-compose.yaml + docker-compose.microvps-full.yaml,
# с встроенными configs для Prometheus (как у вас).
#
@@ -66,6 +67,7 @@ services:
max-file: "3"
nats:
profiles: ["nats"]
image: nats:2.10-alpine
restart: unless-stopped
command: ["-js", "-m", "8222"]
@@ -108,7 +110,7 @@ services:
- bird_etc:/etc/bird
- bird_run:/run/bird
entrypoint: ["/usr/local/bin/evobgp-agent"]
command: ["watch", "-socket=/run/bird/bird.ctl", "-watch-interval=30s"]
command: ["-socket=/run/bird/bird.ctl", "-watch-interval=30s", "watch"]
logging:
driver: json-file
options:
@@ -121,18 +123,16 @@ services:
depends_on:
postgres:
condition: service_healthy
nats:
condition: service_started
bird2:
condition: service_started
ports:
- "8080:8080"
environment:
EVOBGP_DATABASE_URL: postgres://evobgp:evobgp@postgres:5432/evobgp?sslmode=disable
EVOBGP_BROKER_URL: nats://nats:4222
EVOBGP_HTTP_ADDR: ":8080"
EVOBGP_SEED_DEMO: "1"
EVOBGP_BIRDC_SOCKET: /run/bird/bird.ctl
EVOBGP_TELEMETRY_LOCAL_ID: ${EVOBGP_TELEMETRY_LOCAL_ID:-}
EVOBGP_BIRDC_INTERVAL: 30s
EVOBGP_BIRD_ACTIVE_DIR: /etc/bird
EVOBGP_BIRD_STAGING_DIR: /tmp/evobgp-bird-staging
@@ -237,10 +237,13 @@ services:
target: /etc/prometheus/prometheus.yml
- source: prometheus_alerts_yml
target: /etc/prometheus/alerts.yml
volumes:
- prometheus_data:/prometheus
command:
- --config.file=/etc/prometheus/prometheus.yml
- --storage.tsdb.path=/prometheus
- --storage.tsdb.retention.time=7d
- --storage.tsdb.retention.size=${EVOBGP_PROMETHEUS_RETENTION_SIZE:-2GB}
- --web.enable-lifecycle
logging:
driver: json-file
@@ -361,6 +364,7 @@ services:
volumes:
pgdata:
prometheus_data:
bird_etc:
bird_run:
traefik_letsencrypt: