Webhook 契约
先把 Flux 方案与 Argo Rollouts 主题彻底分离:Rollouts 更关注分析对象和推进策略,而本篇只处理 Flux 镜像自动更新事件。你们要约定统一 Webhook 契约,包括事件类型、镜像摘要、来源仓库、提交作者、回滚标识与 trace id。
推荐双令牌机制:发布令牌供 Flux 控制器调用,审计令牌用于失败回查。令牌轮换采用重叠窗口,旧令牌保留十分钟;网关对同一 image digest 的重复事件做三十秒去重。
| 契约项 | 最低要求 | 落地建议 |
|---|---|---|
| 鉴权 | HMAC + 时间戳 | 双令牌重叠轮换,审计令牌只读 |
| 幂等键 | digest + cluster | 30 秒窗口去重并写入 Redis |
| 失败回传 | 状态码 + 摘要 | 统一失败模板用于值班广播 |
多节点配置切片
第二步把多节点配置切成三层:全局层写 Flux 与 OpenClaw 共享字段,区域层定义节点池和流量入口,租户层配置镜像策略与告警人。切片后再用 openclaw merge 生成运行配置,避免每次改一个租户就改整份总表。
流程建议:先在 `clusters/base` 更新 ImageUpdateAutomation 模板,再在 `clusters/prod-cn` 与 `clusters/prod-hk` 追加分流权重,最后把租户差异写到 `tenants/*/overrides.yaml`。这样回滚粒度更小,也便于比较节点间金丝雀表现。
探针
你需要把 gateway 探针和 openclaw doctor 合并为一个发布门闩,而不是两套互不相认的健康标准。实践里建议定义四类探针:路由可达、上游错误率、P95 延迟、doctor 深度检查。只有四项都过阈值,Flux 自动更新才进入下一段流量。
最小可复现步骤可按六步执行:1)创建 Flux webhook receiver;2)配置双令牌与 HMAC 校验;3)在网关加入 digest 幂等与分流权重;4)执行 openclaw doctor --deep 并合并结果到 readyz;5)按 5%、25%、50%、100% 分段放量;6)每段结束写回摘要到 Git 注释和通知系统。
失败广播
失败广播不是简单发告警,而是让值班同学在一分钟内判断是否回滚。建议摘要固定四段:影响节点、失败阶段、探针快照、下一步动作。广播分三路:团队群接收简版,值班系统接收结构化 JSON,工单系统写入回放链接。
当 Flux 事件失败时,广播里必须带上 image digest、commit sha、分流比例与 doctor 结果摘要。这样值班不会在多个系统之间来回翻找。若连续两轮失败,自动触发降级策略:流量回到 0%、冻结 ImageUpdateAutomation 并创建回滚 PR。
FAQ
- 问:为什么不用 Argo Rollouts 复用旧方案?答:本篇刻意区分主题,目标是 Flux 触发链路最小复现,避免两套控制器职责混淆。
- 问:令牌轮换会不会中断发布?答:使用重叠窗口即可平滑过渡,旧令牌保留十分钟通常足够覆盖重试链路。
- 问:openclaw doctor 必须每段都跑吗?答:建议首段与扩量前各跑一次,关键依赖变化时必须补跑。