Argo CD の通知を OpenClaw ゲートウェイ(リモート Mac)へ向け、マニフェスト生成のみを隔離検証し、同期失敗要約を返す手順です。openclaw onboard がゲートウェイと daemon を対話設定、openclaw doctor が健全性を確認します。インストール排障・ゲートウェイとプリフライト・Helm/OCI と越境 pullと併読ください。

前提条件(Node、トークン、外向き通信)

Node.js 22 以上を対話シェルと launchd(EnvironmentVariables)で同一パスに固定し、次を実行します。

npm i -g openclaw openclaw onboard openclaw doctor # 設定ずれの修復: openclaw doctor --repair # 非対話: openclaw doctor --non-interactive

ゲートウェイは 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 に渡します。

# 例: Argo CD API でアプリの同期状態を取得(読み取りトークン) curl -fsS -H "Authorization: Bearer $ARGOCD_TOKEN" \ "https://argocd.example.com/api/v1/applications/my-app" | jq '.status.sync.status'

プリフライトスクリプトとヘルスプローブ

ローカルから Authorization 付きで健全性を確認します(パスは doctor の表示に合わせる)。

export OPENCLAW_GATEWAY_TOKEN="***" curl -fsS -H "Authorization: Bearer $OPENCLAW_GATEWAY_TOKEN" \ "http://127.0.0.1:18789/health"

隔離へ shallow clone し、Helm または Kustomize で生成のみ。適用はしません。

#!/usr/bin/env bash set -euo pipefail WORKDIR="$(mktemp -d)" trap 'rm -rf "$WORKDIR"' EXIT git clone --depth 1 --branch "$REV" "$GIT_URL" "$WORKDIR/repo" cd "$WORKDIR/repo" if [[ -f kustomization.yaml ]]; then kustomize build . >/dev/null elif [[ -f Chart.yaml ]]; then helm template rel . -f values.ci.yaml >/dev/null else echo "unsupported layout" >&2; exit 2 fi

任意で kubeconform。別プローブを置く場合の目安は 30s/5s/失敗 3 回。launchd で helm が無いときは plist の PATH を絶対パス化。

# 要約コールバック例(同期失敗テキストを POST) curl -fsS -X POST "$CALLBACK_URL" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $CALLBACK_TOKEN" \ --data-binary "{\"app\":\"$APP\",\"revision\":\"$REV\",\"preflightExit\":$EXIT,\"tail\":\"$LOG_TAIL\"}"

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 をキーにします。

まとめ:onboard/doctor・127.0.0.1・Webhook・helm/kustomize 乾実行・失敗時の 要約 JSON が一連です。MacPull リモート Mac のご利用は 購入・ヘルプ・ホーム・ブログから(ログイン不要)。

GitOps 前置ノード向け

Argo CD 連携をリモート Mac で常駐ホストする

ヘルプ・購入・ホーム・料金・実戦ブログはログイン不要です。

複数リージョン
SSH
柔軟な契約
サポート