Files
EvoBGP/docs/production-checklist.md
T
DenozordecandCursor 6c6e76fca3
CI / changes (push) Successful in 7s
CI / openapi (push) Failing after 40s
CI / web (push) Successful in 56s
CI / commitlint (push) Skipped
CI / go (push) Failing after 34s
CI / bird2 (push) Skipped
CI / release (push) Skipped
feat(ops): protect metrics, rate-limit auth, agent secret timing, e2e smoke
Bearer для /metrics (EVOBGP_METRICS_TOKEN); rate limit /v1/auth/config; constant-time agent secret; OTel stub; Playwright smoke; HTTP_PROXY note; checklist обновлён.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-31 12:29:00 +07:00

2.5 KiB
Raw Blame History

Production checklist

Краткий чеклист перед выводом EvoBGP в production (10+ клиентов, нестабильная сеть).

Обязательно

  • EVOBGP_PRODUCTION=1 (или EVOBGP_ENV=production) — при старте API/evobgp-all процесс откажется стартовать, если нарушены жёсткие требования ниже (config.ValidateProductionEnforce).
  • EVOBGP_SEED_DEMO=0 — отключить demo-tenant и токен Bearer dev.
  • EVOBGP_DEV_INSECURE не задавать или 0 — не использовать lab-флаги в prod.
  • EVOBGP_BUNDLE_SEED_HEX — задать стабильный hex-ключ подписи бандлов; сохранить pubkey для нод.
  • PostgreSQL с TLS (sslmode не disable) при доступе вне private network.
  • EVOBGP_CORS_ORIGINS — явный whitelist origin веб-панели.
  • EVOBGP_STALE_ON_UPSTREAM_ERROR=1 (по умолчанию) — stale snapshot при сбоях CDN/ASN/DoH.
  • Опционально EVOBGP_CDN_PARTIAL_OK=1 — при сбое одного CDN source без stale cache продолжать refresh остальных (иначе fail модуля).

Рекомендуется

  • EVOBGP_JOB_MAX_CONCURRENT=16, EVOBGP_DB_MAX_CONNS=25, EVOBGP_COLLECT_CONCURRENCY=16 при росте tenants.
  • EVOBGP_NODE_DISPATCH_INSECURE_TLS=0 — только валидный TLS к agent.
  • Ограничить /metrics: EVOBGP_METRICS_TOKEN (Bearer) и/или сетевая политика / reverse proxy.
  • EVOBGP_AUTH_RATE_LIMIT (default 60/min per IP) на GET /v1/auth/config.
  • HTTP_PROXY / HTTPS_PROXY / NO_PROXY для CDN/DoH в censored сетях.
  • Опционально EVOBGP_OTEL_ENDPOINT (stub opt-in для будущего OTel export).
  • Профиль evobgp-all или HA API + персистентная job_audit (PostgreSQL SKIP LOCKED reclaim).
  • E2E smoke: pnpm --filter @evobgp/web run test:e2e против API (EVOBGP_E2E_API_URL) / UI (EVOBGP_E2E_UI=1).
  • Мониторинг drift: evobgp-deploy, last_applied_revision_id vs published.

Не использовать в prod

  • EVOBGP_CDN_ALLOW_PRIVATE=1 — только тесты/lab.
  • Plaintext EVOBGP_API_KEYS без ротации (break-glass — временно).
  • Ручное редактирование evobgp_*.conf на нодах без ревизии.