Kubernetes 上的 OpenClaw
在 Kubernetes 上运行 OpenClaw 的最小起点——并非生产就绪的部署。涵盖了核心资源,旨在适配你的环境。为什么不用 Helm?
OpenClaw 是一个单容器加上一些配置文件。有趣的自定义在于代理内容(markdown 文件、技能、配置覆盖),而非基础设施模板。Kustomize 处理覆盖层时没有 Helm chart 的额外负担。如果部署变得更复杂,可以在这些清单的基础上叠加 Helm chart。你需要的东西
- 一个正在运行的 Kubernetes 集群(AKS、EKS、GKE、k3s、kind、OpenShift 等)
- 连接到集群的
kubectl - 至少一个模型提供者的 API 密钥
快速开始
./scripts/k8s/deploy.sh --show-token 会在部署后打印 Token。
使用 Kind 本地测试
如果没有集群,可以用 Kind 在本地创建一个:./scripts/k8s/deploy.sh 正常部署。
逐步操作
1)部署
选项 A — 在环境变量中配置 API 密钥(一步完成):--show-token 参数。
2)访问网关
部署内容
自定义
代理指令
编辑scripts/k8s/manifests/configmap.yaml 中的 AGENTS.md 后重新部署:
网关配置
编辑scripts/k8s/manifests/configmap.yaml 中的 openclaw.json。完整参考请见 Gateway 配置。
添加提供者
导出其他密钥后重新运行:自定义命名空间
自定义镜像
编辑scripts/k8s/manifests/deployment.yaml 中的 image 字段:
端口转发以外的暴露方式
默认清单把网关绑定在 Pod 内的回环地址。这适合用kubectl port-forward,但不适合 Kubernetes Service 或需要访问 Pod IP 的 Ingress 路径。
若想通过 Ingress 或负载均衡器暴露网关:
- 将
scripts/k8s/manifests/configmap.yaml中的网关绑定地址从loopback改为符合部署模型的非环回地址 - 保持网关认证启用,使用适当的 TLS 终端入口
- 配置控制 UI 以远程访问,并使用支持的 Web 安全模型(例如 HTTPS/Tailscale Serve 及必要时显式允许的来源)
重新部署
卸载
架构说明
- 默认网关绑定在 Pod 内的回环地址,因此包含的设置适用于
kubectl port-forward - 无集群作用域资源——所有资源都在单个命名空间中
- 安全性:启用
readOnlyRootFilesystem,丢弃所有能力,使用非 root 用户(UID 1000) - 默认配置将控制 UI 保持在更安全的本地访问路径:回环绑定加
kubectl port-forward到http://127.0.0.1:18789 - 若超出本地主机访问,使用支持的远程模式:HTTPS/Tailscale 和相应的网关绑定及控制 UI 来源设置
- Secret 在临时目录生成后直接应用到集群——不会写入到仓库代码