OpenClaw auf Kubernetes
Ein minimaler Ausgangspunkt für das Ausführen von OpenClaw auf Kubernetes — keine produktionsreife Bereitstellung. Er deckt die Kernressourcen ab und soll an Ihre Umgebung angepasst werden.Warum nicht Helm?
OpenClaw ist ein einzelner Container mit einigen Konfigurationsdateien. Die interessante Anpassung liegt im Agent-Inhalt (Markdown-Dateien, Skills, Konfigurationsüberschreibungen), nicht im Templating der Infrastruktur. Kustomize verarbeitet Overlays ohne den Overhead eines Helm-Charts. Wenn Ihre Bereitstellung komplexer wird, kann ein Helm-Chart auf diese Manifeste aufgesetzt werden.Was Sie brauchen
- Einen laufenden Kubernetes-Cluster (AKS, EKS, GKE, k3s, kind, OpenShift usw.)
kubectl, verbunden mit Ihrem Cluster- Einen API-Schlüssel für mindestens einen Modell-Provider
Schnellstart
./scripts/k8s/deploy.sh --show-token das Token nach der Bereitstellung aus.
Lokales Testen mit Kind
Wenn Sie keinen Cluster haben, erstellen Sie lokal einen mit Kind:./scripts/k8s/deploy.sh bereit.
Schritt für Schritt
1) Bereitstellen
Option A — API-Schlüssel in der Umgebung (ein Schritt):--show-token, wenn das Token für lokales Testen auf stdout ausgegeben werden soll.
2) Auf das Gateway zugreifen
Was bereitgestellt wird
Anpassung
Agent-Anweisungen
Bearbeiten SieAGENTS.md in scripts/k8s/manifests/configmap.yaml und stellen Sie erneut bereit:
Gateway-Konfiguration
Bearbeiten Sieopenclaw.json in scripts/k8s/manifests/configmap.yaml. Die vollständige Referenz finden Sie unter Gateway-Konfiguration.
Provider hinzufügen
Führen Sie die Bereitstellung erneut mit zusätzlich exportierten Schlüsseln aus:Benutzerdefinierter Namespace
Benutzerdefiniertes Image
Bearbeiten Sie das Feldimage in scripts/k8s/manifests/deployment.yaml:
Über Port-Forwarding hinaus verfügbar machen
Die Standardmanifeste binden das Gateway innerhalb des Pods an Loopback. Das funktioniert mitkubectl port-forward, aber nicht mit einem Kubernetes-Service- oder Ingress-Pfad, der die Pod-IP erreichen muss.
Wenn Sie das Gateway über einen Ingress oder Load Balancer verfügbar machen möchten:
- Ändern Sie die Gateway-Bindung in
scripts/k8s/manifests/configmap.yamlvonloopbackauf ein Nicht-Loopback-Binding, das zu Ihrem Bereitstellungsmodell passt - Lassen Sie Gateway-Auth aktiviert und verwenden Sie einen korrekt TLS-terminierten Einstiegspunkt
- Konfigurieren Sie die Control UI für Remote-Zugriff mit dem unterstützten Web-Sicherheitsmodell (zum Beispiel HTTPS/Tailscale Serve und bei Bedarf explizite erlaubte Origins)
Erneut bereitstellen
Abbau
Hinweise zur Architektur
- Das Gateway bindet standardmäßig innerhalb des Pods an Loopback, daher ist das enthaltene Setup für
kubectl port-forwardgedacht - Keine clusterweiten Ressourcen — alles lebt in einem einzigen Namespace
- Sicherheit:
readOnlyRootFilesystem, Capabilitiesdrop: ALL, Nicht-Root-Benutzer (UID 1000) - Die Standardkonfiguration hält die Control UI auf dem sichereren Pfad für lokalen Zugriff: Loopback-Bindung plus
kubectl port-forwardnachhttp://127.0.0.1:18789 - Wenn Sie über localhost-Zugriff hinausgehen, verwenden Sie das unterstützte Remote-Modell: HTTPS/Tailscale plus die passende Gateway-Bindung und Einstellungen für die Control-UI-Origin
- Secrets werden in einem temporären Verzeichnis erzeugt und direkt auf den Cluster angewendet — kein Secret-Material wird in den Repository-Checkout geschrieben