目標讀者是平台工程與多 AZ Mac 叢集管理員。典型拓撲:stable-gw-a/b、canary-gw、observer 控制面,共四台以上物理 Mac。OpenClaw 彙總網關指標與 Webhook digest;Flagger 通過 Canary 與 AnalysisRun 決定權重。請先回到 首頁確認節點區域,再串讀 多 AZ 網關 Webhook 與 叢集日誌 Webhook。
三大痛點:① 網關版本與技能包未鎖,金絲雀節點收到半套設定;② AnalysisRun 只盯單一 HTTP 探針,忽略 doctor 與 digest;③ 失敗只打原始日誌,值班無法在 60 秒內判斷是否回滾。下文用一張閾值表、六步清單與三條 FAQ 把 Flagger 金絲雀跑通。
① 多節點網關版本切片與技能包鎖
按 AZ + ROLE 切三層:全域 Flagger 與 OpenClaw 共享欄位、區域層寫入口與權重、租戶層寫技能包 digest。金絲雀階段必須鎖定 skills.lock,禁止 canary-gw 載入未驗簽的技能包。
② AnalysisRun 指標閾值與探針合併
| 指標 | 閾值(基線) | 探針來源 |
|---|---|---|
| score | ≥95 晉升,<90 回滾 | OpenClaw 合併 readyz + doctor |
| 5xx 率 | ≤1.2% | 網關 access 與 canary 對比 |
| p95 延遲 | 較 stable 升幅 ≤18% | canary-gw 與 stable-gw 差分 |
| digest | 無新未分類失敗 | 近 5 分鐘 Webhook 摘要 |
Flagger MetricTemplate 應呼叫 /flagger/canary-score,回傳 score、node_breakdown、digest_sha256、retry_observed 四欄位。勿與 Argo Rollouts AnalysisRun 共用同一路徑,避免權杖互相覆蓋。
apiVersion: flagger.app/v1beta1
kind: MetricTemplate
metadata:
name: openclaw-gateway-score
spec:
provider:
type: webhooks
address: https://ctl.internal/flagger/canary-score
timeout: 3s
③ Webhook 失敗摘要廣播與權杖輪替
AnalysisRun 失敗時廣播固定五元組:rollout, step, node, reason, attempts。鑑權用雙權杖重疊視窗(建議 12 分鐘),覆蓋 Flagger 最長重試鏈。401 單獨廣播「鑑權失敗」;業務降級回傳 200 + 低 score,避免 Flagger 把抖動當壞版本。
- 建立 MetricTemplate 並綁定 Canary 的 analysis 段。
- 寫入 X-OpenClaw-Token,observer 校驗權杖版本。
- 合併四類探針:路由、5xx、p95、doctor deep。
- 按 5%、15%、30% 放量,每段結束寫 JSONL 摘要。
- 失敗觸發廣播,同 delivery id 60 秒內只推一條卡片。
- 預發演練 rollback,確認權重與 digest 同步回落。
④ 製品 rsync / 建置鎖參數
金絲雀階段不要停 rsync,應把 --bwlimit 降到 stable 的 40%、並發設為 1。建置鎖 TTL 須 ≥ AnalysisRun 全鏈最長耗時 + 一個探針週期(建議 900 秒)。持有鎖期間禁止向 canary 推送未驗 digest 的製品。若你使用 GitOps 映像流,可對照 Flux Webhook 金絲雀 的權杖與去重口徑。
⑤ 金絲雀回滾 FAQ
- 問:Flagger 與 Rollouts 能否共用 OpenClaw 端點?答:可共用 observer,但 metric 路徑與權杖必須隔離。
- 問:AnalysisRun 逾時要不要立刻回滾?答:先記 degraded 並廣播;連續兩次逾時或 score<90 再 rollback。
- 問:canary-gw 磁碟水位告警還能放量嗎?答:1TB 碟可用率 >88% 時凍結晉升,先 rsync 回遷再分析。
在真實 Mac 節點上跑通 Flagger 金絲雀
已公開 Argo Rollouts 與 Flux 姊妹教學;本文為 Flagger 路徑。為 canary-gw 單獨租用一台 Mac mini M4,AnalysisRun 才能反映真實漸進風險。