Bezpečnostní výskumníci našli viac ako 135 000 inštancií OpenClaw úplne vystavených na internete. Mnohé z nich boli zraniteľné voči vzdialenému spusteniu kódu. Bezpečnostná kríza OpenClaw je reálna: kritické CVE, škodlivé skilly a zásadný problém s tým, ako väčšina nasadení rieši autentifikáciu. Spustiť OpenClaw na VPS pomocou docker run je jednoduché. Prevádzkovať ho bezpečne je úplne iný problém.

Kubernetes tento problém rieši. Získate sieťovú izoláciu, limity prostriedkov, automatické reštarty a bezpečnostné nastavenia, ktorých ručná konfigurácia by trvala hodiny. A s operátorom Kubernetes pre OpenClaw to všetko získate z jediného súboru YAML.

Tento návod vás prevedie od nuly k produkčne pripravenému agentovi OpenClaw na Kubernetes. Každý blok YAML je pripravený na skopírovanie a vloženie.

Prečo operátor

Prevádzkovanie OpenClaw na Kubernetes je viac než Deployment a Service. Potrebujete sieťovú izoláciu, správu Secretov, perzistentné úložisko, sledovanie zdravia, rollouty konfigurácie a voliteľne automatizáciu prehliadača. Správne to všetko prepojiť ručne je zdĺhavé a náchylné na chyby.

Operátor Kubernetes kóduje tieto požiadavky do jediného Custom Resource. Deklarujete, čo chcete, a operátor to priebežne zlaďuje so správnymi objektmi Kubernetes. To vám dáva:

  • Bezpečnosť v predvolenom stave. Každý agent beží ako UID 1000, všetky linuxové capabilities odstránené, Seccomp povolený, koreňový súborový systém iba na čítanie a predvolená deny NetworkPolicy povoľujúca iba DNS a HTTPS egress. Bez ručného hardeningu.
  • Automatické aktualizácie s rollbackom. Operátor sa dotazuje OCI registra na nové verzie, zálohuje workspace, nasadí aktualizáciu a automaticky vykoná rollback, ak nový pod neprejde health checkmi.
  • Rollouty konfigurácie. Zmeňte spec.config.raw a operátor zistí zmenu hashu obsahu, čím spustí postupnú aktualizáciu. To isté platí pre rotáciu secretov.
  • Zálohovanie a obnova. Automatické zálohovanie workspace na S3-kompatibilné úložisko pri zmazaní inštancie. Obnova do novej inštancie z ľubovoľného snapshotu.
  • Autentifikácia gateway. Automaticky generuje token gateway pre každú inštanciu. Žiadne ručné párovanie, žiadny mDNS (ktorý v Kubernetes aj tak nefunguje).
  • Detekcia driftu. Každých 5 minút operátor kontroluje, či každý spravovaný prostriedok zodpovedá požadovanému stavu. Ak niekto ručne upraví NetworkPolicy alebo zmaže PDB, bude to opravené.

Predpoklady

Potrebujete:

  • Cluster Kubernetes (1.28+). Akákoľvek konformná distribúcia funguje: EKS, GKE, AKS, k3s alebo lokálny Kind cluster na testovanie.
  • kubectl nakonfigurovaný pre váš cluster.
  • Nainštalovaný helm v3.
  • API kľúč od vášho poskytovateľa AI (Anthropic, OpenAI alebo akýkoľvek OpenAI-kompatibilný endpoint).

Krok 1: Inštalácia operátora

Operátor sa dodáva ako OCI Helm chart. Jeden príkaz ho nainštaluje:

helm install openclaw-operator \
  oci://ghcr.io/openclaw-rocks/charts/openclaw-operator \
  --namespace openclaw-operator-system \
  --create-namespace

Overte, že beží:

kubectl get pods -n openclaw-operator-system

Mali by ste vidieť pod operátora v stave Running. Operátor tiež nainštaluje validačný webhook, ktorý zabráni nebezpečným konfiguráciám (ako je beh pod rootom).

Krok 2: Vytvorenie Secretu s API kľúčom

Uložte API kľúč svojho poskytovateľa AI do Kubernetes Secretu. Operátor ho injektuje do kontajnera agenta:

kubectl create namespace openclaw

kubectl create secret generic openclaw-api-keys \
  --namespace openclaw \
  --from-literal=ANTHROPIC_API_KEY=sk-ant-your-key-here

