PowerGridБаримт бичиг
Ажиллагаа

Байршуулалт

3 мин уншихdocs/deployment.mn.mdGitHub дээр засах

01Бүтэц

  • Nexus backend/v1.47.3; go.mod ба core.lock ижил.
  • Backend/frontend: distribution commit SHA-тай GHCR образ (ghcr.io/gerege-systems/power-grid-mn/*).
  • Серверийн зам /opt/power-grid-mn; release releases/<sha>, амжилттайг current symlink.
  • Compose project power-grid-mn, volume бусад платформоос тусдаа.
  • API 127.0.0.1:8190, web 127.0.0.1:3190 (e-property-mn-ийн 8180/3180-тай нэг серверт мөргөлдөхгүй).
  • PostgreSQL/Redis гадагш порт нээхгүй.
  • Operator console: https://admin.powergrid.mn (CONTROL_PLANE_HOST). Зөвхөн .env-ийн CONTROL_PLANE_ALLOWED_CIDRS дахь хаягаас (таслалаар; production-д жагсаалтгүй бол татгалзана). Эхний оператор: docker compose exec backend /app/operator-bootstrap … (TOTP заавал).
  • / замыг Nexus frontend өөрөө үйлчилнэ (тусдаа статик landing байхгүй).

02Мониторинг — monitoring.powergrid.mn

Цөмийн ажиглалтын домэйны загвар (nexus-gerege-private: deploy/docker-compose.monitoring.yml, deploy/nginx/monitoring.nexus.gerege.mn.conf, setup_monitor_branding.sh) PowerGrid-д тааруулсан.

  • Тусдаа compose project power-grid-mn-monitoring (deploy/monitoring/compose.yml), платформын power-grid-mn_default сүлжээнд external-аар нэгдэнэ. Бүхэлдээ унасан ч платформ мэдэхгүй. Rollout апп амьд болсны дараа асаана; асахгүй бол rollout унахгүй.
  • Бүрэлдэхүүн: Prometheus (15 сек, 60 хоног / 10 GB), Alertmanager, Loki + Alloy (контейнерын лог, 31 хоног), Tempo (backend-ийн span, OTLP tempo:4318, 10%), Grafana 13, node-exporter, cAdvisor, blackbox (3 сайт nginx+TLS-ээр), postgres-exporter (+ PowerGrid-ийн тоолуур/төлбөрийн хэмжүүр postgres-exporter/queries.yml), redis-exporter.
  • Домэйн (nginx): / landing (deploy/monitoring/landing), /grafana/ (PowerGrid-ээр нэвтрэх — OIDC client powergrid-monitoring, зөвхөн анхны байгууллагын админ GrafanaAdmin болно, бусад нь татгалзагдана; нөөц нь admin + .env-ийн GRAFANA_ADMIN_PASSWORD), /alertmanager/ (basic auth, /root/powergrid-alertmanager-credentials.txt), /boards/<uid> → нийтийн зөвхөн унших самбар (pg-grid, api-overview, resilience, external-systems). Бусад зам 404. Prometheus, Loki, Tempo, exporter-ууд гадагш нээгдэхгүй.
  • Самбар (deploy/monitoring/grafana/dashboards, UI-аас засахгүй): цөмийн долоо (API, инфраструктур, тэсвэрлэлт, гадаад систем, лог, аюулгүй байдал, ажиглалт өөрөө) + Сүлжээ ба тоолуур (pg-grid, нүүр; нийтийн).
  • Сэрэмжлүүлэг 32 дүрэм (prometheus/rules): API SLO, дэд бүтэц, сайт/TLS, консол, гадаад систем, ажиглалт өөрөө, PowerGrid (тоолуур чимээгүй, өгөгдөл ирэхгүй, төлбөр гацсан). .env-д ALERT_TELEGRAM_TOKEN + ALERT_TELEGRAM_CHAT_ID (эсвэл ALERT_SMTP_*) тавих хүртэл зөвхөн /alertmanager/ дээр харагдана.
  • Брэнд ба монгол хэл: deploy/monitoring/setup-branding.sh rollout бүрт (landing, Grafana-ийн CSS/лого, sv-SE үүрэнд монгол орчуулга, нийтийн самбарын холбоос ба картын зураг). deploy хэрэглэгч nginx-ийг /etc/sudoers.d/powergrid-deploy-nginx-ийн хоёр дүрмээр (nginx -t, systemctl reload nginx) л шалгаж reload хийнэ.
  • powergrid_monitor DB роль: зөвхөн унших, BYPASSRLS, pg_monitor, 30 сек timeout (rollout үүсгэнэ, MONITOR_DB_PASSWORD).
  • Хязгаар: хянаж буй сервер дээрээ ажилладаг тул сервер бүхэлдээ унавал харагдахгүй; нөөцлөлтийн job ба түүний дүрэм (цөмийн backups.yml) PowerGrid-д алга — rollout-ийн өмнөх pg_dump-аас өөр нөөц байхгүй.

03Нэг удаагийн provision

  1. Сервер: Docker Engine + Compose plugin, nginx, certbot, flock, SSH. Deploy хэрэглэгч Docker болон зөвхөн энэ төслийн замд эрхтэй.
  2. /opt/power-grid-mn-г deploy хэрэглэгч эзэмшинэ. .env (0600) нь deploy/.env.example-ийн утгуудтай: POSTGRES_PASSWORD, SSO_DEFAULT_CLIENT_SECRET-д openssl rand -hex 32, хоёр encryption key-д openssl rand -base64 32.
  3. DNS: powergrid.mn A/AAAA → сервер. 80/443 нээх. certbot certonly --webroot -w /var/www/letsencrypt -d powergrid.mn, дараа нь deploy/nginx.conf-ийг суулгаж nginx -t && systemctl reload nginx.
  4. GitHub production environment (зөвхөн main), secrets: DEPLOY_HOST, DEPLOY_USER, DEPLOY_SSH_KEY, DEPLOY_KNOWN_HOSTS (host key-г итгэмжлэгдсэн сувгаар шалгасан мөр; pipeline дотор ssh-keyscan хийхгүй).
  5. Repo secret PRIVATE_NEXUS_TOKEN (цөм дээр contents:read).
  6. Main CI ногоон болсны дараа gh variable set DEPLOY_ENABLED --body true → Deploy powergrid.mn workflow. Түүнээс хойш main push бүр CI амжилттай бол автоматаар rollout.

04Rollout ба буцаалт

Хурд. PR-ийн CI ногоон болбол image-ууд кодын tree hash-аар (:tree-<hash>) push хийгдэнэ. Rebase-ээр merge хийсэн main commit ижил tree-тэй бол CI-ийн reuse job тэдгээрийг :<sha> болгон дахин tag хийгээд бусад job-ийг алгасна (≈7 мин хэмнэнэ); tree өөр бол бүх шалгалт ажиллана. Мониторинг /opt/power-grid-mn/monitoring-оос ажиллана; түүний файл эсвэл .env-ийн GRAFANA_*/ALERT_*/MONITOR_* өөрчлөгдсөн үед л (monitoring.stamp) дахин асааж, брэнд/зургийг шинэчилнэ.

Зөвхөн одоогийн main SHA, амжилттай push CI-тай release deploy хийнэ. Сервер дээр lock → image pull → pg_dump backup (/opt/power-grid-mn/backups) → migration → backend/frontend healthcheck → current солих. Healthcheck унавал өмнөх образ руу буцна; schema зөвхөн урагшаа.

05Шалгах

  • https://powergrid.mn/ 200, «PowerGrid» агуулна
  • https://powergrid.mn/health 200
  • https://powergrid.mn/ready 403, /api/platform/ 403
  • https://monitoring.powergrid.mn/ 200 (landing), /grafana/api/health 200, /alertmanager/ 401, /prometheus 404
  • Анхны tenant: admin.powergrid.mn/cp/start (консол); production-д demo хэрэглэгч үүсгэхгүй.
Энэ хуудас тус болсон уу?Таны хариу баримтыг сайжруулахад тусална.