24 KiB
AWOOOI K3s 全景深度盤點 × 2026 主流對標 × 優化整合方案
產出:2026-05-08(K3s 專項深度版,補強 5/8 FINAL 文件第八節) 範圍:k8s/ 全部 manifest + .gitea/workflows + Migration SQL + AI Agent 對 K3s 介入鏈 方法:12-Agent 團隊並行盤點(5 Explore + critic + debugger + db-expert + tool-expert + web-researcher) 信心:High(每節 2+ agent 交叉驗證,Memory 對齊,附路徑+行號)
第一部分 — 集群拓撲現況真相
1.1 K3s 集群架構
| 項目 | 配置 | 風險 |
|---|---|---|
| Datastore | 外接 PostgreSQL 188:5432/k3s_datastore 透過 kine adapter |
🔴🔴🔴 188 是 K3s + AWOOOI app 共用 PG → 同時死 |
| Control Plane | 雙 Server: 120 (keepalived MASTER pri=101) + 121 (BACKUP pri=100) | ✅ HA |
| VIP | 192.168.0.125:6443 |
⚠️ 單 VIP,無 BGP |
| Worker Nodes | 120 / 121 / 188(agent 也跑工作負載) | ⚠️ 188 SPOF(PG/MinIO/Sentry/Langfuse/Local Ollama 全在) |
| CNI | Flannel(K3s 預設) | 🟠 無 eBPF 觀測能力(Cilium 才有) |
| LoadBalancer | Klipper-lb(K3s 內建) | 🟠 無 BGP / FRR |
| Storage | local-path-provisioner | ✅ 但因 0 PVC,未實際使用 |
| CoreDNS | 自訂上游 8.8.8.8 + 1.1.1.1,TTL 30s, HPA 1-3 | ✅ |
1.2 重大發現(10-Agent 交叉驗證)
🔥 K3s cluster 完全 stateless:
- 0 個 PVC、0 個 StatefulSet、0 個 storageClassName
- 所有 stateful 工作 offload 到 188 host:PostgreSQL(systemd) / Redis / MinIO / Sentry / Langfuse / Local Ollama
評價:
- ✅ 避開 local-path-provisioner 的鎖節點地獄
- ✅ K3s upgrade / node 重灌極乾淨
- 🔴 但 188 SPOF 嚴重:監控 + 資料 + AI + 備份目標全在同一主機
1.3 系統 Add-ons 盤點
| 組件 | 版本 | NS | 狀態 | 風險 |
|---|---|---|---|---|
| Kured | 1.15.1 | kured | ✅ | 🟠 PSA privileged + Prom URL hardcode 110:9090(drift) |
| Kube-State-Metrics | 2.10.1 | kube-state-metrics | ✅ | NodePort:30888 對外(無認證) |
| Descheduler | 0.30.1 | descheduler | ✅ | restricted PSA 已修 |
| NPD | 0.8.17 | node-problem-detector | ✅ | 🟠 privileged:true 無 capabilities drop |
| Velero | 1.13.0 | velero | ✅ | 🔴🔴🔴 SA 綁 cluster-admin + MinIO 密碼明文進 git |
| Event-Exporter | 1.7 | observability | ✅ | 30 天保留 |
| OTEL Collector | 0.96.0 | observability | ✅ | 🟠 runAsUser:0 + privileged ns + hostPath |
| ArgoCD | 待確認 | argocd | ✅ | 🟠 webhook HMAC 斷線無告警 |
1.4 工作負載盤點
| Deployment | replicas | resources req/limit | Probe | securityContext | 風險 |
|---|---|---|---|---|---|
| awoooi-api (prod) | 2 | 200m/512Mi → 1c/1Gi | ✅ 三段 | ❌ 缺 runAsNonRoot | 🔴 容器逃逸風險 |
| awoooi-web (prod) | 2 | 100m/256Mi → 500m/512Mi | ✅ 三段 | ❌ 缺 | 🔴 同上 |
| awoooi-worker (prod) | 1 | 100m/256Mi → 500m/512Mi | ⚠️ 檔案心跳 | ❌ 缺 | 🔴 + worker PDB maxUnavailable=1 + replicas=1 = 允許全停 |
| awoooi-api (dev) | 1 | 100m/256Mi → 500m/512Mi | ❌ 無 startup | ❌ 缺 | 🟠 image:dev-latest |
HPA:API/Web 2→6, Worker 1→3(CPU 70% + Mem 80%) VPA:全部 updateMode=Off ✅ 安全;🟠 無 admission policy 阻擋改 mode → HPA 衝突 PDB:API/Web minAvailable=1 ✅ / Worker maxUnavailable=1(replicas=1 危險)
CronJob 5 個:k3s-status / weekly-report / km-vectorize / backup-restore-test / drift-scanner — 全部 Forbid concurrency Migration Job 5 個:ttl 300s, backoffLimit 1,🔴 全部用 sed 解析 DATABASE_URL(PGPASSWORD 暴露 process list)
第二部分 — 五大致命問題(必須今日內處理)🔴🔴🔴
#1 Velero MinIO 密碼明文已進 git history
- 位置:
k8s/velero/01-credentials.yaml:13-14,commiteea6e3ac - 內容:
aws_access_key_id=<MINIO_ACCESS_KEY>/aws_secret_access_key=<MINIO_SECRET_KEY>;舊版曾保存明文,已改用 placeholder 記錄 - 後果:拿到 git repo(含 GitHub mirror)即可刪/竄改所有 Velero 備份 → DR 全崩
- 修復:① 立即輪換 MinIO root + Velero key;②
.gitignore加*-credentials.yaml;③git filter-repo擦歷史;④ 改 SealedSecret/ExternalSecret
#2 Velero ServiceAccount 綁 cluster-admin
- 位置:
k8s/velero/02-velero-install.yaml:28-29+velero-install-full.yaml - 後果:velero pod 被攻陷或惡意 Backup CRD 注入 = 整 K3s 全控
- 修復:改 ClusterRole 限定
velero.io/*+ 必要pods/exec、namespaces、pv/pvc list/get
#3 四個 CronJob 缺 system: awoooi label(5/5 事故根因再現)
- 位置:
k8s/awoooi-prod/13-cronjob-k3s-report.yaml:36-72、14-cronjob-weekly-report.yaml、15-cronjob-km-vectorize.yaml、16-cronjob-backup-restore-test.yaml - 根因:
02-network-policy.yaml:84-86egress 用system:awoooi篩選;default-deny-all 全 podSelector 生效;CronJob 沒 label → DNS、API、Telegram、PG egress 全擋 - drift-cronjob 已修,13/14/15/16 沒修 → 下次 reboot 必再炸
- 修復:四個 CronJob
template.metadata.labels全加system: awoooi
#4 三個 Deployment 全缺 securityContext
- 位置:
06-deployment-api.yaml:42-43、08-deployment-worker.yaml:43-44、05-deployment-web.yaml:35-36 - 缺什麼:
runAsNonRoot/runAsUser/allowPrivilegeEscalation:false/capabilities drop:[ALL]/readOnlyRootFilesystem - 後果:namespace enforce=baseline 雖不擋,任何容器逃逸 → 整集群 RBAC 提權(與 SSH MCP 0400 私鑰風險疊加)
- 修復:補 pod-level + container-level securityContext,namespace
enforce升至restricted
#5 NEMOTRON env 違反 4/12 暫停決議
- 位置:
06-deployment-api.yaml:64-65與04-configmap.yaml:77矛盾 - 內容:ConfigMap 設
ENABLE_NEMOTRON_COLLABORATION=false(暫停),Deployment env 又寫死true,env 優先 - 後果:K8s 重啟後重跑 Nemotron 60s×2 timeout 路徑
- 修復:刪 Deployment env 覆蓋
第三部分 — 完整問題清單(按優先級)
🔴 P0 本週必修(共 18 項)
安全 / Secrets
- Velero MinIO 密碼明文進 git(同上 #1)
- Velero SA 綁 cluster-admin(同上 #2)
.claude/settings.json18 條 sshpass + Telegram Token 明文(已知,未修)03-secrets.yaml16 處 CHANGE_ME 殘留(雖 .gitignore,force-add 風險)- cd.yaml 無 K8s secret 注入步驟(ADR-035 落地不徹底)
網路 / 工作負載
6. 4 個 CronJob 缺 system:awoooi label(同上 #3)
7. Migration Job 缺 system:awoooi label(DNS query 也被 NP 擋)
8. 三個 Deployment 缺 securityContext(同上 #4)
9. NEMOTRON env 衝突(同上 #5)
資料層
10. AwoooP Phase 1-7 七份 migration 完全無 rollback SQL(Phase 1 註解寫「見 _ROLLBACK.sql」但檔案不存在 = 詐欺)
11. RLS prod 落地未驗證(執行第六部分驗證 SQL;EwoooC 寫資料前必做,否則 cross-tenant leak)
12. 5 個 Migration Job 用 sed 解析 DATABASE_URL → PGPASSWORD 暴露 process list
13. 188 PG max_connections 待提到 200 + 加 pgbouncer(kine + awoooi + sentry + langfuse 共用,連線爆)
14. Velero Schedule CRD 找不到證據(只有 restore-test cron,可能根本沒在做定期 backup)
監控 / CI/CD 15. 120/121 無 node-exporter scrape job(K3s control plane 無監控) 16. SSH MCP 白名單缺 120/121(K3s worker 無自修能力) 17. cAdvisor 單點在 110(容器層監控 SPOF) 18. ArgoCD ↔ Gitea Webhook HMAC 斷線無告警
🟠 P1 兩週內(共 16 項)
安全強化
19. 部署 Sealed Secrets 或 External Secrets Operator(CD 自動解密注入)
20. Harbor ImagePullSecret(image pull 認證)
21. kured namespace 從 privileged 降 baseline
22. NetworkPolicy 0.0.0.0/0:443 egress → 改 Cilium FQDN policy 或 squid SNI 白名單
23. awoooi-executor-dev RBAC 從 update 降為 patch
24. Falco runtime threat detection(K3s 完全無 runtime security)
工作負載強化
25. Worker replicas:2 + maxUnavailable:1(PDB 不再允許全停)
26. Worker 補 startup probe + initialDelay 60s
27. dev API 補 startup probe(與 prod 對齊)
28. prometheus-multiproc emptyDir 加 sizeLimit:100Mi
29. NPD 改 capabilities.add:[SYS_ADMIN](取代 privileged:true)
30. OTEL collector 改 fsGroup:0 + readOnly hostPath(取代 runAsUser:0)
資料層 / 工具
31. 補 7 份 AwoooP rollback SQL
32. ClickHouse pool×ratio precheck Job + Prometheus alert(5/5 事故根因)
33. core/redis_keys.py 統一 namespace(33+ 處散落 awoooi:/ alert:/ governance:/ incident:)
34. Velero Schedule CRD daily full + 寫到 GCP-A MinIO(mc mirror cron)
🟡 P2 一個月內(共 14 項)
2026 主流工具導入
35. Kyverno policy 治理(require-labels / resource-limits / no-latest-tag)
36. Trivy Operator 持續掃描 image + config + SBOM
37. K8sGPT 對接本地 Ollama → 餵 OpenClaw(補 diagnostician_agent 的 K8s 語義層)
38. KRR cronjob 形式給 CPU/Memory 建議(補 VPA Off 模式盲點)
39. kube-bench CIS K3s benchmark 定期掃描
40. system-upgrade-controller 取代手動 K3s 升級
41. K3s etcd 快照推 S3/遠端(預設只在本機 /var/lib/rancher/k3s/server/db/snapshots)
K3s 強化
42. learning_service.py:529, 592 兩個 N+1 改批次(並非原稱的 line 5028)
43. cd.yaml 拆 5 個 reusable workflow(53860 bytes 維護地獄)
44. Migration manifest.yaml + helm.sh/hook-weight 控制執行順序
45. kine_request_duration_seconds{quantile=0.99} > 0.5 for 5m 告警(K3s datastore graceful degradation)
46. ArgoCD selfHeal 範圍涵蓋 ConfigMap(ignoreDifferences 只排除 Secret)
47. SSH MCP audit log 完整記錄(command/user/result/timestamp)
48. K3s audit log 啟用(CIS 1.2.19)
🟢 P3 兩個月內(共 10 項)
進階治理 + GitOps
49. Argo Rollouts progressive delivery(API/Web canary 10%→50%→100%)
50. Sloth/Pyrra SLO 自動化(API p99 latency / error rate)
51. Goldilocks VPA recommendation dashboard
52. kubescape RBAC visualization + security posture
53. cosign image signing + Kyverno policy 驗簽
54. ArgoCD ApplicationSet 多環境管理(dev/prod 同模板)
55. Argo CD Image Updater(自動偵測新 tag PR 回 git)
56. 6 個 GitHub Actions workflow 全部封存
57. K3s --datastore 評估從 kine+PG 退回 embedded etcd HA(節點 ≤5 場景,業界推薦反方向)
58. 188 SPOF 拆解:MinIO/Sentry/Langfuse 評估搬出
🔵 P4 戰略長期(Q3-Q4)
- eBPF 觀測棧(Cilium 取代 Flannel + Hubble + Beyla / OTel OBI 2026 beta)
- VictoriaMetrics 取代 Prometheus(記憶體 -60%)
- EU AI Act 8/2 高風險合規(倒數 86 天)
- K3s 多集群 Velero + ApplicationSet
- Karpenter 評估(裸機需 kwok provider)
第四部分 — 2026 K3s + AIOps 主流做法對標
4.1 八大主題對照表
| 主題 | 2026 主流 / Top 3 | AWOOOI 現況 | 該做但沒做 |
|---|---|---|---|
| K3s HA / 升級 | embedded etcd 3-server / system-upgrade-controller / Velero+etcd snapshot | 用外接 PG(kine) + Velero 但無 schedule 證據 | system-upgrade-controller / etcd snapshot 推遠端 / 季度 DR 演練 |
| Policy 治理 | Kyverno / OPA Gatekeeper / kube-bench / Polaris | 只有 PSS(baseline),無 Kyverno/OPA | Kyverno + kube-bench + PSS Restricted 強制 |
| GitOps 進階 | ArgoCD(97% 生產採用) / Argo Rollouts / Flagger+Flux | ArgoCD 已用,selfHeal+prune 4.5/5 成熟度 | Argo Rollouts canary / ApplicationSet 多環境 / Image Updater |
| 可觀測性 2026 | eBPF(Cilium+Hubble+Beyla/OTel OBI 2026 beta)/ VictoriaMetrics / Sloth Pyrra SLO | Prometheus + SignOz APM + OTel collector | eBPF 棧 / VictoriaMetrics(記憶體-60%)/ Sloth/Pyrra SLO |
| AIOps for K8s | K8sGPT(CNCF Sandbox) / HolmesGPT / KEDA event-scaling | 自建 12 Agent + 自建 K8sProvider MCP(11 工具,比 K8sGPT 深) | K8sGPT operator 接 Ollama 作第二 AI 視角 / KEDA 事件驅動擴展 |
| 資源優化 | Karpenter / Goldilocks / Robusta KRR | VPA updateMode=Off(無自動),無資源建議工具 | Goldilocks + KRR 一次掃描,常省 30-50% / VPA+HPA 衝突防護 |
| 備份 DR | Velero(標準) / Kasten K10(商用) / TrilioVault | Velero 已部署但 Schedule 證據缺 | Velero Schedule daily full / 3-2-1 / 季度 restore 演練 |
| Supply Chain Security | Trivy Operator / Falco / Kubescape / cosign+Sigstore | 完全無 | Trivy Operator + Falco + cosign+Kyverno 驗簽(生產裸跑風險) |
4.2 必備 8 項清單(依優先序)
| 優先 | 項目 | 工具 | 原因 |
|---|---|---|---|
| P0 | Runtime 安全監控 | Falco | 完全沒有 runtime threat detection,生產裸跑 |
| P0 | Image 漏洞掃描 | Trivy Operator | 無持續掃描,supply chain 盲區 |
| P0 | Velero 遠端備份驗證 | Velero Schedule + S3 | 備份在本機 = 沒備份 |
| P1 | Policy 治理 | Kyverno | 無 resource limit 強制,任意 Pod 可耗盡資源 |
| P1 | 資源右移 | Goldilocks + KRR | 無推薦數據,浪費或不足均無感知 |
| P1 | Progressive Delivery | Argo Rollouts | 現在部署無金絲雀,任何 bug 全流量即爆 |
| P2 | SLO 自動化 | Sloth/Pyrra | 無 error budget,告警只看症狀不看承諾 |
| P2 | K8sGPT operator | K8sGPT + Ollama | 飛輪可加第二 AI 視角,成本接近零 |
第五部分 — AI Agent 對 K3s 介入度評估(重大修正)
5.1 三層架構(修正前 monitoring agent 誤判)
| 層 | 實作 | 路徑 |
|---|---|---|
| MCP 工具層 | K8sProvider — 11 個 MCP tool 對外暴露 |
apps/api/src/plugins/mcp/providers/k8s_provider.py |
| Python Client 層 | kubernetes_asyncio 直接操作 API Server |
executor.py、k8s_repository.py、k8s_diagnostics.py、context_gatherer.py |
| SSH 逃生層 | host_repair_agent.py SSH→docker(不操作 K3s) |
apps/api/src/services/host_repair_agent.py |
5.2 已實作的 K3s MCP 工具(11 個)
讀取類(read-only):kubectl_get / k8s_get_pod_logs / k8s_get_events / k8s_describe_pod / k8s_get_hpa_status / k8s_get_node_conditions
寫入類(trust_score≥0.7):kubectl_delete / kubectl_scale / kubectl_restart / kubectl_rollout_undo / k8s_watch_rollout
安全守衛:namespace 白名單硬寫 awoooi-prod / 名稱 regex 防注入 / rollout_undo 標 human-triggered
5.3 介入能力等級:Level 3/5(先前誤判 2/5)
| 維度 | 能力 | 評分 |
|---|---|---|
| 觀察 Read | Prometheus PromQL MCP / kube-state-metrics / blackbox / 11 個 K8s read tool | ✅ 4/5 |
| 規劃 Plan | ActionPlanner 8 種 action_type / BlastRadius 評估 | ⚠️ 3/5(PATCH/EXEC/APPLY 4 種無模板) |
| 執行 Execute | K8sProvider 5 個寫入 tool(trust_score gate)+ host_repair SSH 逃生 | ⚠️ 3/5(HITL 多,auto 比例低) |
| 學習 Learn | learning_service KM 寫入 | ⚠️ 2/5(執行結果回灌 KM 不完整) |
5.4 K3s 異常盲區覆蓋率:35% 無法自動修復
| 異常 | AI 能見度 | 自動修復 |
|---|---|---|
| ImagePullBackOff | ⚠️ 部分 | ❌ 無 ActionType 對應 |
| Evicted | ⚠️ 部分 | ❌ 無專項指標 |
| PVC 滿 100% | ⚠️ 部分 | ❌ StorageClass 未配 auto-expand |
| HPA 無法 scale | ⚠️ 部分 | ❌ 無失敗告警 |
| Certificate 近期過期 | ❌ 盲區 | ❌ 無 cert-manager 整合 |
| RBAC 配置偏差 | ❌ 盲區 | ❌ 無自動修復 |
| etcd / kine 資料損毀 | ❌ 盲區 | ❌ 無健康檢查 |
5.5 缺口補齊(P1)
- 補 ConfigMap/Secret PATCH MCP tool
- 補 PVC/PV 查詢 tool
- 補 NetworkPolicy 檢視 tool
k8s_get_events改回傳結構化(解析 raw JSON)kubectl_get漏套_validate_namespace- 補 5 種異常的 ActionType(IMAGE_PULL_RETRY / POD_EVICT_RECOVERY / PVC_EXPAND_REQUEST / CERT_RENEW_TRIGGER / RBAC_DRIFT_REPAIR)
第六部分 — 過去 30 天 13 起事故 + 10 大根因模式 + 7 大未來預測
6.1 13 起事故時序(debugger agent)
| 日期 | 事故 / commit | 根因類別 |
|---|---|---|
| 04-14 | NP default-deny-all 9.4h GCP-A 全鏈擋 | NP 阻塞型 |
| 04-25 | Gitea LLM 生 kubectl scale 無 inventory | Inventory-Aware 缺失 |
| 04-25 | _ALLOWED_KUBECTL_PATTERN 飛輪 0% 14 天斷鏈 | 過濾邏輯反向誤傷 |
| 04-26~28 | host 告警誤生 kubectl rollout | LLM 對非 K8s asset 生 K8s 動作 |
| 04-28 | T0 Gap 6 related_approval_id 無寫入 | model drift |
| 04-28 | ssh-mcp-key known_hosts subPath 0 bytes | CD secret patch 漏 |
| 04-28 | NP 缺 22/tcp egress | NP 增量加孔 |
| 05-05 | 110/188 CPU 過載 13 天 0 告警 | 監控元件無監控 |
| 05-05 | working_set 取代 page cache | metric 來源錯 |
| 05-06 | dirty reboot 121 K3s | 自動恢復缺 |
| 05-07 | settings.json token 洩漏 | Secret 治理 |
| 05-08 | IMAGE_TAG_PLACEHOLDER 推上 ImagePullBackOff | apply -f 與 GitOps render 混用 |
6.2 10 大根因模式
- NP 阻塞型(增量加孔 + 無 single owner)
- Inventory-Aware 缺失(LLM 不知 target 是不是 K8s asset)
- Image Tag/Placeholder 中毒(apply -f 與 GitOps render 混用)
- CronJob SA/DNS 寫死(複製貼上未驗證)
- Probe/分類不當(page cache 假告警 / blackbox timeout 太短)
- Resource & Datastore 抖動(監控元件無監控、ClickHouse pool 三門檻無 lint)
- CD pipeline 不穩(無 CD 健康看板)
- Secret 治理(CHANGE_ME 注入鏈無啟動自驗 gate)
- Kubeconfig context gap(CD 121→120 是 workaround)
- 節點負載集中度(110 跑 4 服務 / 188 跑 4 服務 都單點)
核心洞察:48% commit 是 fix / 0 refactor / 無上游抽象 + 無 lint gate 的補丁式治理 = 反覆爆雷的 root pattern。
6.3 未來 30 天 7 大預測爆點
| # | 預測事故 | 為什麼會爆 | 預防動作 |
|---|---|---|---|
| 1 | 110 主機掛 → Ollama proxy/Harbor/Gitea runner 全斷 | 三服務全集中 110 | 把 Harbor / Gitea runner 遷 188 或 120 |
| 2 | 下一個 NP 漏孔事故 | 增量加孔模式不變 | CI 加 kubectl-validate + 必填 NP egress section |
| 3 | CronJob 自修報表斷鏈再現 | 無 health export | textfile collector last_success_timestamp |
| 4 | IMAGE_TAG_PLACEHOLDER 再次蓋掉 | apply -f 與 GitOps 混用 |
pre-commit hook 阻擋含 PLACEHOLDER 的 yaml |
| 5 | EU AI Act 8/2 + RLS prod 未確認 → cross-tenant leak | RLS 未驗 + EwoooC Phase 6 已開 | 立刻跑 cross-tenant pytest |
| 6 | SignOz/Sentry CH pool 改動崩潰 | 三門檻無 lint | CI XML schema validator |
| 7 | LLM 對新 alertname 生 kubectl scale unknown | inventory awareness alertname-by-alertname 補丁 | inventory hard-gate(任何 scale/rollout/delete 必查 cluster live inventory) |
第七部分 — RLS 落地驗證 SQL(執行於 awoooi_prod)
-- 1. 表是否存在
SELECT tablename FROM pg_tables
WHERE tablename LIKE 'awooop_%' OR tablename = 'budget_ledger'
ORDER BY tablename;
-- 2. RLS 是否啟用(核心驗證)
SELECT schemaname, tablename, rowsecurity, forcerowsecurity
FROM pg_tables
WHERE tablename IN (
'incidents','knowledge_entries','playbooks','audit_logs',
'awooop_contract_revisions','awooop_active_revisions','awooop_platform_subjects'
);
-- 3. RLS policies
SELECT schemaname, tablename, policyname, cmd, qual, with_check
FROM pg_policies
WHERE tablename LIKE 'awooop_%' OR tablename IN ('incidents','knowledge_entries','playbooks','audit_logs');
-- 4. Roles 是否建立
SELECT rolname, rolbypassrls, rolcanlogin
FROM pg_roles
WHERE rolname IN ('awooop_app','awooop_migration','awooop_platform_admin');
-- 5. 跨租戶隔離測試(最關鍵)
SET LOCAL ROLE awooop_app;
SET LOCAL app.project_id = 'ewoooc';
SELECT count(*) FROM incidents; -- 預期:0(如果 RLS 正確)
SET LOCAL app.project_id = 'awoooi';
SELECT count(*) FROM incidents; -- 預期:> 0
RESET ROLE;
-- 6. 種子資料
SELECT project_id, display_name, migration_mode, is_active
FROM awooop_projects;
-- 預期至少:'awoooi' + 'ewoooc'
第八部分 — 工具推薦表(12 工具)
| # | 工具 | 用途 | 整合工數 | 必要性 |
|---|---|---|---|---|
| 1 | k9s | K3s TUI 操作 | 0 天(本機裝) | ★★★★★ |
| 2 | stern | 多 Pod log tail | 0 天(本機裝) | ★★★★★ |
| 3 | KRR | CPU/Memory 建議(不需 VPA) | 0.5 天(cronjob) | ★★★★★ |
| 4 | K8sGPT | LLM 解釋 K8s 異常 → 餵 OpenClaw | 1 天(Helm + Ollama) | ★★★★★ |
| 5 | kube-bench | CIS K3s 合規掃描 | 0.5 天(一次性 Job) | ★★★★ |
| 6 | Falco | Runtime threat detection | 1.5 天(DaemonSet) | ★★★★★ |
| 7 | Trivy Operator | 持續 CVE + secret 掃描 | 1 天(operator) | ★★★★★ |
| 8 | Kyverno | Policy 治理 | 1.5 天(policy 編寫) | ★★★★★ |
| 9 | kubectx/kubens | context/namespace 切換 | 0 天(本機裝) | ★★★★ |
| 10 | Argo Rollouts | progressive delivery | 2 天(API/Web canary) | ★★★★ |
| 11 | kubescape | RBAC + security posture | 0.5 天(CLI 掃描) | ★★★★ |
| 12 | act | Gitea Actions 本機模擬 | 0.5 天(setup) | ★★★ |
第九部分 — Roadmap 修訂表
| 階段 | 範圍 | 主要動作 |
|---|---|---|
| 🔴 P0 本週 5/8-5/14 | 18 項 | Velero/Secret 撤離 + CronJob label 補 + Deployment securityContext + NEMOTRON env + RLS 驗證 + Migration rollback SQL + 188 PG max_connections |
| 🟠 P1 兩週內 5/15-5/28 | 16 項 | Sealed Secrets / Falco / Trivy Operator / Kyverno / Worker PDB / OTEL 降權 / NPD 限 caps / CH pool precheck / Velero Schedule + 異地 |
| 🟡 P2 一個月內 5/29-6/30 | 14 項 | K8sGPT + KRR + kube-bench / system-upgrade-controller / cd.yaml 拆 / Migration manifest / kine graceful degradation / 補 5 ActionType |
| 🟢 P3 兩個月內 7-8 月 | 10 項 | Argo Rollouts / Sloth/Pyrra / Goldilocks / kubescape / cosign+Kyverno 驗簽 / GitHub Actions 封存 / 評估 etcd HA |
| 🔵 P4 戰略 Q3-Q4 | 5 項 | eBPF(Cilium)+ VictoriaMetrics / EU AI Act / Karpenter / 多集群 |
總計 63 項,10-Agent 交叉驗證,附路徑+行號。
第十部分 — 引用來源 + 12-Agent 任務分配
Agent 並行任務分配
| Agent | 子任務類型 | 主要產出 |
|---|---|---|
| Explore × 5 | 集群拓撲 / 工作負載 / 安全網路 / 監控AI / CI/CD | 第一/三/五/六部分基礎事實 |
| critic | K3s manifest 安全審查 | 26 個問題(5 致命、8 高、9 中、4 低) |
| debugger | 過去 30 天事故 pattern | 13 起事故 / 10 模式 / 7 預測(第六部分) |
| db-expert | K3s datastore + storage + migration | 10 項資料層加固 + RLS 驗證 SQL(第七部分) |
| tool-expert | 工具鏈評估 + MCP 整合 | 12 工具推薦表(第八部分) |
| web-researcher | 2026 K3s + AIOps 主流做法 | 8 主題對標 + 8 必備清單(第四部分) |
Memory 對齊
feedback_clickhouse_pool_size_rules.md(5/5 事故)feedback_telegram_secrets_injection.md(ADR-035)feedback_secrets_leak_incidents_2026-04-18.md(零信任 3 層)feedback_secret_debug_output_ban.md(PG PW 暴露事故)project_cpu_overload_postmortem_20260505.md(110/188 過載)project_audit_20260507.md(5/7 全景審計,AwoooP RLS 紅燈)
與 5/8 FINAL 文件的差異與補強
| 項目 | 5/8 FINAL | 本文件補強 |
|---|---|---|
| K3s 章節 | 第 8 節 1 頁帶過 | 完整 10 部分深度展開 |
| Velero MinIO 密碼洩漏 | 未提 | 🔴🔴🔴 第二部分 #1 |
| 4 個 CronJob NP label | 未提 | 🔴🔴🔴 第二部分 #3 |
| 三 Deployment 缺 securityContext | 未提 | 🔴🔴🔴 第二部分 #4 |
| AwoooP migration 無 rollback | 提到「重大缺口」 | 第三部分 P0 #10 + 第七部分驗證 SQL |
| AI 對 K3s 介入等級 | 未量化 | 第五部分 Level 3/5 + 11 個 MCP tool 詳列 |
| 過去 30 天事故 pattern | 提到 cd.yaml 18 次修補 | 第六部分 13 起事故 + 10 模式 + 7 預測 |
| 2026 主流工具對照 | A/B/C/D 4 主題 | 第四部分 8 主題完整對標 |