Pre OpenAI alebo iných poskytovateľov použite príslušný názov premennej prostredia (OPENAI_API_KEY, OPENROUTER_API_KEY a pod.). Do jedného Secretu môžete zahrnúť viacerých poskytovateľov.

Tip: Pre produkčné prostredie zvážte použitie External Secrets Operator na synchronizáciu kľúčov z AWS Secrets Manager, HashiCorp Vault, GCP Secret Manager alebo Azure Key Vault. Dokumentácia operátora obsahuje podrobné príklady.

Krok 3: Nasadenie prvého agenta

Vytvorte súbor s názvom 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 ho:

kubectl apply -f my-agent.yaml

Tento jediný prostriedok vytvorí StatefulSet, Service, ServiceAccount, Role, RoleBinding, ConfigMap, PVC, PDB, NetworkPolicy a Secret s tokenom gateway. Operátor všetko zladí.

Krok 4: Overenie behu

Sledujte spúšťanie inštancie:

kubectl get openclawinstances -n openclaw -w
NAME       PHASE        READY   AGE
my-agent   Provisioning False   10s
my-agent   Running      True    45s

Keď fáza zobrazí Running a Ready je True, váš agent je aktívny. Skontrolujte logy:

kubectl logs -n openclaw statefulset/my-agent -f

Pre komunikáciu s agentom vykonajte port-forward gateway:

kubectl port-forward -n openclaw svc/my-agent 18789:18789

Potom otvorte http://localhost:18789 vo svojom prehliadači.

Krok 5: Pripojenie kanálu

OpenClaw podporuje Telegram, Discord, WhatsApp, Signal a ďalšie komunikačné kanály. Každý kanál sa konfiguruje cez premenné prostredia. Pridajte príslušný token do svojho Secretu:

kubectl create secret generic openclaw-channel-keys \
  --namespace openclaw \
  --from-literal=TELEGRAM_BOT_TOKEN=your-bot-token-here

Potom naň odkážte v inštancii:

spec:
  envFrom:
    - secretRef:
        name: openclaw-api-keys
    - secretRef:
        name: openclaw-channel-keys

OpenClaw automaticky deteguje token a aktivuje kanál. Žiadna ďalšia konfigurácia nie je potrebná.


Tým sú pokryté základy. Váš agent beží, je zabezpečený a dostupný. Zvyšok tohto návodu pokrýva voliteľné funkcie, ktoré môžete aktivovať, keď budete pripravení.

Automatizácia prehliadača

OpenClaw vie prehliadať web, robiť snímky obrazovky a interagovať so stránkami. Operátor z toho robí jednoriadkový doplnok. Spúšťa zabezpečený Chromium sidecar v tom istom pode, pripojený cez localhost:

spec:
  chromium:
    enabled: true
    resources:
      requests:
        cpu: 500m
        memory: 1Gi
      limits:
        cpu: 1000m
        memory: 2Gi

Operátor automaticky injektuje premennú prostredia CHROMIUM_URL do hlavného kontajnera. Sidecar beží ako UID 1001 s koreňovým súborovým systémom iba na čítanie a vlastným bezpečnostným kontextom.

Skilly a runtime závislosti

Skilly OpenClaw z ClawHub sa dajú inštalovať deklaratívne. Operátor spúšťa init kontajner, ktorý stiahne každý skill pred spustením agenta:

spec:
  skills:
    - "@anthropic/mcp-server-fetch"
    - "@anthropic/mcp-server-filesystem"

Ak vaše skilly alebo MCP servery potrebujú pnpm alebo Python, povoľte vstavané init kontajnery pre runtime závislosti:

spec:
  runtimeDeps:
    pnpm: true    # Installs pnpm via corepack
    python: true  # Installs Python 3.12 + uv

Init kontajnery inštalujú tieto nástroje na dátový PVC, takže prežijú reštarty bez nafukovania image kontajnera.

Automatické aktualizácie

OpenClaw často vydáva nové verzie. Operátor ich môže automaticky sledovať, zálohovať pred aktualizáciou a vrátiť sa späť, ak sa niečo pokazí:

spec:
  autoUpdate:
    enabled: true
    checkInterval: "12h"
    backupBeforeUpdate: true
    rollbackOnFailure: true
    healthCheckTimeout: "10m"

Keď sa v registri objaví nová verzia, operátor:

  1. Vytvorí zálohu workspace PVC na S3-kompatibilné úložisko
  2. Aktualizuje image tag na StatefulSete
  3. Čaká až do healthCheckTimeout, kým pod neprejde kontrolami dostupnosti
  4. Ak sa pod nestane ready, obnoví predchádzajúci image tag a zálohu

