Байршуулалт
01Бүтэц
- Nexus
backend/;v1. 47. 3 go.modбаcore.lockижил. - Backend/frontend: distribution commit SHA-тай GHCR образ (
ghcr.).io/ gerege-systems/ power-grid-mn/ * - Серверийн зам
/; releaseopt/ power-grid-mn releases/<sha>, амжилттайгcurrentsymlink. - Compose project
power-grid-mn, volume бусад платформоос тусдаа. - API
127.0.0.1:8190, web127.0.0.1:3190(e-property-mn-ийн 8180/3180-тай нэг серверт мөргөлдөхгүй). - PostgreSQL/Redis гадагш порт нээхгүй.
- Operator console:
https://(admin. powergrid. mn CONTROL_). ЗөвхөнPLANE_ HOST .env-ийнCONTROL_дахь хаягаас (таслалаар; production-д жагсаалтгүй бол татгалзана). Эхний оператор:PLANE_ ALLOWED_ CIDRS docker compose exec backend /(TOTP заавал).app/ operator-bootstrap … /замыг Nexus frontend өөрөө үйлчилнэ (тусдаа статик landing байхгүй).
02Мониторинг — monitoring.powergrid.mn
Цөмийн ажиглалтын домэйны загвар (nexus-gerege-private: deploy/,
deploy/, setup_) PowerGrid-д тааруулсан.
- Тусдаа compose project
power-grid-mn-monitoring(deploy/), платформынmonitoring/ compose. yml power-grid-mn_сүлжээнд external-аар нэгдэнэ. Бүхэлдээ унасан ч платформ мэдэхгүй. Rollout апп амьд болсны дараа асаана; асахгүй бол rollout унахгүй.default - Бүрэлдэхүүн: 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/), redis-exporter.queries. yml - Домэйн (nginx):
/landing (deploy/),monitoring/ landing /grafana/(PowerGrid-ээр нэвтрэх — OIDC clientpowergrid-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/, UI-аас засахгүй): цөмийн долоо (API, инфраструктур, тэсвэрлэлт, гадаад систем, лог, аюулгүй байдал, ажиглалт өөрөө) + Сүлжээ ба тоолуур (monitoring/ grafana/ dashboards pg-grid, нүүр; нийтийн). - Сэрэмжлүүлэг 32 дүрэм (
prometheus/): API SLO, дэд бүтэц, сайт/TLS, консол, гадаад систем, ажиглалт өөрөө, PowerGrid (тоолуур чимээгүй, өгөгдөл ирэхгүй, төлбөр гацсан).rules .env-дALERT_+TELEGRAM_ TOKEN ALERT_(эсвэлTELEGRAM_ CHAT_ ID ALERT_SMTP_*) тавих хүртэл зөвхөн/alertmanager/дээр харагдана. - Брэнд ба монгол хэл:
deploy/rollout бүрт (landing, Grafana-ийн CSS/лого, sv-SE үүрэнд монгол орчуулга, нийтийн самбарын холбоос ба картын зураг).monitoring/ setup-branding. sh deployхэрэглэгч nginx-ийг/-ийн хоёр дүрмээр (etc/ sudoers. d/ powergrid-deploy-nginx nginx -t,systemctl reload nginx) л шалгаж reload хийнэ. powergrid_DB роль: зөвхөн унших, BYPASSRLS,monitor pg_monitor, 30 сек timeout (rollout үүсгэнэ,MONITOR_).DB_ PASSWORD - Хязгаар: хянаж буй сервер дээрээ ажилладаг тул сервер бүхэлдээ унавал харагдахгүй; нөөцлөлтийн job ба түүний
дүрэм (цөмийн
backups.yml) PowerGrid-д алга — rollout-ийн өмнөхpg_dump-аас өөр нөөц байхгүй.
03Нэг удаагийн provision
- Сервер: Docker Engine + Compose plugin, nginx, certbot,
flock, SSH. Deploy хэрэглэгч Docker болон зөвхөн энэ төслийн замд эрхтэй. /-г deploy хэрэглэгч эзэмшинэ.opt/ power-grid-mn .env(0600) ньdeploy/.-ийн утгуудтай: POSTGRES_PASSWORD, SSO_DEFAULT_CLIENT_SECRET-дenv. example openssl rand -hex 32, хоёр encryption key-дopenssl rand -base64 32.- DNS:
powergrid.mnA/AAAA → сервер. 80/443 нээх.certbot certonly --webroot -w /, дараа ньvar/ www/ letsencrypt -d powergrid. mn deploy/-ийг суулгажnginx. conf nginx -t && systemctl reload nginx. - GitHub
productionenvironment (зөвхөнmain), secrets:DEPLOY_HOST,DEPLOY_USER,DEPLOY_SSH_KEY,DEPLOY_(host key-г итгэмжлэгдсэн сувгаар шалгасан мөр; pipeline дотор ssh-keyscan хийхгүй).KNOWN_ HOSTS - Repo secret
PRIVATE_(цөм дээр contents:read).NEXUS_ TOKEN - Main CI ногоон болсны дараа
gh variable set DEPLOY_→ENABLED --body true Deploy powergrid.workflow. Түүнээс хойш main push бүр CI амжилттай бол автоматаар rollout.mn
04Rollout ба буцаалт
Хурд. PR-ийн CI ногоон болбол image-ууд кодын tree hash-аар (:tree-<hash>) push хийгдэнэ. Rebase-ээр
merge хийсэн main commit ижил tree-тэй бол CI-ийн reuse job тэдгээрийг :<sha> болгон дахин tag хийгээд бусад
job-ийг алгасна (≈7 мин хэмнэнэ); tree өөр бол бүх шалгалт ажиллана. Мониторинг /-оос
ажиллана; түүний файл эсвэл .env-ийн GRAFANA_*/ALERT_*/MONITOR_* өөрчлөгдсөн үед л (monitoring.)
дахин асааж, брэнд/зургийг шинэчилнэ.
Зөвхөн одоогийн main SHA, амжилттай push CI-тай release deploy хийнэ. Сервер дээр
lock → image pull → pg_dump backup (/) → migration →
backend/frontend healthcheck → current солих. Healthcheck унавал өмнөх образ руу
буцна; schema зөвхөн урагшаа.
05Шалгах
https://200, «PowerGrid» агуулнаpowergrid. mn/ https://200powergrid. mn/ health https://403,powergrid. mn/ ready /api/platform/403https://200 (landing),monitoring. powergrid. mn/ /200,grafana/ api/ health /alertmanager/401,/prometheus404- Анхны tenant: admin.powergrid.mn/cp/start (консол); production-д demo хэрэглэгч үүсгэхгүй.