本文聚焦 Argo Rollouts 的 AnalysisRun Webhook,而不是 Argo CD 的应用同步。Argo CD 只保证清单落地;真正决定 OpenClaw 网关金丝雀能否从 5% 推到 25% 的,是 Rollouts 每一轮分析能否读到可信的多节点指标、失败摘要和重试结果。
场景是三台以上 clustervps Mac:stable-gw-a、stable-gw-b、canary-gw,再加一台控制面。OpenClaw 负责网关、任务与摘要聚合;Rollouts 负责渐进发布节奏。若你还在搭多 AZ 网关,请先读 多可用区网关与令牌轮换;若关注流量比例与技能切片,可串读 多 AZ 金丝雀与合并探针。
先把 Argo CD 与 Rollouts 分清
| 组件 | 职责 | 本文是否触碰 |
|---|---|---|
| Argo CD | 同步 Deployment、Service、AnalysisTemplate 等清单。 | 只作为前置,不讨论回滚策略。 |
| Argo Rollouts | 按 steps 调权,并在 AnalysisRun 中调用 Webhook 指标。 | 核心:读 OpenClaw 网关指标后决定暂停、晋升或回滚。 |
| OpenClaw | 在多节点上合并 readyz、webhook digest、队列与网关延迟。 | 提供 Rollouts 可消费的单一 JSON。 |
最小可复现步骤清单
- 冻结节点标签:在每台 Mac 写入
ROLE=gateway|worker|observer与AZ,让 AnalysisRun 摘要能反查物理节点。 - 暴露合并探针:控制面拉取 canary-gw 的 p95、5xx、队列深度、OpenClaw doctor 与近五分钟 webhook digest,合成
/rollouts/canary-score。 - 配置令牌:Rollouts Webhook 请求带
X-OpenClaw-Token;OpenClaw 侧用双令牌重叠窗口轮换,窗口长度覆盖最长 AnalysisRun 重试链。 - 设定重试:Webhook 超时 3 秒、最多 3 次指数退避;超时计入 degraded,不直接扩流量。
- 触发 AnalysisRun:Rollouts 在 5%、10%、25% 三个台阶调用 Webhook,只有 score 达标、digest 无新未分类失败、doctor 为绿时才继续。
- 广播失败摘要:失败时不要把原始 body 发群;广播
rollout, step, node, reason, attempts,并把同一 delivery id 折叠为一条卡片。
apiVersion: argoproj.io/v1alpha1
kind: AnalysisTemplate
metadata:
name: openclaw-gateway-canary
spec:
metrics:
- name: openclaw-score
provider:
web:
url: https://ctl.internal/rollouts/canary-score
method: GET
headers:
- key: X-OpenClaw-Token
value: $OPENCLAW_ANALYSIS_TOKEN
timeoutSeconds: 3
jsonPath: "{.score}"
successCondition: result >= 95
failureLimit: 2
探针合并、令牌与重试的判定口径
合并探针不要只返回一个布尔值,建议返回 score、node_breakdown、digest_sha256、retry_observed。令牌失败返回 401 并广播“鉴权失败摘要”;业务指标失败返回 200 + score 降级,避免 Rollouts 把网络抖动误判成应用坏掉。重试必须写入摘要,否则值班只会看到最后一次失败,漏掉前两次退避。
- 通过线:score ≥95,且 canary-gw 与 stable-gw 的 p95 差距小于 20%。
- 暂停线:score 90~94 或 digest 出现同类失败增长,Rollouts pause,人工看摘要。
- 回滚线:score <90、令牌连续失败、或任一节点 doctor 红且无法定位。
失败摘要广播与渐进发布协同
广播要服务 Rollouts 决策,而不是替代它。每个 AnalysisRun 生成一条追加式 JSONL:权重、节点、令牌版本、score、失败摘要哈希。OpenClaw observer 只推摘要卡片,Rollouts 继续根据 AnalysisRun 结果改权重。这样集群节点负责事实采集,Rollouts 负责节奏控制,团队能在同一张卡片上看到“哪台 Mac 失败、哪一步台阶暂停、下一次重试何时发生”。
可引用验收线
三条可直接写进 runbook:AnalysisRun Webhook 超时 3 秒、重试 3 次;令牌重叠窗口 ≥ 最大退避链 + 一个探针周期;失败摘要单条 ≤256 字符且同 delivery id 60 秒内只广播一次。多节点协同时,宁可暂停在 10%,也不要在摘要不完整时推进到 50%。
本文为工程演练建议。Argo Rollouts Webhook 字段随版本可能变化,请以已部署 CRD 与官方文档为准;OpenClaw 路径、令牌与摘要字段应在预发环境复跑后再写入生产 runbook。