openclaw onboard がゲートウェイと daemon を対話設定、openclaw doctor が健全性を確認します。インストール排障・ゲートウェイとプリフライト・Helm/OCI と越境 pullと併読ください。
前提条件(Node、トークン、外向き通信)
Node.js 22 以上を対話シェルと launchd(EnvironmentVariables)で同一パスに固定し、次を実行します。
ゲートウェイは 127.0.0.1 のみ、外向きは TLS 終端。トークンは OPENCLAW_GATEWAY_TOKEN・Argo CD API(最小 RBAC)・コールバック先の三系統に分離します。Mac から Argo CD・Git・レジストリ(Helm OCI 時)への HTTPS が egress で許可されていることを確認。待受ポートは openclaw doctor の表示に従います(例 18789)。
Webhook とゲートウェイ連携手順チェックリスト
- 外向き URL(例:
https://hooks.example.com/argocd/openclaw)をトンネル/LB から 127.0.0.1:PORT へ転送 - argocd-notifications テンプレート、または Application の通知設定で、
application.metadata.name・status.sync.status・status.operationState.phase・status.operationState.syncResult.revisionを JSON に含める Authorization: Bearer <OPENCLAW_GATEWAY_TOKEN>を必須化(共有秘密による HMAC を追加してもよい)- ハンドラで Bearer を検証し、clone/template が長いときは HTTP 202 と correlation id で即 ACK、ワーカーでプリフライト継続
- プリフライト完了後、同期失敗時のみ
CALLBACK_URLへ JSON を POST(成功時はノイズ削減のためスキップ可)
クラスタへは適用せず、マニフェストが生成できるかだけを見るのが GitOps プリフライト連動の核です。通知ペイロードの revision を浅い git clone に渡します。
プリフライトスクリプトとヘルスプローブ
ローカルから Authorization 付きで健全性を確認します(パスは doctor の表示に合わせる)。
隔離へ shallow clone し、Helm または Kustomize で生成のみ。適用はしません。
任意で kubeconform。別プローブを置く場合の目安は 30s/5s/失敗 3 回。launchd で helm が無いときは plist の PATH を絶対パス化。
FAQ(認証失敗、タイムアウト、リトライ)
401:Bearer 不一致または Argo CD トークン失効
ゲートウェイ用・Argo CD API 用・コールバック用の三つを混同していないか確認します。argocd-notifications が送るヘッダが Ingress で落ちていないか、トークンの有効期限と RBAC を見直します。401/403 は再試行せず設定修正のみです。
通知側・クライアントがタイムアウトする
HTTP クライアントの秒数を、浅い clone+helm template 実測の p99 より大きくします。長い処理は 202 Accepted で即返し、ワーカー側で完了後にコールバックします。
要約 POST のリトライ方針
502/429 のみ 2 秒・4 秒・8 秒の指数バックオフで最大三回。それ以外の 4xx/確定的 5xx はログ退避のうえアラートに回します。冪等性のため application 名+revision をキーにします。