onboard、doctor 与网关说明。内链:网关加固、失败恢复与重试、镜像拉取矩阵。
Authorization,网关永远验签失败。前置条件(Node、令牌、出站)
Node:固定 22 LTS,执行 openclaw doctor;需要自动修复时可查文档中的 openclaw doctor --repair 与 --non-interactive。首次向导后执行 openclaw onboard --install-daemon,plist 写死 NODE_BINARY 与 NODE_EXTRA_CA_CERTS。
令牌:ARGOCD_AUTH_TOKEN 仅只读 Application;网关 Bearer 与 Argo 令牌分文件权限 0600。
出站:Mac 需能访问 Argo CD API 与镜像仓库;跨境时对齐 HTTPS_PROXY。网关端口以本机 CLI 为准,Runbook 常写 18789,仅回环或经 mTLS 反代。
网关状态自检:除 /health 外,可在文档指引下查看 Gateway 运行时与端口占用;若 openclaw doctor 提示端口冲突或证书链问题,先修再暴露公网,避免通知侧把间歇性错误当成同步失败。
| 维度 | 推荐 | 避免 |
|---|---|---|
| 预检时机 | 通知触发后、对目标修订离线构建 | 与线上控制器争用同一工作目录 |
| 状态来源 | operationState + 修订 SHA |
只信 webhook 字符串不复核 API |
| 摘要去向 | 允许名单 HTTPS + 幂等键 | 公网裸奔管理口 |
Webhook 与网关串联步骤清单
在 argocd-notifications(或等价)里把模板指向公网 HTTPS 路径;Caddy/nginx 终结 TLS 后转发到 127.0.0.1。处理器顺序:验路径密钥 → 验 Bearer → 再 JSON.parse。
curl -fsS --max-time 5 -H "Authorization: Bearer $OC_TOKEN" "http://127.0.0.1:18789/health"(端口以实际为准)。application 名,调用 argocd app get "$APP" -o json 读取 status.operationState。curl --max-time 25,失败按 2→4→8 秒 至多三次。export ARGOCD_SERVER="argocd.example.com" export ARGOCD_AUTH_TOKEN="***" # 只读 argocd app get "$APP_NAME" -o json | jq '.status.operationState,.status.sync.revision'
预检脚本与健康探针参数
GitOps 联动思路:以 Argo 记录的目标修订为唯一真相源,在临时目录 git checkout 后跑 kustomize build 或 helm template,管道到 kubeconform;镜像引用可用 crane manifest 抽查 digest。与集群控制器结论对照,能区分「仓库坏」与「集群运行时坏」。若预检通过而同步仍失败,优先查集群配额、准入插件与镜像拉取,而非反复改 Git。
可引用参数:探针 --max-time 5;预检磁盘阈值 MIN_FREE_GB=18;kubeconform -kubernetes-version 与团队基线一致。
WORKDIR="$(mktemp -d)" git clone --depth 1 "$REPO" "$WORKDIR" && git -C "$WORKDIR" fetch origin "$REV" && git -C "$WORKDIR" checkout "$REV" kustomize build "$WORKDIR/overlays/prod" | kubeconform -strict -summary # 或 helm template release "$WORKDIR/chart" -f values.yaml | kubeconform -strict
FAQ(鉴权失败、超时、重试)
鉴权失败(401)
核对网关 Bearer 与 ARGOCD_AUTH_TOKEN 是否过期;反代是否剥离头;Argo 侧 RBAC 是否含目标 App。
超时
CLI 加 --grpc-web 与 UI 同源 ARGOCD_SERVER;大仓库预检改浅克隆;反代 proxy_read_timeout 高于长轮询。
重试与重复告警
摘要携带 idempotency_key=app:rev:uid;下游 409 则停止;仅对 5xx/网络错误退避。通知模板宜加去抖,避免同一失败秒内连发。