英文 Kubernetes 安装
- 原始链接:https://docs.openclaw.ai/install/kubernetes
- 来源章节:3. 官方文档:安装、升级与部署
- 来源小节:无
- 抓取方式:jina:https://r.jina.ai/http://docs.openclaw.ai/install/kubernetes
- 抓取时间:2026-04-05 13:47:10
- 状态:ok
中文内容
在 Kubernetes 上运行 OpenClaw 的最低起点——不是生产就绪的部署。它涵盖了核心资源,旨在适应您的环境。
为什么不使用 Helm?
OpenClaw 是一个带有一些配置文件的单个容器。有趣的定制在于代理内容(markdown 文件、技能、配置覆盖),而不是基础设施模板。 Kustomize 可以处理叠加,而无需 Helm 图表的开销。如果您的部署变得更加复杂,Helm 图表可以分层在这些清单之上。
你需要什么
- 正在运行的 Kubernetes 集群(AKS、EKS、GKE、k3s、kind、OpenShift 等)
kubectl连接到您的集群- 至少一个模型提供商的 API 密钥
快速开始
# 替换为您的提供商:ANTHROPIC、GEMINI、OPENAI 或 OPENROUTER
导出<PROVIDER>_API_KEY =“...”
./scripts/k8s/deploy.sh
kubectl 端口转发 svc/openclaw 18789:18789 -n openclaw
打开http://localhost:18789检索为控制 UI 配置的共享密钥。此部署脚本默认创建令牌身份验证:
kubectl 获取秘密 openclaw-secrets -n openclaw -o jsonpath='{.data.OPENCLAW_GATEWAY_TOKEN}' | Base64-d对于本地调试,./scripts/k8s/deploy.sh --show-token 在部署后打印令牌。
使用 Kind 进行本地测试
如果您没有集群,请使用 Kind 在本地创建一个集群:
./scripts/k8s/create-kind.sh # 自动检测 docker 或 podman
./scripts/k8s/create-kind.sh --delete # 拆除然后像往常一样使用./scripts/k8s/deploy.sh进行部署。
一步一步
1) 部署
选项 A — 环境中的 API 密钥(一步):
# 替换为您的提供商:ANTHROPIC、GEMINI、OPENAI 或 OPENROUTER
导出<PROVIDER>_API_KEY =“...”
./scripts/k8s/deploy.sh该脚本使用 API 密钥和自动生成的网关令牌创建 Kubernetes Secret,然后进行部署。如果 Secret 已存在,它将保留当前网关令牌和任何未更改的提供商密钥。选项 B — 单独创建 Secret:
导出<PROVIDER>_API_KEY =“...”
./scripts/k8s/deploy.sh --create-secret
./scripts/k8s/deploy.sh如果您希望将令牌打印到标准输出以进行本地测试,请在任一命令中使用“--show-token”。
2) 访问网关
kubectl 端口转发 svc/openclaw 18789:18789 -n openclaw
打开http://localhost:18789部署什么
命名空间:openclaw(可通过 OPENCLAW_NAMESPACE 配置)
├── Deployment/openclaw # 单pod,初始化容器+网关
├── Service/openclaw # ClusterIP 端口 18789
├── PersistentVolumeClaim # 10Gi 用于代理状态和配置
├── ConfigMap/openclaw-config # openclaw.json + AGENTS.md
└── Secret/openclaw-secrets # 网关令牌 + API 密钥定制
代理说明
编辑“scripts/k8s/manifests/configmap.yaml”中的“AGENTS.md”并重新部署:
./scripts/k8s/deploy.sh网关配置
编辑 scripts/k8s/manifests/configmap.yaml 中的 openclaw.json。有关完整参考,请参阅网关配置。
添加提供商
重新运行并导出其他密钥:
导出 ANTHROPIC_API_KEY="..."
导出 OPENAI_API_KEY="..."
./scripts/k8s/deploy.sh --create-secret
./scripts/k8s/deploy.sh现有的提供程序密钥将保留在 Secret 中,除非您覆盖它们。或者直接修补 Secret:
kubectl 补丁秘密 openclaw-secrets -n openclaw \
-p '{"stringData":{"<PROVIDER>_API_KEY":"..."}}'
kubectl 推出重新启动部署/openclaw -n openclaw自定义命名空间
OPENCLAW_NAMESPACE=我的命名空间 ./scripts/k8s/deploy.sh自定义图像
编辑“scripts/k8s/manifests/deployment.yaml”中的“image”字段:
image: ghcr.io/openclaw/openclaw:latest # 或固定到 https://github.com/openclaw/openclaw/releases 中的特定版本暴露端口转发之外的内容
默认清单将网关绑定到 Pod 内的环回。这适用于“kubectl port-forward”,但不适用于需要到达 pod IP 的 Kubernetes“Service”或 Ingress 路径。如果您想通过 Ingress 或负载均衡器公开网关:
- 将
scripts/k8s/manifests/configmap.yaml中的网关绑定从loopback更改为与您的部署模型匹配的非环回绑定 - 保持网关身份验证启用并使用正确的 TLS 终止入口点
- 使用支持的 Web 安全模型配置控制 UI 进行远程访问(例如 HTTPS/Tailscale Serve 和需要时显式允许的来源)
重新部署
./scripts/k8s/deploy.sh这将应用所有清单并重新启动 Pod 以获取任何配置或秘密更改。
拆解
./scripts/k8s/deploy.sh --删除这将删除命名空间及其中的所有资源,包括 PVC。
架构笔记
- 默认情况下,网关绑定到 pod 内的环回,因此包含的设置适用于“kubectl port-forward”
- 没有集群范围的资源——所有东西都存在于一个命名空间中
- 安全性:
readOnlyRootFilesystem、drop: ALL功能、非 root 用户(UID 1000) - 默认配置使控制 UI 保持在更安全的本地访问路径上:环回绑定加上“kubectl port-forward”到“http://127.0.0.1:18789”
- 如果您超越本地主机访问,请使用支持的远程模型:HTTPS/Tailscale 加上适当的网关绑定和控制 UI 源设置
- 秘密在临时目录中生成并直接应用于集群 - 没有秘密材料写入存储库结账
文件结构
脚本/k8s/
├──deploy.sh # 创建命名空间+secret,通过kustomize部署
├── create-kind.sh # 本地Kind集群(自动检测docker/podman)
└── 体现/
├── kustomization.yaml # Kustomize 基础
├── configmap.yaml # openclaw.json + AGENTS.md
├──Deployment.yaml # 具有安全强化功能的 Pod 规范
├── pvc.yaml # 10Gi持久存储
└── service.yaml # 18789上的ClusterIP