Po 3 po sebe idúcich neúspešných rollbackoch operátor pozastaví automatické aktualizácie a nastaví podmienku na vyšetrenie.

Poznámka: Automatická aktualizácia nemá účinok na image pripnuté digestom (spec.image.digest). Ak pripínate digestom, aktualizácie riadite ručne.

Produkčný hardening

Operátor je v predvolenom stave bezpečný. Tu sú ďalšie nastavenia pre produkčné nasadenia.

Monitorovanie s Prometheus

Povoľte ServiceMonitor na zber metrík operátora a inštancií:

spec:
  observability:
    metrics:
      enabled: true
      serviceMonitor:
        enabled: true
        interval: "30s"

Operátor vystavuje openclaw_reconcile_total, openclaw_reconcile_duration_seconds, openclaw_instance_phase a počítadlá automatických aktualizácií.

Plánovanie na vyhradené uzly

Ak prevádzkujete zmiešaný cluster, použite nodeSelector a tolerations na pripnutie agentov na vyhradené uzly:

spec:
  availability:
    nodeSelector:
      openclaw.rocks/nodepool: openclaw
    tolerations:
      - key: openclaw.rocks/dedicated
        value: openclaw
        effect: NoSchedule

Pridanie vlastných pravidiel egress

Predvolená NetworkPolicy povoľuje iba DNS (port 53) a HTTPS (port 443). Ak váš agent potrebuje dosiahnuť na iné služby (databázu, frontu správ, interné API), pridajte pravidlá egress:

spec:
  security:
    networkPolicy:
      additionalEgress:
        - to:
            - ipBlock:
                cidr: 10.0.0.0/8
          ports:
            - port: 5432
              protocol: TCP

Identita poskytovateľa cloudu

Pre AWS IRSA alebo 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átne CA

Ak váš cluster používa TLS-interceptujúci proxy, injektujte CA balíček:

spec:
  security:
    caBundle:
      configMapName: corporate-ca-bundle
      key: ca-bundle.crt

Operátor pripojí CA balíček do všetkých kontajnerov a automaticky nastaví NODE_EXTRA_CA_CERTS.

GitOps

CRD OpenClawInstance je obyčajný YAML súbor. To znamená, že sa priamo hodí do GitOps workflow. Uložte manifesty agentov do git repozitára a nechajte ArgoCD alebo Flux synchronizovať ich s clusterom.

Typická štruktúra repozitára:

gitops/
└── agents/
    ├── kustomization.yaml
    ├── namespace.yaml
    ├── agent-a.yaml
    └── agent-b.yaml

Každá zmena prechádza pull requestom. Váš tím kontroluje diff. Merge do main a ArgoCD to aplikuje. Žiadne kubectl apply z notebookov, žiadny konfiguračný drift, kompletný audit trail.

Hashovanie konfigurácie operátora to robí obzvlášť plynulým. Keď ArgoCD synchronizuje zmenenú spec.config.raw, operátor zistí zmenu hashu obsahu a automaticky spustí postupnú aktualizáciu. To isté platí pre rotáciu secretov: operátor sleduje odkazované Secrety a reštartuje pody, keď sa zmenia.

Zálohovanie a obnova

Operátor podporuje S3-kompatibilné zálohy. Keď zmažete inštanciu, operátor automaticky vytvorí zálohu workspace PVC pred zmazaním.

Pre obnovu agenta zo zálohy do novej inštancie:

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 stiahne snapshot, rozbalí ho do PVC a spustí agenta so všetkými predchádzajúcimi dátami workspace, skillmi a históriou konverzácií.

Lokálna inferencia s Ollama

Ak chcete, aby agenti používali lokálne modely (kvôli súkromiu, latencii alebo nákladom), operátor ponúka prvotriednú podporu Ollama. Nie je potrebné ručne konfigurovať sidecar: spec.ollama rieši kontajner, predsťahovanie modelov, úložisko a pridelenie 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

Pri povolení operátor:

  1. Pridá Ollama sidecar kontajner do podu
  2. Spustí init kontajner, ktorý vopred stiahne uvedené modely pred spustením agenta
  3. Injektuje OLLAMA_HOST=http://localhost:11434 do hlavného kontajnera
  4. Pridelí požadovaný NVIDIA GPU cez limity prostriedkov nvidia.com/gpu

V predvolenom stave sú modely uložené v emptyDir zväzku s konfigurovateľným limitom veľkosti. Pre perzistentné úložisko modelov medzi reštartmi (aby sa modely nesťahovali zakaždým znova) použite existujúci PVC:

