OpenClaw у Kubernetes
Мінімальна стартова точка для запуску OpenClaw у Kubernetes — не production-ready розгортання. Вона охоплює базові ресурси й призначена для адаптації під ваше середовище.Чому не Helm?
OpenClaw — це один контейнер із кількома файлами конфігурації. Найцікавіша кастомізація — у вмісті агента (markdown-файли, Skills, перевизначення конфігурації), а не в шаблонізації інфраструктури. Kustomize обробляє overlays без накладних витрат Helm chart. Якщо ваше розгортання стане складнішим, Helm chart можна накласти поверх цих маніфестів.Що вам потрібно
- Працюючий кластер Kubernetes (AKS, EKS, GKE, k3s, kind, OpenShift тощо)
kubectl, підключений до вашого кластера- API-ключ щонайменше для одного провайдера моделей
Швидкий старт
./scripts/k8s/deploy.sh --show-token друкує токен після розгортання.
Локальне тестування з Kind
Якщо у вас немає кластера, створіть його локально за допомогою Kind:./scripts/k8s/deploy.sh.
Покроково
1) Розгортання
Варіант A — API-ключ у змінній середовища (в один крок):--show-token з будь-якою командою, якщо хочете вивести токен у stdout для локального тестування.
2) Отримайте доступ до gateway
Що буде розгорнуто
Кастомізація
Інструкції агента
ВідредагуйтеAGENTS.md у scripts/k8s/manifests/configmap.yaml і повторно розгорніть:
Конфігурація Gateway
Відредагуйтеopenclaw.json у scripts/k8s/manifests/configmap.yaml. Повний довідник див. в Конфігурація Gateway.
Додати провайдерів
Повторно запустіть із додатковими експортованими ключами:Кастомний namespace
Кастомний образ
Відредагуйте полеimage у scripts/k8s/manifests/deployment.yaml:
Відкрити доступ не лише через port-forward
Типові маніфести прив’язують gateway до loopback усередині pod. Це працює зkubectl port-forward, але не працює з Service або шляхом Ingress у Kubernetes, яким потрібно дістатися IP pod.
Якщо ви хочете відкрити gateway через Ingress або load balancer:
- Змініть bind gateway у
scripts/k8s/manifests/configmap.yamlзloopbackна не-loopback bind, що відповідає вашій моделі розгортання - Залиште автентифікацію gateway ввімкненою й використовуйте правильну точку входу з TLS termination
- Налаштуйте Control UI для віддаленого доступу за підтримуваною веб-моделлю безпеки (наприклад HTTPS/Tailscale Serve і явні allowed origins, якщо потрібно)
Повторне розгортання
Видалення
Примітки щодо архітектури
- Gateway типово прив’язується до loopback усередині pod, тому наведене налаштування призначене для
kubectl port-forward - Немає ресурсів рівня кластера — усе живе в одному namespace
- Безпека:
readOnlyRootFilesystem,drop: ALLcapabilities, непривілейований користувач (UID 1000) - Типова конфігурація тримає Control UI на безпечнішому шляху локального доступу: bind до loopback плюс
kubectl port-forwardдоhttp://127.0.0.1:18789 - Якщо ви виходите за межі localhost-доступу, використовуйте підтримувану віддалену модель: HTTPS/Tailscale плюс відповідний bind gateway і налаштування origin для Control UI
- Секрети генеруються в тимчасовому каталозі й застосовуються безпосередньо до кластера — жодні секретні дані не записуються в checkout репозиторію