为什么不用 Helm?
OpenClaw 是一个单容器应用,带有一些配置文件。真正有意思的自定义在于 agent 内容(markdown 文件、skills、配置覆盖),而不是基础设施模板化。Kustomize 可以处理覆盖层,而无需 Helm chart 的额外开销。如果你的部署变得更加复杂,可以在这些清单之上再叠加一个 Helm chart。你需要什么
- 一个正在运行的 Kubernetes 集群(AKS、EKS、GKE、k3s、kind、OpenShift 等)
- 已连接到你的集群的
kubectl - 至少一个模型提供商的 API key
快速开始
./scripts/k8s/deploy.sh --show-token 会在部署后打印 token。
使用 Kind 在本地测试
如果你没有集群,可以使用 Kind 在本地创建一个:./scripts/k8s/deploy.sh 进行部署。
逐步说明
1) 部署
选项 A — 环境变量中提供 API key(一步完成):--show-token。
2) 访问 gateway
部署了什么
自定义
Agent 指令
编辑scripts/k8s/manifests/configmap.yaml 中的 AGENTS.md 并重新部署:
Gateway 配置
编辑scripts/k8s/manifests/configmap.yaml 中的 openclaw.json。完整参考请查看 Gateway configuration。
添加提供商
重新运行并导出额外的 key:自定义命名空间
自定义镜像
编辑scripts/k8s/manifests/deployment.yaml 中的 image 字段:
超出 port-forward 的暴露方式
默认清单将 gateway 绑定到 Pod 内部的 loopback。这可以与kubectl port-forward 配合使用,但不能用于需要访问 Pod IP 的 Kubernetes Service 或 Ingress 路径。
如果你想通过 Ingress 或负载均衡器暴露 gateway:
- 将
scripts/k8s/manifests/configmap.yaml中的 gateway 绑定从loopback改为与你的部署模式匹配的非 loopback 绑定 - 保持 gateway 认证启用,并使用合适的 TLS 终止入口点
- 使用受支持的 Web 安全模型为远程访问配置 Control UI(例如 HTTPS/Tailscale Serve,以及在需要时显式允许的来源)
重新部署
删除部署
架构说明
- gateway 默认绑定到 Pod 内部的 loopback,因此包含的设置适用于
kubectl port-forward - 不使用集群级资源——所有内容都位于单个命名空间中
- 安全性:
readOnlyRootFilesystem、drop: ALL能力、非 root 用户(UID 1000) - 默认配置使 Control UI 保持在更安全的本地访问路径:loopback 绑定加上
kubectl port-forward到http://127.0.0.1:18789 - 如果你要超出 localhost 访问,请使用受支持的远程模型:HTTPS/Tailscale,以及相应的 gateway 绑定和 Control UI origin 设置
- Secret 在临时目录中生成并直接应用到集群——没有任何 secret 内容会写入仓库检出目录