Skip to main content

OpenClaw on Kubernetes

在 Kubernetes 上執行 OpenClaw 的最小起點 — 不是生產就緒部署。它涵蓋核心資源且旨在適應您的環境。

為什麼不用 Helm?

OpenClaw 是一個容器加一些配置檔案。有趣的自訂在代理內容(markdown 檔案、skills、配置覆蓋),不在基礎設施樣板化。Kustomize 無需 Helm 圖表的額外開銷即可處理覆蓋。如果您的部署變得更複雜,Helm 圖表可以分層到這些清單之上。

您需要什麼

  • 執行中的 Kubernetes 叢集(AKS、EKS、GKE、k3s、kind、OpenShift 等)
  • kubectl 連接到您的叢集
  • 至少一個模型提供者的 API 金鑰

快速開始

檢索 Gateway 令牌並將其貼入控制 UI:
用於本地除錯,./scripts/k8s/deploy.sh --show-token 在部署後列印令牌。

使用 Kind 進行本地測試

如果您沒有叢集,用 Kind 在本地建立一個:
然後如常用 ./scripts/k8s/deploy.sh 部署。

逐步進行

1) 部署

選項 A — 環境中的 API 金鑰(一步):
指令碼使用 API 金鑰和自動產生的 Gateway 令牌建立 Kubernetes Secret,然後部署。如果 Secret 已存在,它保留當前 Gateway 令牌和任何未變更的提供者金鑰。 選項 B — 分別建立 Secret:
使用任一命令的 --show-token 若要令牌列印至 stdout 以進行本地測試。

2) 存取 Gateway

部署內容

自訂

代理指令

scripts/k8s/manifests/configmap.yaml 中編輯 AGENTS.md 並重新部署:

Gateway 配置

scripts/k8s/manifests/configmap.yaml 中編輯 openclaw.json。詳見 Gateway 配置

添加提供者

以額外金鑰匯出重新執行:
現有提供者金鑰保留在 Secret 中,除非您覆蓋它們。 或直接修補 Secret:

自訂命名空間

自訂映像

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 終止端點
  • 為遠端存取配置控制 UI 使用支援的 web 安全模型(例如 HTTPS/Tailscale Serve 和當需要時明確允許來源)

重新部署

這應用所有清單並重啟 Pod 以拾取任何配置或 Secret 變更。

拆除

這刪除命名空間和其中的所有資源,包括 PVC。

架構附註

  • Gateway 預設綁定至 Pod 內的 loopback,所以包含的設定用於 kubectl port-forward
  • 無叢集範圍資源 — 所有內容生活在單一命名空間
  • 安全性:readOnlyRootFilesystemdrop: ALL 能力、非根使用者 (UID 1000)
  • 預設配置保持控制 UI 在更安全的本地存取路徑:loopback 綁定加 kubectl port-forwardhttp://127.0.0.1:18789
  • 如果您超越 localhost 存取,使用支援遠端模型:HTTPS/Tailscale 加適當的 Gateway 綁定和控制 UI 源設定
  • Secret 在臨時目錄中產生並直接應用至叢集 — 無 Secret 材料寫入儲存庫簽出

檔案結構