Hosting
Kubernetes
Kubernetes üzerinde OpenClaw çalıştırmak için asgari bir başlangıç noktasıdır; üretime hazır bir dağıtım değildir. Temel kaynakları kapsar ve ortamınıza uyarlanması amaçlanır.
Neden Helm değil?
OpenClaw, bazı yapılandırma dosyaları içeren tek bir konteynerdir. Önemli özelleştirmeler altyapı şablonlamasında değil, ajan içeriğindedir (Markdown dosyaları, beceriler, yapılandırma geçersiz kılmaları). Kustomize, bir Helm chart'ının ek yükü olmadan katmanları yönetir. Dağıtımınız daha karmaşık hâle gelirse bu manifestlerin üzerine bir Helm chart'ı ekleyin.
Gereksinimler
- Çalışan bir Kubernetes kümesi (AKS, EKS, GKE, k3s, kind, OpenShift vb.)
- Kümenize bağlı
kubectl - En az bir model sağlayıcısına ait API anahtarı
Hızlı başlangıç
# Sağlayıcınızla değiştirin: ANTHROPIC, GEMINI, OPENAI veya OPENROUTERexport <PROVIDER>_API_KEY="..."./scripts/k8s/deploy.sh kubectl port-forward svc/openclaw 18789:18789 -n openclawopen http://localhost:18789deploy.sh, varsayılan olarak belirteç tabanlı kimlik doğrulaması oluşturur. Denetim Arayüzü için oluşturulan gateway belirtecini alın:
kubectl get secret openclaw-secrets -n openclaw -o jsonpath='{.data.OPENCLAW_GATEWAY_TOKEN}' | base64 -dYerel hata ayıklama için ./scripts/k8s/deploy.sh --show-token, dağıtımdan sonra belirteci yazdırır.
Kind ile yerel test
Bir kümeniz yoksa Kind ile yerel olarak oluşturun:
./scripts/k8s/create-kind.sh # docker veya podman'ı otomatik algılar./scripts/k8s/create-kind.sh --delete # kaldırırArdından her zamanki gibi ./scripts/k8s/deploy.sh ile dağıtın.
Adım adım
1) Dağıtın
Seçenek A: Ortam değişkeninde API anahtarı (tek adım)
# Sağlayıcınızla değiştirin: ANTHROPIC, GEMINI, OPENAI veya OPENROUTERexport <PROVIDER>_API_KEY="..."./scripts/k8s/deploy.shBetik, API anahtarını ve otomatik oluşturulan gateway belirtecini içeren bir Kubernetes Secret oluşturur, ardından dağıtımı gerçekleştirir. Secret zaten mevcutsa geçerli gateway belirtecini ve değiştirilmeyen sağlayıcı anahtarlarını korur.
Seçenek B: Secret'ı ayrı olarak oluşturun
export <PROVIDER>_API_KEY="..."./scripts/k8s/deploy.sh --create-secret./scripts/k8s/deploy.shYerel test amacıyla belirteci standart çıktıya yazdırmak için komutlardan birine --show-token ekleyin.
2) Gateway'e erişin
kubectl port-forward svc/openclaw 18789:18789 -n openclawopen http://localhost:18789Dağıtılan bileşenler
Ad alanı: openclaw (OPENCLAW_NAMESPACE ile yapılandırılabilir)├── Deployment/openclaw # Tek pod, başlatma konteyneri + gateway├── Service/openclaw # 18789 numaralı bağlantı noktasında ClusterIP├── PersistentVolumeClaim # Ajan durumu ve yapılandırması için 10 Gi├── ConfigMap/openclaw-config # openclaw.json + AGENTS.md└── Secret/openclaw-secrets # Gateway belirteci + API anahtarlarıÖzelleştirme
Ajan talimatları
scripts/k8s/manifests/configmap.yaml içindeki AGENTS.md dosyasını düzenleyip yeniden dağıtın:
./scripts/k8s/deploy.shGateway yapılandırması
scripts/k8s/manifests/configmap.yaml içindeki openclaw.json dosyasını düzenleyin. Tam başvuru için Gateway yapılandırması bölümüne bakın.
Sağlayıcı ekleme
Ek anahtarları dışa aktardıktan sonra yeniden çalıştırın:
export ANTHROPIC_API_KEY="..."export OPENAI_API_KEY="..."./scripts/k8s/deploy.sh --create-secret./scripts/k8s/deploy.shÜzerine yazmadığınız sürece mevcut sağlayıcı anahtarları Secret içinde kalır.
Alternatif olarak Secret'a doğrudan yama uygulayın:
kubectl patch secret openclaw-secrets -n openclaw \ -p '{"stringData":{"<PROVIDER>_API_KEY":"..."}}'kubectl rollout restart deployment/openclaw -n openclawÖzel ad alanı
OPENCLAW_NAMESPACE=my-namespace ./scripts/k8s/deploy.shÖzel imaj
scripts/k8s/manifests/deployment.yaml içindeki image alanını düzenleyin:
image: ghcr.io/openclaw/openclaw:slim # birincil; resmî Docker Hub aynası: openclaw/openclawBağlantı noktası yönlendirmenin ötesinde erişime açma
Varsayılan manifestler, gateway'i pod içindeki geri döngü arabirimine bağlar. Bu, kubectl port-forward ile çalışır ancak pod IP'sine doğrudan ulaşması gereken bir Kubernetes Service veya Ingress yolu ile çalışmaz.
Gateway'i bir Ingress veya yük dengeleyici üzerinden erişime açmak için:
scripts/k8s/manifests/configmap.yamliçindeki gateway bağlama ayarınıloopbackdeğerinden, dağıtım modelinize uyan geri döngü dışı bir bağlama ayarına değiştirin.- Gateway kimlik doğrulamasını etkin tutun ve TLS sonlandırması düzgün yapılandırılmış bir giriş noktası kullanın.
- Denetim Arayüzünü, desteklenen web güvenliği modelini kullanarak uzaktan erişim için yapılandırın (örneğin HTTPS/Tailscale Serve ve gerektiğinde açıkça belirtilmiş izin verilen kaynaklar).
Yeniden dağıtma
./scripts/k8s/deploy.shBu komut tüm manifestleri uygular ve yapılandırma veya Secret değişikliklerinin etkinleşmesi için pod'u yeniden başlatır.
Kaldırma
./scripts/k8s/deploy.sh --deleteBu komut, PVC dâhil olmak üzere ad alanını ve içindeki tüm kaynakları siler.
Mimari notları
- Gateway, varsayılan olarak pod içindeki geri döngü arabirimine bağlanır; bu nedenle sağlanan kurulum
kubectl port-forwardiçindir. - Küme kapsamlı kaynak yoktur; her şey tek bir ad alanında bulunur.
- Güvenlik sağlamlaştırması:
readOnlyRootFilesystem,drop: ALLyetenekleri, root olmayan kullanıcı (UID 1000). - Varsayılan yapılandırma, Denetim Arayüzünü daha güvenli yerel erişim yolunda tutar: geri döngü bağlaması ve
http://127.0.0.1:18789adresinekubectl port-forward. - localhost erişiminin ötesine geçerseniz desteklenen uzak erişim modelini kullanın: HTTPS/Tailscale ile uygun gateway bağlama ve Denetim Arayüzü kaynak ayarları.
- Gizli bilgiler geçici bir dizinde oluşturulur ve doğrudan kümeye uygulanır; depo çalışma kopyasına hiçbir gizli bilgi yazılmaz.
Dosya yapısı
scripts/k8s/├── deploy.sh # Ad alanı + Secret oluşturur, kustomize aracılığıyla dağıtır├── create-kind.sh # Yerel Kind kümesi (docker/podman'ı otomatik algılar)└── manifests/ ├── kustomization.yaml # Kustomize tabanı ├── configmap.yaml # openclaw.json + AGENTS.md ├── deployment.yaml # Güvenlik sağlamlaştırması içeren pod belirtimi ├── pvc.yaml # 10 Gi kalıcı depolama └── service.yaml # 18789 üzerinde ClusterIP