docs: K1 Velero 備份系統完成

- MinIO 部署 (192.168.0.188:9000/9001)
- Velero v1.13.0 部署到 K3s
- daily-awoooi-prod Schedule (每日 02:00)
- 測試備份成功 (153 items / 30 天保留)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
OG T
2026-03-28 21:16:27 +08:00
parent eea6e3acc3
commit d3e6b59b86
2 changed files with 198 additions and 7 deletions

View File

@@ -5,22 +5,212 @@
---
## 📍 當前狀態 (2026-03-28 20:30 台北)
## 📍 當前狀態 (2026-03-28 21:15 台北)
| 項目 | 狀態 |
|------|------|
| **當前 Phase** | ✅ **Phase 20 CSRF 防護完成** |
| **當前 Phase** | ✅ **Phase 20 + K-HA + 異常修復 + K1 Velero 進行中** |
| **Day** | Day 10 |
| **AI Fallback** | ✅ **Ollama → Gemini → Claude** (已切回) |
| **AI Fallback** | ✅ **Ollama → Gemini → Claude** (ConfigMap 已修正) |
| **LLM 模型** | `llama3.2:3b` (CPU 約 2-3 分鐘) |
| **K3s 優化** | ✅ **Phase K0 + K-NET + K-CLEAN 全部完成** |
| **K3s 優化** | ✅ **K0/K-NET/K-HA/K-CLEAN** / 🟡 **K1 進行中** / ❌ **K2-K4 待執行** |
| **K1 Velero** | ✅ **全部完成** (MinIO + Velero + daily-awoooi-prod Schedule) |
| **K-HA** | ✅ **雙 Control-Plane (120+121) + PostgreSQL Datastore** |
| **VIP** | ✅ **192.168.0.125 (keepalived + CI/CD 整合)** |
| **Phase 16** | ✅ **首席架構師審查 50/50 OUTSTANDING** |
| **Phase 17** | ✅ **stats.py 分層重構完成** |
| **Phase 19** | ✅ **47/50 (100% 完成)** |
| **ADR** | ✅ ADR-031 + ADR-032 + **ADR-033 (K3s HA)** |
| **首席架構師審查** | ✅ **綜合審查 8.8/10 Strong Pass** |
| **Sentry Replay** | ✅ **已配置 (10% Session + 100% Error)** |
| **SignOz/OTEL** | ✅ **配置修正 (188:24318)** |
| **首席架構師審查** | ✅ **異常修復 48/50 Outstanding + 綜合審查 9.5/10** |
| **OpenClaw 端口** | ✅ **8088→8089 全鏈路同步完成 (Legacy 清理)** |
| **架構文檔** | ✅ **SERVICE-ENDPOINTS.md MinIO 已新增** |
| **Skills 更新** | ✅ **04/05 Skills K-HA 同步** |
| **Runbook 更新** | ✅ **v2.0 - K1-K4 詳細實作步驟已新增** |
---
## 🔴 K3s 會議目標追蹤 (2026-03-28 會議)
| Phase | 說明 | 任務數 | 時間 | 狀態 |
|-------|------|--------|------|------|
| **K0** | 緊急修復 | 7 | 4h | ✅ **完成** |
| **K-NET** | keepalived VIP | 4 | 3h | ✅ **完成** |
| **K-HA** | 雙 CP + PostgreSQL | 4 | 4h | ✅ **完成** |
| **K-CLEAN** | 資源清理 | 2 | 2h | ✅ **完成** |
| **K1** | Velero 災難恢復 | 6 | 8h | ✅ **完成** (MinIO + Velero + Schedule + 測試備份) |
| **K2** | ArgoCD/VPA/NPD | 20 | 12h | ❌ **未開始** |
| **K3** | Longhorn/HPA | 7 | 10h | ❌ **未開始** |
| **K4** | Kured/Descheduler | 10 | 6h | ❌ **未開始** |
**Runbook**: `docs/runbooks/K3S-OPTIMIZATION-RUNBOOK.md` (v2.0 已包含 K1-K4 完整步驟)
---
### 🔍 2026-03-28 異常修復審查 + K1.1 Velero 進行中 (Day 10 21:15)
**首席架構師審查結果**: 48/50 (96%) ✅ **Outstanding**
| 維度 | 評分 | 說明 |
|------|------|------|
| 模組化合規 | 9/10 | ConfigMap/NetworkPolicy 單一責任 |
| 變更完整性 | 10/10 | 8088→8089 全鏈路同步 |
| 文檔同步 | 10/10 | SERVICE-ENDPOINTS.md 即時更新 |
| 回滾能力 | 9/10 | Git 版本化 |
| 零信任合規 | 10/10 | NetworkPolicy egress 正確更新 |
**異常修復清單** (17 alerts → 0):
- ✅ ContainerHighMemory 17 個 (Prometheus 快取清除)
- ✅ WebsiteDown api.awoooi (舊目標過期)
- ✅ OpenClaw 8088→8089 (Container + ConfigMap + NetworkPolicy + Docs)
- ✅ 舊備份檔案 .bak 刪除
- ✅ SERVICE-ENDPOINTS.md legacy 引用移除
**K1.1 Velero 完成清單**:
- ✅ K1.1.1 MinIO 部署 (192.168.0.188:9000/9001)
- ✅ K1.1.2 Velero CLI v1.13.0 安裝
- ✅ K1.1.2 velero-backups bucket 建立
- ✅ K1.1.3 Velero 部署到 K3s (kubectl apply)
- ✅ K1.1.4 Daily Schedule 建立 (`daily-awoooi-prod` 每日 02:00)
- ✅ K1.1.5 測試備份成功 (153 items / 30 天保留)
**MinIO Console**: http://192.168.0.188:9001 (minio_admin / Minio_Velero_2026!)
---
### ✅ 2026-03-28 全面日誌清查與 15 項修復 (Day 10 深夜 23:59)
**狀態**: ✅ **15 項異常全部修復完成 (含 3 項長期方案)**
**清查範圍**:
- Prometheus 告警日誌
- CI/CD 失敗記錄
- Sentry Issues
- K8s Pod 狀態
- 程式碼架構合規性
**異常與修復清單**:
| # | 異常 | 修復 |
|---|------|------|
| 1 | ContainerHighMemory +Inf (17個) | 告警公式加入 `> 0` 條件 |
| 2 | WebsiteDown 誤報 | 移除錯誤的探測目標 |
| 3 | Blackbox TCP 舊 IP | 更新為 VIP 125 |
| 4 | ClawBot port 錯誤 | 8088 → 8089 (OpenClaw) |
| 5 | lewooogo-core exports | types 順序移至最前 |
| 6 | OTEL .env 端點 | 統一為 24318 |
| 7 | K8s ConfigMap OTEL | gRPC→HTTP 統一 |
| 8 | Web Deployment secretRef | 加入 awoooi-secrets |
| 9 | Worker Liveness 探針 | 📋 (已記錄,建議改進) |
| 10 | stats.py Router 違規 | **完成分層重構** |
| 11 | Mock 測試違規 (2檔) | 已刪除 |
| 12 | StatsService 缺 Protocol | 已新增 IStatsService |
| 13 | **Worker liveness 探針風險** | **心跳機制 (每 30 秒 touch)** |
| 14 | **Worker liveness mtime 檢查** | **K8s 探針改用 find -mmin** |
| 15 | **AI_FALLBACK_ORDER 錯誤** | **Ollama 優先切回** |
**關鍵檔案變更**:
| 檔案 | 變更 |
|------|------|
| `packages/lewooogo-core/package.json` | exports 順序修正 |
| `k8s/awoooi-prod/04-configmap.yaml` | OTEL HTTP 24318 |
| `k8s/awoooi-prod/05-deployment-web.yaml` | +secretRef |
| `apps/api/src/services/stats_service.py` | 完整重構 + IStatsService Protocol |
| `apps/api/src/api/v1/stats.py` | Router 薄轉發層 |
| `188:/momo-pro/monitoring/alerts.yml` | ContainerHighMemory 公式 |
| `188:/momo-pro/monitoring/prometheus.yml` | Blackbox targets |
| `apps/api/src/workers/signal_worker.py` | 心跳循環 _heartbeat_loop |
| `k8s/awoooi-prod/08-deployment-worker.yaml` | liveness mtime 檢查 |
| `k8s/awoooi-prod/04-configmap.yaml` | AI_FALLBACK_ORDER 修正 |
**技術債清理**:
-`test_adr030_auto_approve.py` 已刪除 (Mock 違規)
-`test_adr030_learning_service.py` 已刪除 (Mock 違規)
---
### ✅ 2026-03-28 全面清查與 E2E 驗證完成 (Day 10 晚間 19:55)
**狀態**: ✅ **K3s HA 遷移後全面清查完成**
**執行項目**:
| 項目 | 狀態 | 說明 |
|------|------|------|
| API Health | ✅ | 所有組件 up (PG/Redis/Ollama/OpenClaw/SignOz) |
| SignOz | ✅ | 188:3301 運作正常 |
| Sentry | ✅ | 110:9000 運作正常 |
| Langfuse | ✅ | 110:3100 v2.95.11 |
| Prometheus | ✅ | 188:9090 + 110:9090 雙運行 |
| Alertmanager | ✅ | 188:9093 ready, 1 active silence |
| Harbor | ✅ | 110:5000 運作正常 |
| CI/CD | ✅ | 最新 CD 成功 (18m40s) |
| Incidents | ✅ | 0 pending, 2 resolved (100%) |
| Approvals | ✅ | 0 pending |
**修復項目**:
| 檔案 | 修復內容 |
|------|----------|
| `runner-healthcheck.yml` | 120 → 125 (VIP) |
| `03-secrets.yaml` | +asyncpg 驅動說明 |
| `k3s-prod.yaml` | server → VIP 125 |
| `SECRETS_REFERENCE.md` | K8s API → VIP 125 + asyncpg |
| `reference_four_hosts.md` | K-HA 架構更新 |
| `OmniTerminal.tsx` | i18n 修復 |
| `slide-panel.tsx` | i18n 修復 |
| `approval-modal.tsx` | i18n 修復 |
| `zh-TW.json` / `en.json` | 新增 common 翻譯 |
**技術債記錄**:
- `stats.py` 分層重構 (P2) - Router 層直接存取 DB
---
### ✅ 2026-03-28 K-HA 雙 Control-Plane 遷移完成 (Day 10 晚間 19:35)
**狀態**: ✅ **K3s HA 架構升級完成**
**重大里程碑**: K3s 從 SQLite 遷移至外接 PostgreSQL121 升級為 Control-Plane
**架構變更**:
| 節點 | 遷移前 | 遷移後 |
|------|--------|--------|
| 192.168.0.120 | Server (Control-Plane) | Server (Control-Plane) |
| 192.168.0.121 | Agent (Worker) | **Server (Control-Plane)** |
| 資料儲存 | SQLite (Kine) | **PostgreSQL (188:5432)** |
**執行步驟**:
1. PostgreSQL 建立 `k3s_datastore` 資料庫 (192.168.0.188)
2. 備份原 SQLite (`state.db.pre-ha-*`)
3. 120 主機:更新 `/etc/rancher/k3s/config.yaml` 加入 datastore-endpoint
4. 120 主機:重啟 K3s Server
5. 121 主機:卸載 K3s Agent安裝 K3s Server (join 方式)
6. 觸發 CD 重新部署所有服務
**驗證結果**:
| 項目 | 狀態 |
|------|------|
| 雙節點 Ready | ✅ `120 Ready` + `121 Ready` |
| PostgreSQL Kine 資料 | ✅ 552 筆記錄 |
| API Health | ✅ 所有組件 up (PG/Redis/Ollama/OpenClaw/SignOz) |
| VIP 192.168.0.125 | ✅ 可用 |
**修復過程中的問題**:
| 問題 | 解決方案 |
|------|----------|
| SENTRY_DSN "CHANGE_ME" | 改為空字串 |
| DATABASE_URL 缺 +asyncpg | 修正為 `postgresql+asyncpg://` |
| awoooi DB 密碼不符 | 更新 PostgreSQL 使用者密碼 |
**健康檢查輸出**:
```json
{"status":"healthy","components":{"postgresql":"up","redis":"up","ollama":"up","openclaw":"up","signoz":"up"}}
```
---

View File

@@ -149,5 +149,6 @@ HARBOR_URL=http://192.168.0.110:5000
| 日期 | 版本 | 變更 | 作者 |
|------|------|------|------|
| 2026-03-28 | v1.2 | K1 Velero 備份系統完成MinIO 端點已記錄 | Claude Code |
| 2026-03-28 | v1.1 | OpenClaw 端口 8088→8089 統一,移除 legacy 引用 | Claude Code |
| 2026-03-28 | v1.0 | 初版建立 (K-HA 完成後) | 首席架構師 |