OpenClaw on Kubernetes
Kubernetes 上で OpenClaw を実行するための最小限の出発点です。本番対応のデプロイではありません。中核となるリソースを扱っており、環境に合わせて調整することを前提としています。なぜ Helm ではないのか?
OpenClaw は、いくつかの設定ファイルを持つ単一コンテナです。興味深いカスタマイズは、インフラのテンプレート化ではなく、エージェント内容(markdown ファイル、Skills、設定オーバーライド)にあります。Kustomize は、Helm chart のオーバーヘッドなしにオーバーレイを扱えます。デプロイがより複雑になった場合は、これらの manifest の上に Helm chart を重ねることもできます。必要なもの
- 動作中の Kubernetes クラスター(AKS、EKS、GKE、k3s、kind、OpenShift など)
- クラスターに接続された
kubectl - 少なくとも 1 つのモデルプロバイダー用 API キー
クイックスタート
./scripts/k8s/deploy.sh --show-token はデプロイ後にトークンを表示します。
Kind を使ったローカルテスト
クラスターがない場合は、Kind でローカルに作成できます:./scripts/k8s/deploy.sh でデプロイします。
手順
1) デプロイ
オプション A — 環境内の API キー(1 ステップ):--show-token を使ってください。
2) Gateway にアクセスする
デプロイされるもの
カスタマイズ
エージェント指示
scripts/k8s/manifests/configmap.yaml の AGENTS.md を編集して再デプロイします:
Gateway 設定
scripts/k8s/manifests/configmap.yaml の openclaw.json を編集します。完全なリファレンスは Gateway configuration を参照してください。
プロバイダーを追加する
追加キーを export して再実行します:カスタム namespace
カスタムイメージ
scripts/k8s/manifests/deployment.yaml の image フィールドを編集します:
port-forward を超えて公開する
デフォルトの manifest では、Pod 内で Gateway を loopback に bind します。これはkubectl port-forward では動作しますが、Pod IP に到達する必要がある Kubernetes の Service や Ingress 経路では動作しません。
Ingress またはロードバランサー経由で Gateway を公開したい場合:
scripts/k8s/manifests/configmap.yamlの Gateway bind をloopbackから、デプロイモデルに合った非 loopback bind に変更する- Gateway auth を有効のままにし、適切な TLS 終端エントリポイントを使う
- サポートされている Web セキュリティモデルを使って Control UI をリモートアクセス向けに設定する(たとえば HTTPS/Tailscale Serve や、必要に応じた明示的な許可済み origin)
再デプロイ
削除
アーキテクチャに関する注意
- Gateway はデフォルトで Pod 内の loopback に bind されるため、付属のセットアップは
kubectl port-forward用です - クラスター全体スコープのリソースはありません。すべて単一 namespace 内にあります
- セキュリティ:
readOnlyRootFilesystem、drop: ALLcapabilities、non-root user(UID 1000) - デフォルト設定では、より安全なローカルアクセス経路に Control UI を維持します: loopback bind と
kubectl port-forwardによるhttp://127.0.0.1:18789 - localhost アクセスを超える場合は、サポートされているリモートモデルを使ってください: HTTPS/Tailscale と、適切な Gateway bind および Control UI origin 設定
- Secret は一時ディレクトリで生成され、クラスターに直接適用されます。secret material がリポジトリ checkout に書き込まれることはありません