Files
microdao-daarion/docs/runbook/release-runbook-sofiia-console.md
2026-03-02 10:00:08 -08:00

110 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Release Runbook: Sofiia Console (One-Page)
Короткий сценарій релізу для `sofiia-console` з мінімальним ризиком та швидким rollback.
## 1) Preflight
```bash
cd /opt/microdao-daarion
bash ops/preflight_sofiia_console.sh
```
Для прод-вікна (warnings -> fail):
```bash
cd /opt/microdao-daarion
STRICT=1 bash ops/preflight_sofiia_console.sh
```
## 2) Deploy order
Рекомендований порядок:
1. **NODA2 precheck (control plane)** — health/metrics локально.
2. **NODA1 rollout (data plane)** — оновлення runtime сервісів.
3. **NODA2 finalize (control plane)** — фінальний restart/control-plane підтвердження.
Приклад команд:
```bash
# NODA1 rollout
ssh root@144.76.224.179 "cd /opt/microdao-daarion && docker compose -f docker-compose.node1.yml up -d router gateway memory-service"
```
```bash
# NODA2 finalize
cd /opt/microdao-daarion
docker compose -f docker-compose.node2-sofiia.yml up -d sofiia-console router
```
## 3) Smoke
### 3.1 Health + metrics
```bash
curl -fsS http://127.0.0.1:8002/api/health
curl -fsS http://127.0.0.1:8002/metrics | rg "sofiia_"
```
### 3.2 Redis idempotency (коли backend=redis)
```bash
cd /opt/microdao-daarion
bash ops/redis_idempotency_smoke.sh
```
### 3.3 Audit auth check
```bash
# без ключа має бути 401
curl -s -o /dev/null -w "%{http_code}\n" "http://127.0.0.1:8002/api/audit"
```
```bash
# з ключем має бути 200
KEY="<SOFIIA_CONSOLE_API_KEY>"
curl -s -o /dev/null -w "%{http_code}\n" \
-H "X-API-Key: ${KEY}" \
"http://127.0.0.1:8002/api/audit"
```
## 4) Rollback
1. Повернути попередню ревізію/образ.
2. Перезапустити сервіси у зворотному порядку релізу.
3. Виконати мінімальний smoke (health/metrics + audit auth).
Приклад:
```bash
# NODA2 rollback
cd /opt/microdao-daarion
git checkout <previous_release_tag_or_sha>
docker compose -f docker-compose.node2-sofiia.yml up -d sofiia-console router
```
```bash
# NODA1 rollback
ssh root@144.76.224.179 "cd /opt/microdao-daarion && git checkout <previous_release_tag_or_sha> && docker compose -f docker-compose.node1.yml up -d router gateway memory-service"
```
Після rollback:
```bash
curl -fsS http://127.0.0.1:8002/api/health
curl -fsS http://127.0.0.1:8002/metrics | rg "sofiia_"
```
## 5) Post-release checklist
- Перевірити `sofiia_rate_limited_total` та `sofiia_idempotency_replays_total`.
- Перевірити, що audit пишеться/читається:
- `POST /api/chats/.../send`
- `GET /api/audit` з ключем.
- Запустити retention dry-run:
```bash
cd /opt/microdao-daarion
python3 ops/prune_audit_db.py --dry-run
```