openclaw doctor проверяет среду и шлюз, openclaw onboard задаёт мастер-настройку, при поддержке дистрибутива доступен демон через openclaw onboard --install-daemon. Связанные материалы: безопасность шлюза OpenClaw, Helm OCI на Mac CI, Harbor Webhook и предзагрузка образов.
- Только UI-кластер: оператор видит
SyncFailedв Argo CD, но не понимает, ошибка в YAML, в чарте или в недоступном образе — нужен префлайт на ревизии из Git. - Долгий синхронный webhook: уведомление ждёт разбор манифестов и вызовы API, пока Argo повторно не пометит доставку как таймаут.
- Широкий исходящий трафик: скрипт постит сводки на произвольные URL и обходит корпоративный белый список egress.
Матрица: сигнал GitOps vs обработчик на Mac
| Сигнал | Источник в Argo CD | Минимальный паттерн на OpenClaw |
|---|---|---|
| SyncFailed | Шаблон уведомлений по фазе операции или operationState.phase |
Проверка секрета, затем REST /api/v1/applications/… для сообщений и ревизии. |
| Health Degraded | Сводка здоровья Application | Сравнить с политикой команды; префлайт опционален, сводка короче. |
| Образ в манифесте | Контейнеры в сгенерированных манифестах | crane manifest или pull-policy по белому списку registry. |
Предварительные условия: Node, токены, исходящий трафик
Node. Зафиксируйте ветку Node 22 LTS (или ту, что рекомендует ваша сборка OpenClaw). После установки выполните openclaw doctor; при расхождениях конфигурации см. openclaw doctor --repair в документации — утилита проверяет готовность шлюза, Docker при песочнице и типичные проблемы macOS.
Токены. Для вызовов Argo CD API заведите отдельный токен с правами только на чтение нужных Application (или снимите учётные данные через SSO-паттерн вашей установки). Для входящего webhook храните общий секрет вне репозитория, файл chmod 600, сравнение строк константным временем до JSON.parse.
Исходящий трафик (egress). Разрешите в файрволе обращения к хосту Argo CD, к Git при git fetch префлайта и к одному-двум URL для сводки (внутренний чат, API наблюдаемости). Остальное режьте на уровне хоста или прокси — так проще пройти аудит рядом с гайдом по hardening шлюза.
Критерий готовности: с jump-хоста тот же curl, что и у Argo CD, к публичному HTTPS пути шлюза возвращает 401 без секрета и 2xx с корректным заголовком; argocd app get APP --server … с сервисного аккаунта отрабатывает за время меньше половины таймаута webhook.
Чеклист: webhook и шлюз OpenClaw
Ниже — воспроизводимая цепочка; подставьте порты и пути из вывода openclaw doctor и своего reverse-proxy.
- Выполните
openclaw onboardна Mac CI; при поддержке пакета добавьте демон:openclaw onboard --install-daemon, чтобы шлюз поднимался после перезагрузки под тем же пользователем. - Убедитесь, что слушатель привязан к
127.0.0.1; снаружи оставьте только nginx/Caddy с TLS и узким путём, например/hooks/argocd/v1. - В argocd-notifications укажите URL HTTPS, заголовок
Authorization: Bearer …или кастомный секрет; отфильтруйте шаблоны на интересующие вас типы (частоon-sync-failed). - В обработчике OpenClaw читайте сырое тело; при неверном секрете отвечайте
401без деталей. Только после этого парсьте JSON и извлекайте имя Application. - Вызовите API Argo CD для
status.operationStateи ревизии; сохраните короткий фрагмент сообщения об ошибке, без полного дампа объектов. - Ответьте источнику webhook
200или202сразу после постановки тяжёлой работы в очередь, чтобы не ловить ретраи уведомлений. - Исходящую сводку отправляйте
curlс--max-time 25и паузами 2 / 4 / 8 с между попытками при5xxили сетевых сбоях.
openclaw doctor
# пример проверки маршрута здоровья (подставьте порт и путь из документации к вашей версии):
curl -fsS --connect-timeout 3 --max-time 8 \
-H "Authorization: Bearer ${OPENCLAW_GATEWAY_TOKEN}" \
"http://127.0.0.1:${OPENCLAW_PORT}/health"
Типичная ошибка: 401 Unauthorized при вызове шлюза — неверный bearer, обрезанный заголовок прокси или устаревший OPENCLAW_GATEWAY_TOKEN в launchctl; сверьте с заметками к openclaw doctor на предмет переменных окружения, переопределяющих конфиг.
Скрипт префлайта и параметры проб здоровья
Связь с GitOps-префлайтом. Пока кластер ещё разбирает операцию, на Mac в одноразовом TMPDIR выполните git fetch и checkout ревизии из уведомления. Дальше: kustomize build или helm template, затем kubeconform с наборами схем для вашей версии Kubernetes или политики OPA/Kyverno, если они уместны в вашем runbook. Так вы отделяете ошибки манифеста от сетевых сбоев при применении.
Переменные и лимиты. Задайте PREFLIGHT_TIMEOUT_SEC (например 120–300), KUBECONFORM_IGNORE_MISSING_SCHEMAS осознанно, HELM_CACHE_HOME изолированно на джобу — см. также матрицу Helm OCI для согласованного кеша. Для образов используйте crane manifest только к registry из белого списка.
export PREFLIGHT_TIMEOUT_SEC=180
git clone --depth 1 --branch "${REV}" "${GIT_REPO}" "${WORK}"
( cd "${WORK}" && kustomize build overlays/prod | kubeconform -strict -summary )
# при ошибке — код выхода попадает в JSON-сводку, не в тело ответа webhook
Пробы здоровья шлюза. В том же LaunchAgent, что и OpenClaw, добавьте периодический curl к /health с теми же таймаутами, что и в примере выше; логируйте только код ответа и длительность. Для диска и параллельных pull держите под рукой рекомендации по диску из соседнего сценария с реестром.
FAQ: аутентификация, таймаут, повторы
401 на шлюзе или к Argo CD API
Для шлюза — секрет webhook и переопределения токена в окружении. Для Argo — истёкший токен, другой ARGOCD_SERVER или проект без прав на Application. Проверьте argocd account can-i под тем же токеном.
Таймаут доставки webhook при живом curl
Укоротите синхронную часть до проверки секрета и постановки задачи; тяжёлый префлайт и API — в фоне. Увеличьте таймаут только на reverse-proxy, не отключая TLS.
Повторы POST сводки
Используйте не более трёх попыток, паузы 2/4/8 с, ключ идемпотентности по паре application+revision+uid уведомления; при 429 уважайте Retry-After.
Итог: связка уведомлений Argo CD, проверенного webhook на OpenClaw, префлайта ревизии и компактной JSON-сводки сужает инцидент до исправимого слоя GitOps. Для постоянного узла с TLS и launchd откройте покупку и конфигурации, тарифы, центр помощи и каталог блога — без обязательной регистрации.
Удалённый Mac под OpenClaw и GitOps 24/7
Стабильный шлюз для webhook Argo CD и префлайта: центр помощи, тарифы, аренда, главная и блог.