Руководство по развёртыванию 2026-04-23 13 мин

2026: OpenClaw Gateway — встроенные пробы здоровья (/health, /ready) и балансировка: удалённый физический Mac, Docker Compose и Kubernetes; затенение путей и ложный NotReady (фрагменты конфигурации + FAQ)

Эксплуатации и SRE, которые держат OpenClaw Gateway на удалённых физических Mac, сталкиваются с одним классом инцидентов: пробы проходят локально, но падают через nginx, либо Kubernetes помечает Pod как NotReady, пока Compose остаётся «зелёным». Здесь — согласование /health и /ready на bare metal, в Docker Compose и Kubernetes, разбор затенения путей, копируемые фрагменты и FAQ по ложной готовности.

2026: OpenClaw Gateway — пробы здоровья, балансировка, Compose и Kubernetes на удалённом Mac

1. Введение: три плоскости, один контракт

launchd на «голом» Mac, healthcheck в Compose и livenessProbe/readinessProbe в Kubernetes должны разделять одну семантику: /health — «перезапусти меня, если я завис», /ready — «пускай пользовательский трафик только если объявленные зависимости реально доступны». Когда reverse-proxy или неверный upstream отвечает на эти пути вместо шлюза, получаются невоспроизводимые алерты и дрожащие выкаты.

После того как пробы стабилизированы, имеет смысл связать их с наблюдаемостью: см. OpenClaw Gateway — метрики Prometheus и панели Grafana на удалённом физическом Mac. Если вы только поднимаете узел, начните с Как эффективно запустить проект OpenClaw на Mac в 2026 году — там базовый порядок действий до появления стабильных /health и /ready.

2. Три боли: затенение, дрейф и «ложь» балансировщика

  1. Затенение путей. Статический location /, SPA fallback или агрессивный try_files могут вернуть 200 OK с HTML на /ready, не доходя до OpenClaw. Балансировщик считает пул тёплым; шлюз пробу не видел.
  2. Семантический дрейф между платформами. Compose помечает сервис healthy, когда проверка на уровне движка прошла; Kubernetes может направить трафик на другую ревизию при пересечении селекторов или если Ingress шлёт пробы на canary-backend, который вы не собирались тестировать.
  3. Скрытая цена стабильности и аудита. Повторное использование /ready для liveness связывает сбои зависимостей с рестартами Pod. На флоте удалённых Mac это проявляется как мигание Screen Sharing, полузаписанное состояние агента и шумный дежурный — не «просто Kubernetes».

3. Матрица: где какую пробу запускать

Используйте таблицу на дизайн-ревью до вставки YAML в прод. Вся игра — в вопросе «кто обязан видеть какой сигнал?»

Сигнал Физический Mac + reverse proxy Docker Compose Kubernetes
/health (дешёвая) LB → nginx → gateway; без CDN-кэша на пути проб healthcheck на опубликованный порт livenessProbe.httpGet.path=/health
/ready (строгая) Та же цепочка, что у пользователя (Host + TLS); без статического затенения depends_on: condition service_healthy readinessProbe + startupProbe на холодный старт
Типичный режим отказа Префиксный location побеждает proxy_pass Опубликованный порт ≠ порт healthcheck LB RBAC / NetworkPolicy режет kubelet subnet

4. Семь шагов выравнивания

  1. Перечислите вызывающих проб. Вынесите каждый health URL из облачного LB, блока server_name nginx, Compose, Helm values и мониторинга. Пустая строка в таблице — слепая зона.
  2. Докажите затенение. С хоста прокси выполните curl -svH 'Host: your.api' https://127.0.0.1/ready и сравните тело с прямым curl на порт шлюза на loopback.
  3. Закрепите location выше catch-all. Отдельные location = /health и location = /ready с proxy_pass на upstream шлюза, proxy_buffering off; и add_header Cache-Control no-store;.
  4. Compose: согласуйте таймауты с LB. interval, timeout и retries держите в пределах ~80% от внешнего LB, чтобы не помечать healthy раньше внешнего арбитра.
  5. Kubernetes: разделите пробы. Liveness на /health, readiness на /ready, добавьте startupProbe с большим failureThreshold для прогрева маршрутизатора моделей.
  6. Репетиция выката. Blue/green или rolling: следите за kubectl get endpoints и логами шлюза; трафик должен смещаться только после переключения /ready на новой ревизии.
  7. Архивируйте диффы. Храните обезличенные nginx -T, YAML Compose и вывод kubectl describe pod с метками времени — это сократит время разбора следующего ложного NotReady.

