diff --git a/docs/LOGBOOK.md b/docs/LOGBOOK.md index 04a0e95a0..90e3f5d69 100644 --- a/docs/LOGBOOK.md +++ b/docs/LOGBOOK.md @@ -39,12 +39,32 @@ - `awoooi-prod.spec.source.kustomize.images` 必須為空。 - 違反即 fail-fast,避免正式站再被支線或手動 image override 拉回舊版。 -**殘留觀察**: -- ArgoCD top-level health 仍顯示 `Degraded`,但 `.status.resources` 無任何 degraded child resource,controller log 顯示 sync 成功且沒有錯誤;目前以 rollout、Pod ready、public API health 與 Playwright 為實際可用性判斷。需另開一小段清理 Argo health stale/custom-health 行為,避免治理頁被橘燈誤導。 +**ArgoCD health 追補修復(2026-06-04 09:14 台北)**: +- 初始症狀:`awoooi-prod.status.health=Degraded`,但 `.status.resources` 無 unhealthy child resource,Deployment 實際皆 ready。 +- 根因 1:`argocd-cm` 設有 `resource.customizations.ignoreResourceUpdates.all: /status`,導致 Argo 對所有資源 status 更新過鈍。 +- 根因 2:`argocd-cmd-params-cm` 未啟用 `controller.resource.health.persist`,`.status.resources[].health` 不落入 Application CRD,top-level health 缺少子資源證據。 +- 根因 3:`k3s-status-report` 於 2026-06-04 01:00(台北)用舊 image 失敗後,CronJob `lastScheduleTime` 晚於 `lastSuccessfulTime`,Argo 正確判定該 CronJob degraded。 +- Live 修復: + - 移除 `argocd-cm.data.resource.customizations.ignoreResourceUpdates.all`。 + - 設定 `argocd-cmd-params-cm.data.controller.resource.health.persist=true`。 + - 重啟 `argocd-redis`、`argocd-server`、`argocd-application-controller` 以清 appTree cache 並載入新參數。 + - 手動補跑 `kubectl -n awoooi-prod create job --from=cronjob/k3s-status-report k3s-status-report-manual-20260604091401`;Job 使用 `f1ef7ec3` image,`Complete 1/1`,log 顯示 `k3s_daily_report_sent`。 +- 修復後: + - `k3s-status-report.status.lastSuccessfulTime=2026-06-04T01:14:38Z`。 + - `awoooi-prod`:`targetRevision=main`、`images=[]`、`revision=e355c8eb0fee1b1b5b41955811bc987ba2d88ef1`、`sync=Synced`、`health=Healthy`、`unhealthy=[]`。 + - Deployment resource health 已持久化為 `Healthy`;CronJob health 全部 `Healthy`。 + - Production workloads 維持 `awoooi-api 2/2`、`awoooi-web 2/2`、`awoooi-worker 1/1`、`awoooi-auto-repair-canary 1/1`,image 仍為 `f1ef7ec3...`。 +- 待後續 GitOps 化:目前 ArgoCD configmap live fix 尚未找到 repo source,需補一份 Argo config source-of-truth,避免 Argo 重裝後遺失 `controller.resource.health.persist=true` 與 status watch 修正。 + +**Ollama health 觀察**: +- 追補期間 API `/api/v1/health` 曾短暫 `degraded`,原因是 `ollama_gcp_a` 進短 cooldown 且 `ollama_local` (`11437`) 回 `502`。 +- 直接從 API Pod 測試:`ollama_gcp_a` (`11435`) `200`、`ollama_gcp_b` (`11436`) `200`、`ollama_local` (`11437`) `502`。 +- 這不影響既定順序 `GCP-A -> GCP-B -> 111/local -> Gemini fallback`;但 `ollama_local` 502 與 health aggregation 對 fallback 狀態的權重需另列 P1,避免把 fallback 節點問題誤報成核心服務故障。 **進度更新**: - Production 首頁版本恢復:`100%`。 - GitOps source guard:`0% -> 80%`;已在 CD 補 fail-fast,尚待下一次 CD 實跑驗證。 +- ArgoCD health truthfulness:`40% -> 85%`;live 已啟用 resource health persistence 並修復 CronJob degraded,尚待 config GitOps 化。 - CI/CD release gates:維持 `100%`,新增 source contract gate。 - 完整 AI 自動化飛輪:維持 `67%`;本輪是 production source 修復與可觀測性補強,未新增 auto-repair execution。