Jak nasadit OpenClaw na Kubernetes
Bezpečnostní výzkumníci našli přes 135 000 instancí OpenClaw zcela vystavených na internetu. Mnohé z nich byly zranitelné vůči vzdálenému spuštění kódu. Bezpečnostní krize OpenClaw je reálná: kritické CVE, škodlivé skilly a zásadní problém s tím, jak většina nasazení řeší autentizaci. Spustit OpenClaw na VPS pomocí docker run je snadné. Provozovat jej bezpečně je úplně jiný problém.
Kubernetes tento problém řeší. Získáte síťovou izolaci, limity prostředků, automatické restarty a bezpečnostní nastavení, jejichž ruční konfigurace by trvala hodiny. A s operátorem Kubernetes pro OpenClaw to vše získáte z jediného souboru YAML.
Tento návod vás provede od nuly k produkčně připravenému agentovi OpenClaw na Kubernetes. Každý blok YAML je připraven ke zkopírování a vložení.
Proč operátor
Provozování OpenClaw na Kubernetes je víc než Deployment a Service. Potřebujete síťovou izolaci, správu Secretů, perzistentní úložiště, sledování zdraví, rollouty konfigurace a volitelně automatizaci prohlížeče. Správně to vše propojit ručně je zdlouhavé a náchylné k chybám.
Operátor Kubernetes kóduje tyto požadavky do jediného Custom Resource. Deklarujete, co chcete, a operátor to průběžně slaďuje se správnými objekty Kubernetes. To vám dává:
- Bezpečnost ve výchozím stavu. Každý agent běží jako UID 1000, všechny linuxové capabilities odstraněny, Seccomp povolen, kořenový souborový systém pouze pro čtení a výchozí deny NetworkPolicy povolující pouze DNS a HTTPS egress. Bez ručního hardeningu.
- Automatické aktualizace s rollbackem. Operátor se dotazuje OCI registru na nové verze, zálohuje workspace, nasadí aktualizaci a automaticky provede rollback, pokud nový pod neprojde health checky.
- Rollouty konfigurace. Změňte
spec.config.rawa operátor zjistí změnu hashe obsahu, čímž spustí postupnou aktualizaci. Totéž platí pro rotaci secretů. - Zálohování a obnova. Automatické zálohování workspace na S3-kompatibilní úložiště při smazání instance. Obnova do nové instance z libovolného snapshotu.
- Autentizace gateway. Automaticky generuje token gateway pro každou instanci. Žádné ruční párování, žádný mDNS (který v Kubernetes stejně nefunguje).
- Detekce driftu. Každých 5 minut operátor kontroluje, zda každý spravovaný prostředek odpovídá požadovanému stavu. Pokud někdo ručně upraví NetworkPolicy nebo smaže PDB, bude to opraveno.
Předpoklady
Potřebujete:
- Cluster Kubernetes (1.28+). Jakákoli konformní distribuce funguje: EKS, GKE, AKS, k3s nebo lokální Kind cluster pro testování.
kubectlnakonfigurovaný pro váš cluster.- Nainstalovaný
helmv3. - API klíč od vašeho poskytovatele AI (Anthropic, OpenAI nebo jakýkoli OpenAI-kompatibilní endpoint).
Krok 1: Instalace operátoru
Operátor se dodává jako OCI Helm chart. Jeden příkaz jej nainstaluje:
helm install openclaw-operator \
oci://ghcr.io/openclaw-rocks/charts/openclaw-operator \
--namespace openclaw-operator-system \
--create-namespace
Ověřte, že běží:
kubectl get pods -n openclaw-operator-system
Měli byste vidět pod operátoru ve stavu Running. Operátor také nainstaluje validační webhook, který zabrání nebezpečným konfiguracím (jako je běh pod rootem).
Krok 2: Vytvoření Secretu s API klíčem
Uložte API klíč svého poskytovatele AI do Kubernetes Secretu. Operátor jej injektuje do kontejneru agenta:
kubectl create namespace openclaw
kubectl create secret generic openclaw-api-keys \
--namespace openclaw \
--from-literal=ANTHROPIC_API_KEY=sk-ant-your-key-here
Pro OpenAI nebo jiné poskytovatele použijte příslušný název proměnné prostředí (OPENAI_API_KEY, OPENROUTER_API_KEY apod.). Do jednoho Secretu můžete zahrnout více poskytovatelů.
Tip: Pro produkční prostředí zvažte použití External Secrets Operator k synchronizaci klíčů z AWS Secrets Manager, HashiCorp Vault, GCP Secret Manager nebo Azure Key Vault. Dokumentace operátoru obsahuje podrobné příklady.
Krok 3: Nasazení prvního agenta
Vytvořte soubor s názvem my-agent.yaml:
apiVersion: openclaw.rocks/v1alpha1
kind: OpenClawInstance
metadata:
name: my-agent
namespace: openclaw
spec:
envFrom:
- secretRef:
name: openclaw-api-keys
config:
raw:
agents:
defaults:
model:
primary: "anthropic/claude-sonnet-4-20250514"
storage:
persistence:
enabled: true
size: 10Gi
Aplikujte jej:
kubectl apply -f my-agent.yaml
Tento jediný prostředek vytvoří StatefulSet, Service, ServiceAccount, Role, RoleBinding, ConfigMap, PVC, PDB, NetworkPolicy a Secret s tokenem gateway. Operátor vše sladí.
Krok 4: Ověření běhu
Sledujte spouštění instance:
kubectl get openclawinstances -n openclaw -w
NAME PHASE READY AGE
my-agent Provisioning False 10s
my-agent Running True 45s
Jakmile fáze zobrazí Running a Ready je True, váš agent je aktivní. Zkontrolujte logy:
kubectl logs -n openclaw statefulset/my-agent -f
Pro komunikaci s agentem proveďte port-forward gateway:
kubectl port-forward -n openclaw svc/my-agent 18789:18789
Poté otevřete http://localhost:18789 ve svém prohlížeči.
Krok 5: Připojení kanálu
OpenClaw podporuje Telegram, Discord, WhatsApp, Signal a další komunikační kanály. Každý kanál se konfiguruje přes proměnné prostředí. Přidejte příslušný token do svého Secretu:
kubectl create secret generic openclaw-channel-keys \
--namespace openclaw \
--from-literal=TELEGRAM_BOT_TOKEN=your-bot-token-here
Poté na něj odkažte v instanci:
spec:
envFrom:
- secretRef:
name: openclaw-api-keys
- secretRef:
name: openclaw-channel-keys
OpenClaw automaticky detekuje token a aktivuje kanál. Žádná další konfigurace není potřeba.
Tím jsou pokryty základy. Váš agent běží, je zabezpečen a dostupný. Zbytek tohoto návodu pokrývá volitelné funkce, které můžete aktivovat, když budete připraveni.
Automatizace prohlížeče
OpenClaw umí procházet web, pořizovat snímky obrazovky a interagovat se stránkami. Operátor z toho dělá jednořádkový doplněk. Spouští zabezpečený Chromium sidecar ve stejném podu, připojený přes localhost:
spec:
chromium:
enabled: true
resources:
requests:
cpu: 500m
memory: 1Gi
limits:
cpu: 1000m
memory: 2Gi
Operátor automaticky injektuje proměnnou prostředí CHROMIUM_URL do hlavního kontejneru. Sidecar běží jako UID 1001 s kořenovým souborovým systémem pouze pro čtení a vlastním bezpečnostním kontextem.
Skilly a runtime závislosti
Skilly OpenClaw z ClawHub lze instalovat deklarativně. Operátor spouští init kontejner, který stáhne každý skill před spuštěním agenta:
spec:
skills:
- "@anthropic/mcp-server-fetch"
- "@anthropic/mcp-server-filesystem"
Pokud vaše skilly nebo MCP servery potřebují pnpm nebo Python, povolte vestavěné init kontejnery pro runtime závislosti:
spec:
runtimeDeps:
pnpm: true # Installs pnpm via corepack
python: true # Installs Python 3.12 + uv
Init kontejnery instalují tyto nástroje na datový PVC, takže přežijí restarty bez nafukování image kontejneru.
Automatické aktualizace
OpenClaw často vydává nové verze. Operátor je může automaticky sledovat, zálohovat před aktualizací a vrátit se zpět, pokud se něco pokazí:
spec:
autoUpdate:
enabled: true
checkInterval: "12h"
backupBeforeUpdate: true
rollbackOnFailure: true
healthCheckTimeout: "10m"
Když se v registru objeví nová verze, operátor:
- Vytvoří zálohu workspace PVC na S3-kompatibilní úložiště
- Aktualizuje image tag na StatefulSetu
- Čeká až do
healthCheckTimeout, dokud pod neprojde kontrolami dostupnosti - Pokud se pod nestane ready, obnoví předchozí image tag a zálohu
Po 3 po sobě jdoucích neúspěšných rollbackech operátor pozastaví automatické aktualizace a nastaví podmínku pro vyšetření.
Poznámka: Automatická aktualizace nemá účinek na image připnuté digestem (
spec.image.digest). Pokud připínáte digestem, aktualizace řídíte ručně.
Produkční hardening
Operátor je ve výchozím stavu bezpečný. Zde jsou další nastavení pro produkční nasazení.
Monitorování s Prometheus
Povolte ServiceMonitor pro sběr metrik operátoru a instancí:
spec:
observability:
metrics:
enabled: true
serviceMonitor:
enabled: true
interval: "30s"
Operátor vystavuje openclaw_reconcile_total, openclaw_reconcile_duration_seconds, openclaw_instance_phase a čítače automatických aktualizací.
Plánování na vyhrazené uzly
Pokud provozujete smíšený cluster, použijte nodeSelector a tolerations k připnutí agentů na vyhrazené uzly:
spec:
availability:
nodeSelector:
openclaw.rocks/nodepool: openclaw
tolerations:
- key: openclaw.rocks/dedicated
value: openclaw
effect: NoSchedule
Přidání vlastních pravidel egress
Výchozí NetworkPolicy povoluje pouze DNS (port 53) a HTTPS (port 443). Pokud váš agent potřebuje dosáhnout na jiné služby (databázi, frontu zpráv, interní API), přidejte pravidla egress:
spec:
security:
networkPolicy:
additionalEgress:
- to:
- ipBlock:
cidr: 10.0.0.0/8
ports:
- port: 5432
protocol: TCP
Identita poskytovatele cloudu
Pro AWS IRSA nebo GCP Workload Identity anotujte spravovaný ServiceAccount:
spec:
security:
rbac:
serviceAccountAnnotations:
eks.amazonaws.com/role-arn: "arn:aws:iam::123456789:role/openclaw"
Firemní proxy a privátní CA
Pokud váš cluster používá TLS-interceptující proxy, injektujte CA balíček:
spec:
security:
caBundle:
configMapName: corporate-ca-bundle
key: ca-bundle.crt
Operátor připojí CA balíček do všech kontejnerů a automaticky nastaví NODE_EXTRA_CA_CERTS.
GitOps
CRD OpenClawInstance je obyčejný YAML soubor. To znamená, že se přímo hodí do GitOps workflow. Uložte manifesty agentů do git repozitáře a nechte ArgoCD nebo Flux synchronizovat je s clusterem.
Typická struktura repozitáře:
gitops/
└── agents/
├── kustomization.yaml
├── namespace.yaml
├── agent-a.yaml
└── agent-b.yaml
Každá změna prochází pull requestem. Váš tým kontroluje diff. Merge do main a ArgoCD to aplikuje. Žádné kubectl apply z notebooků, žádný konfigurační drift, kompletní audit trail.
Hashování konfigurace operátoru to dělá obzvláště plynulým. Když ArgoCD synchronizuje změněnou spec.config.raw, operátor zjistí změnu hashe obsahu a automaticky spustí postupnou aktualizaci. Totéž platí pro rotaci secretů: operátor sleduje odkazované Secrety a restartuje pody, když se změní.
Zálohování a obnova
Operátor podporuje S3-kompatibilní zálohy. Když smažete instanci, operátor automaticky vytvoří zálohu workspace PVC před smazáním.
Pro obnovu agenta ze zálohy do nové instance:
apiVersion: openclaw.rocks/v1alpha1
kind: OpenClawInstance
metadata:
name: my-agent-restored
namespace: openclaw
spec:
restoreFrom: "s3://bucket/path/to/backup.tar.gz"
envFrom:
- secretRef:
name: openclaw-api-keys
storage:
persistence:
enabled: true
size: 10Gi
Operátor stáhne snapshot, rozbalí jej do PVC a spustí agenta se všemi předchozími daty workspace, skilly a historií konverzací.
Lokální inference s Ollama
Pokud chcete, aby agenti používali lokální modely (kvůli soukromí, latenci nebo nákladům), operátor nabízí prvotřídní podporu Ollama. Není třeba ručně konfigurovat sidecar: spec.ollama řeší kontejner, předstahování modelů, úložiště a přidělení GPU:
spec:
ollama:
enabled: true
models:
- "llama3.2"
- "nomic-embed-text"
gpu: 1
resources:
requests:
cpu: "2"
memory: 4Gi
limits:
cpu: "4"
memory: 8Gi
storage:
sizeLimit: 30Gi
Při povolení operátor:
- Přidá Ollama sidecar kontejner do podu
- Spustí init kontejner, který předem stáhne uvedené modely před spuštěním agenta
- Injektuje
OLLAMA_HOST=http://localhost:11434do hlavního kontejneru - Přidělí požadovaný NVIDIA GPU přes limity prostředků
nvidia.com/gpu
Ve výchozím stavu jsou modely uloženy v emptyDir svazku s konfigurovatelným limitem velikosti. Pro perzistentní úložiště modelů mezi restarty (aby se modely nestahovaly pokaždé znovu) použijte existující PVC:
spec:
ollama:
enabled: true
models: ["llama3.2"]
storage:
existingClaim: ollama-models-pvc
Integrace Tailscale
Zpřístupněte svého agenta ve svém tailnetu bez Ingress, load balancerů nebo veřejných IP. Pole spec.tailscale operátoru řeší injekci autentizačního klíče, obohacení konfigurace a pravidla NetworkPolicy:
spec:
tailscale:
enabled: true
mode: serve # or "funnel" for public internet access
authKeySecretRef:
name: tailscale-authkey
hostname: my-agent
Vytvořte Secret s autentizačním klíčem s dočasným, znovupoužitelným klíčem z administrační konzole Tailscale:
kubectl create secret generic tailscale-authkey \
--namespace openclaw \
--from-literal=authkey=tskey-auth-...
V režimu serve (výchozí) mohou agenta dosáhnout pouze členové vašeho tailnetu. V režimu funnel ho Tailscale zpřístupní na veřejném internetu s automatickým HTTPS.
Operátor automaticky:
- Injektuje proměnné prostředí
TS_AUTHKEYaTS_HOSTNAME - Sloučí
gateway.tailscale.modeagateway.tailscale.resetOnExitdo konfigurace OpenClaw - Přidá pravidla egress pro STUN a WireGuard do NetworkPolicy
Pro přihlášení SSO bez hesla pro členy tailnetu povolte authSSO:
spec:
tailscale:
enabled: true
mode: serve
authKeySecretRef:
name: tailscale-authkey
authSSO: true
Toto nastaví gateway.auth.allowTailscale=true v konfiguraci OpenClaw, což umožní členům tailnetu přistupovat k agentovi bez samostatného tokenu gateway.
Vlastní sidecary a init kontejnery
Pro použití nad rámec vestavěné podpory Ollama a Tailscale operátor přijímá libovolné sidecary a init kontejnery. Spusťte Cloud SQL Proxy pro přístup k databázi, forwarder logů nebo jakéhokoli jiného pomocníka vedle svého agenta:
spec:
sidecars:
- name: cloudsql-proxy
image: gcr.io/cloud-sql-connectors/cloud-sql-proxy:2
args: ["--structured-logs", "project:region:instance"]
resources:
requests:
cpu: 100m
memory: 128Mi
Vlastní init kontejnery běží po vlastním init pipeline operátoru (seedování konfigurace, pnpm, Python, skilly):
spec:
initContainers:
- name: fetch-data
image: curlimages/curl:8.5.0
command: ["sh", "-c", "curl -o /data/dataset.json https://..."]
volumeMounts:
- name: data
mountPath: /data
Režim slučování konfigurace
Ve výchozím stavu operátor přepíše konfigurační soubor při každém restartu podu. Pokud váš agent za běhu modifikuje vlastní konfiguraci (přes skilly nebo sebemodifikaci), nastavte mergeMode: merge pro hluboké sloučení konfigurace operátoru s existující konfigurací PVC:
spec:
config:
mergeMode: merge
raw:
agents:
defaults:
model:
primary: "anthropic/claude-sonnet-4-20250514"
V režimu slučování mají klíče zadané operátorem přednost, ale klíče přidané agentem samotným přežijí restarty.
Kompletní příklad
Zde je produkčně připravený manifest kombinující vše z tohoto návodu:
apiVersion: openclaw.rocks/v1alpha1
kind: OpenClawInstance
metadata:
name: production-agent
namespace: openclaw
spec:
envFrom:
- secretRef:
name: openclaw-api-keys
config:
mergeMode: merge
raw:
agents:
defaults:
model:
primary: "anthropic/claude-sonnet-4-20250514"
skills:
- "@anthropic/mcp-server-fetch"
runtimeDeps:
pnpm: true
chromium:
enabled: true
resources:
requests:
cpu: 500m
memory: 1Gi
limits:
cpu: 1000m
memory: 2Gi
ollama:
enabled: true
models: ["llama3.2"]
gpu: 1
resources:
requests:
cpu: "2"
memory: 4Gi
tailscale:
enabled: true
mode: serve
authKeySecretRef:
name: tailscale-authkey
authSSO: true
resources:
requests:
cpu: 500m
memory: 1Gi
limits:
cpu: 2000m
memory: 4Gi
storage:
persistence:
enabled: true
size: 10Gi
autoUpdate:
enabled: true
checkInterval: "24h"
backupBeforeUpdate: true
rollbackOnFailure: true
observability:
metrics:
enabled: true
serviceMonitor:
enabled: true
# Remove or adjust these if you don't use dedicated nodes
availability:
nodeSelector:
openclaw.rocks/nodepool: openclaw
tolerations:
- key: openclaw.rocks/dedicated
value: openclaw
effect: NoSchedule
Aplikujte jej a máte zabezpečeného, automaticky aktualizovaného AI agenta s prohlížečem, lokální inferencí, přístupem přes tailnet, monitorováním, zálohováním a síťovou izolací. Jeden kubectl apply.
Co získáte ihned
Bez dotyku jediného bezpečnostního nastavení každý agent nasazený operátorem obsahuje:
- Běh mimo root (UID 1000)
- Kořenový souborový systém pouze pro čtení
- Všechny linuxové capabilities odstraněny
- Seccomp RuntimeDefault profil
- Výchozí deny NetworkPolicy (pouze DNS + HTTPS egress)
- ServiceAccount na instanci bez automatického připojení tokenu
- PodDisruptionBudget
- Sondy liveness, readiness a startup
- Automaticky generovaný autentizační token gateway
- 5minutová rekonciliace driftu
Validační webhook blokuje pokusy o běh pod rootem a varuje před vypnutými NetworkPolicy, chybějícím TLS na Ingress a nedetekovanými klíči poskytovatele AI.
Další kroky
- Prohlédněte si kompletní API referenci pro každé pole CRD
- Přečtěte si návody na nasazení pro EKS, GKE, AKS a Kind
- Nastavte řetězce záložních modelů přes více poskytovatelů AI
- Nakonfigurujte External Secrets pro Vault, AWS, GCP nebo Azure
Pokud narazíte na problémy nebo máte zpětnou vazbu, otevřete issue na GitHubu. PR jsou také vítány.
Pokud nechcete Kubernetes provozovat sami, OpenClaw.rocks se o vše postará za vás. Vyberte plán, připojte kanál a váš agent je aktivní během sekund.