5. Фрагменты конфигурации

5.1 nginx: явные location для проб (без затенения)

location = /health { proxy_pass http://openclaw_gateway; proxy_http_version 1.1;
  proxy_set_header Host $host; proxy_buffering off; add_header Cache-Control "no-store"; }
location = /ready  { proxy_pass http://openclaw_gateway; proxy_http_version 1.1;
  proxy_set_header Host $host; proxy_buffering off; add_header Cache-Control "no-store"; }

5.2 Docker Compose: healthcheck и зависимость

services:
  openclaw-gateway:
    image: your.registry/openclaw-gateway@sha256:…
    healthcheck:
      test: ["CMD", "curl", "-fsS", "http://127.0.0.1:18789/health"]
      interval: 15s
      timeout: 3s
      retries: 5
      start_period: 120s
  edge-proxy:
    depends_on:
      openclaw-gateway:
        condition: service_healthy

5.3 Kubernetes: startup + readiness + liveness

startupProbe:
  httpGet: { path: /ready, port: http }
  periodSeconds: 5
  failureThreshold: 30
readinessProbe:
  httpGet: { path: /ready, port: http }
  periodSeconds: 10
  timeoutSeconds: 3
livenessProbe:
  httpGet: { path: /health, port: http }
  periodSeconds: 20
  timeoutSeconds: 2

Подставьте имя port: http в соответствии с containerPort. Если TLS терминируется на Ingress, пробы обычно остаются на plain-порту контейнера, если sidecar mesh не навязывает свой TLS.

6. Цифры для ссылок в отчётах

  • 18789 — типичный HTTP-порт поверхности OpenClaw Gateway на Mac-узлах; всегда сверяйте с вашим openclaw.json или release notes перед шаблонами LB.
  • 120 с start_period — разумный первый ориентир для холодного кэша моделей и задержки монтирования Secret на удалённых Mac; ужимайте по измеренному P95 после двух недель метрик.
  • 3 с timeout readiness — баланс между медленными upstream и агрессией kubelet; сочетайте с failureThreshold вместо бесконечных таймаутов, скрывающих реальные зависания.

7. FAQ: воспроизводимые ложные срабатывания

Что такое затенение путей для /health и /ready за nginx?

Широкий префиксный location или SPA fallback отвечает на пути проб до upstream OpenClaw. Вы видите HTML с кодом 200, тогда как прямой curl к Pod возвращает JSON — исправьте порядок location, отключите кэш на путях проб и проверьте цели proxy_pass.

Должны ли liveness и readiness оба вызывать /ready?

Нет. Liveness остаётся дешёвым на /health; readiness на /ready отсекает трафик только по тем зависимостям, которые вы считаете обязательными.

Почему Compose healthy, а LB снимает задачу?

Разные сетевые namespace и разные пути Host/TLS. Запустите точно тот же curl, что healthcheck LB (включая SNI и путь), с бастиона или подсети LB — не только изнутри контейнера.

Что даёт ложный NotReady сразу после выката на удалённом Mac?

Холодные кэши и рукопожатия зависимостей превышают начальные таймауты. Используйте startupProbe или start_period, логируйте задержку по зависимостям, затем ужесточайте пороги на основе фактов.

8. Почему Mac mini уместен для завершения этой цепочки сложности

Семантика проб имеет значение только пока хост остаётся в сети: Apple Silicon Mac mini сочетает низкое энергопотребление в простое (часто порядка нескольких ватт), бесшумную работу для стоек и столов и Unix-инструментарий — curl, launchctl, Docker Desktop или Colima и SSH — без типичных для Windows-флотов проблем с драйверами.

Gatekeeper, SIP и FileVault снижают риск подмены долгоживущих токенов агента рядом со шлюзом. Это важно, когда именно /ready — сигнал, по которому балансировщик выпускает автоматизацию в интернет.

Если вы хотите прогнать эту историю с пробами и балансировкой на железе, которое можно оставить без присмотра, Mac mini M4 — сильная база на 2026 год: нажмите CTA ниже, чтобы сравнить узлы ZoneMac, готовые под шлюз, и выкатывайте с теми же приёмочными curl, что вы только что задокументировали.

Ограниченное предложение

Готовы запускать OpenClaw на выделенных Mac-шлюзах?

Арендуйте удалённый Mac mini с сетью и паттернами доступности, на которые опирается этот runbook: пробы, SSH и нагрузка CI и агентов.

Оплата по факту Быстрая активация Мультирегион
Аренда macOS в облаке Суперцена — ограниченное время
Получить сейчас