在 Kubernetes 集群上运行 OpenClaw Gateway 的最小化起点,使用 Kustomize 管理配置。
为什么用 Kustomize 而非 Helm
OpenClaw 是单容器应用,核心定制在 agent 内容(markdown、skills、config),而非基础设施模板。Kustomize 的 overlay 机制足够,无需 Helm 的额外开销。
前置条件
- 运行中的 Kubernetes 集群(AKS、EKS、GKE、k3s、kind、OpenShift 等)
kubectl已连接到集群- 至少一个模型 provider 的 API key
快速启动
# 设置 provider API key
export ANTHROPIC_API_KEY="..."
./scripts/k8s/deploy.sh
# 访问 Gateway
kubectl port-forward svc/openclaw 18789:18789 -n openclaw
open http://localhost:18789
# 获取 gateway token
kubectl get secret openclaw-secrets -n openclaw \
-o jsonpath='{.data.OPENCLAW_GATEWAY_TOKEN}' | base64 -d本地测试(Kind)
./scripts/k8s/create-kind.sh # 自动检测 docker 或 podman
./scripts/k8s/deploy.sh
./scripts/k8s/create-kind.sh --delete # 清理部署内容
Namespace: openclaw
├── Deployment/openclaw # 单 Pod,init container + gateway
├── Service/openclaw # ClusterIP,端口 18789
├── PersistentVolumeClaim # 10Gi,存储 agent 状态和配置
├── ConfigMap/openclaw-config # openclaw.json + AGENTS.md
└── Secret/openclaw-secrets # Gateway token + API keys
常用定制
# 添加多个 provider
export ANTHROPIC_API_KEY="..."
export OPENAI_API_KEY="..."
./scripts/k8s/deploy.sh --create-secret
# 自定义 namespace
OPENCLAW_NAMESPACE=my-namespace ./scripts/k8s/deploy.sh
# 直接 patch Secret
kubectl patch secret openclaw-secrets -n openclaw \
-p '{"stringData":{"OPENAI_API_KEY":"..."}}'
kubectl rollout restart deployment/openclaw -n openclaw安全特性
readOnlyRootFilesystemdrop: ALLcapabilities- 非 root 用户(UID 1000)
- 默认 loopback 绑定,通过
kubectl port-forward访问
暴露到集群外
默认绑定到 loopback,若需通过 Ingress 或 LoadBalancer 暴露:
- 修改
configmap.yaml中 gateway bind 为非 loopback 模式 - 启用 TLS 终止
- 配置
gateway.controlUi.allowedOrigins
重新部署与清理
./scripts/k8s/deploy.sh # 重新部署
./scripts/k8s/deploy.sh --delete # 删除所有资源(含 PVC)相关链接
- install-docker — Docker 安装
- install-docker-vm-runtime — Docker VM 运行时