spec:
  ollama:
    enabled: true
    models: ["llama3.2"]
    storage:
      existingClaim: ollama-models-pvc

Integrácia Tailscale

Sprístupnite svojho agenta vo svojom tailnete bez Ingress, load balancerov alebo verejných IP. Pole spec.tailscale operátora rieši injekciu autentifikačného kľúča, obohatenie konfigurácie a pravidlá NetworkPolicy:

spec:
  tailscale:
    enabled: true
    mode: serve       # or "funnel" for public internet access
    authKeySecretRef:
      name: tailscale-authkey
    hostname: my-agent

Vytvorte Secret s autentifikačným kľúčom s dočasným, znovupoužiteľným kľúčom z administračnej konzoly Tailscale:

kubectl create secret generic tailscale-authkey \
  --namespace openclaw \
  --from-literal=authkey=tskey-auth-...

V režime serve (predvolený) môžu agenta dosiahnuť iba členovia vášho tailnetu. V režime funnel ho Tailscale sprístupní na verejnom internete s automatickým HTTPS.

Operátor automaticky:

  • Injektuje premenné prostredia TS_AUTHKEY a TS_HOSTNAME
  • Zlúči gateway.tailscale.mode a gateway.tailscale.resetOnExit do konfigurácie OpenClaw
  • Pridá pravidlá egress pre STUN a WireGuard do NetworkPolicy

Pre prihlásenie SSO bez hesla pre členov tailnetu povoľte authSSO:

spec:
  tailscale:
    enabled: true
    mode: serve
    authKeySecretRef:
      name: tailscale-authkey
    authSSO: true

Toto nastaví gateway.auth.allowTailscale=true v konfigurácii OpenClaw, čo umožní členom tailnetu pristupovať k agentovi bez samostatného tokenu gateway.

Vlastné sidecary a init kontajnery

Pre použitie nad rámec vstavanej podpory Ollama a Tailscale operátor prijíma ľubovoľné sidecary a init kontajnery. Spustite Cloud SQL Proxy pre prístup k databáze, forwarder logov alebo akéhokoľvek iného pomocníka vedľa svojho 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 kontajnery bežia po vlastnom init pipeline operátora (seedovanie konfigurácie, 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 zlučovania konfigurácie

V predvolenom stave operátor prepíše konfiguračný súbor pri každom reštarte podu. Ak váš agent za behu modifikuje vlastnú konfiguráciu (cez skilly alebo sebamodifikáciu), nastavte mergeMode: merge pre hlboké zlúčenie konfigurácie operátora s existujúcou konfiguráciou PVC:

spec:
  config:
    mergeMode: merge
    raw:
      agents:
        defaults:
          model:
            primary: "anthropic/claude-sonnet-4-20250514"

V režime zlučovania majú kľúče zadané operátorom prednosť, ale kľúče pridané agentom samotným prežijú reštarty.

Kompletný príklad

Tu je produkčne pripravený manifest kombinujúci všetko z tohto 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 ho a máte zabezpečeného, automaticky aktualizovaného AI agenta s prehliadačom, lokálnou inferenciou, prístupom cez tailnet, monitorovaním, zálohovaním a sieťovou izoláciou. Jeden kubectl apply.

Čo získate ihneď

Bez dotyku jediného bezpečnostného nastavenia každý agent nasadený operátorom obsahuje:

  • Beh mimo root (UID 1000)
  • Koreňový súborový systém iba na čítanie
  • Všetky linuxové capabilities odstránené
  • Seccomp RuntimeDefault profil
  • Predvolená deny NetworkPolicy (iba DNS + HTTPS egress)
  • ServiceAccount na inštanciu bez automatického pripojenia tokenu
  • PodDisruptionBudget
  • Sondy liveness, readiness a startup
  • Automaticky generovaný autentifikačný token gateway
  • 5-minútová rekoncilácia driftu

Validačný webhook blokuje pokusy o beh pod rootom a varuje pred vypnutými NetworkPolicy, chýbajúcim TLS na Ingress a nedetegovanými kľúčmi poskytovateľa AI.

Ďalšie kroky

Ak narazíte na problémy alebo máte spätnú väzbu, otvorte issue na GitHube. PR sú tiež vítané.

Ak nechcete Kubernetes prevádzkovať sami, OpenClaw.rocks sa o všetko postará za vás. Vyberte plán, pripojte kanál a váš agent je aktívny behom sekúnd.