Biztonsági kutatók több mint 135 000 OpenClaw-példányt találtak teljesen védtelenül az interneten. Sok közülük sebezhető volt távoli kódvégrehajtásra. Az OpenClaw biztonsági válság valós: kritikus CVE-k, rosszindulatú skill-ek és egy alapvető probléma azzal, ahogyan a legtöbb telepítés kezeli az azonosítást. Az OpenClaw futtatása egy VPS-en docker run paranccsal egyszerű. Biztonságosan futtatni egészen más kérdés.

A Kubernetes megoldja ezt a problémát. Hálózati elkülönítést, erőforrás-korlátokat, automatikus újraindításokat és olyan biztonsági beállításokat kap, amelyek kézi konfigurálása órákat venne igénybe. Az OpenClaw Kubernetes Operátorral pedig mindezt egyetlen YAML-fájlból kapja meg.

Ez az útmutató a nulláról egy éles üzemre kész OpenClaw-ügynökig vezeti Önt a Kubernetes-en. Minden YAML-blokk másolásra és beillesztésre kész.

Miért operátor

Az OpenClaw Kubernetes-en való futtatása több mint egy Deployment és egy Service. Szüksége van hálózati elkülönítésre, Secret-kezelésre, perzisztens tárolóra, állapotfigyelésre, konfigurációs kihelyezésekre és opcionálisan böngésző-automatizálásra. Mindezt kézzel helyesen összekötni fáradságos és hibára hajlamos.

Egy Kubernetes operátor egyetlen Custom Resource-ba kódolja ezeket az igényeket. Ön deklarálja, mit szeretne, és az operátor folyamatosan egyezteti a megfelelő Kubernetes-objektumokkal. Ez a következőket biztosítja:

  • Alapértelmezett biztonság. Minden ügynök UID 1000-ként fut, minden Linux capability eltávolítva, Seccomp engedélyezve, csak olvasható gyökér fájlrendszer, és egy alapértelmezetten tiltó NetworkPolicy, amely csak DNS és HTTPS kimenő forgalmat engedélyez. Nincs szükség kézi megerősítésre.
  • Automatikus frissítések visszaállítással. Az operátor lekérdezi az OCI-regisztrációs adatbázist új verziókra, biztonsági mentést készít a munkaterületről, kihelyezi a frissítést, és automatikusan visszaállítja, ha az új pod nem teljesíti az állapotellenőrzéseket.
  • Konfigurációs kihelyezések. Módosítsa a spec.config.raw értéket, és az operátor észleli a tartalom-hash változását, gördülő frissítést indítva. Ugyanez vonatkozik a secret-rotációra.
  • Biztonsági mentés és visszaállítás. Automatikus munkaterület-mentés S3-kompatibilis tárolóra a példány törlésekor. Visszaállítás új példányba bármely pillanatfelvételből.
  • Gateway-azonosítás. Automatikusan generál egy gateway-tokent példányonként. Nincs kézi párosítás, nincs mDNS (ami Kubernetes-ben amúgy sem működik).
  • Eltérés-észlelés. 5 percenként az operátor ellenőrzi, hogy minden kezelt erőforrás megfelel-e a kívánt állapotnak. Ha valaki kézzel módosít egy NetworkPolicy-t vagy töröl egy PDB-t, az visszaáll.

Előfeltételek

A következőkre van szüksége:

  • Kubernetes-klaszter (1.28+). Bármely szabványos disztribúció működik: EKS, GKE, AKS, k3s, vagy egy helyi Kind-klaszter teszteléshez.
  • A klaszterhez konfigurált kubectl.
  • Telepített helm v3.
  • API-kulcs az AI-szolgáltatójától (Anthropic, OpenAI, vagy bármely OpenAI-kompatibilis végpont).

1. lépés: Az operátor telepítése

Az operátor OCI Helm chartként érhető el. Egyetlen parancs telepíti:

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

Ellenőrizze, hogy fut-e:

kubectl get pods -n openclaw-operator-system

Az operátor podot Running állapotban kell látnia. Az operátor telepít egy validáló webhookot is, amely megakadályozza a nem biztonságos konfigurációkat (például a root-ként való futtatást).

2. lépés: Az API-kulcs Secret létrehozása

Tárolja az AI-szolgáltató API-kulcsát egy Kubernetes Secretben. Az operátor beinjektálja az ügynök-konténerbe:

kubectl create namespace openclaw

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

OpenAI vagy más szolgáltatók esetén használja a megfelelő környezeti változónevet (OPENAI_API_KEY, OPENROUTER_API_KEY stb.). Több szolgáltatót is tartalmazhat ugyanabban a Secretben.

Tipp: Éles környezetben fontolja meg az External Secrets Operator használatát a kulcsok szinkronizálásához az AWS Secrets Manager, HashiCorp Vault, GCP Secret Manager vagy Azure Key Vault szolgáltatásokból. Az operátor dokumentációja részletes példákat tartalmaz.

3. lépés: Az első ügynök telepítése

Hozzon létre egy my-agent.yaml nevű fájlt:

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

Alkalmazza:

kubectl apply -f my-agent.yaml

Ez az egyetlen erőforrás létrehoz egy StatefulSetet, Service-t, ServiceAccountot, Role-t, RoleBindingot, ConfigMapot, PVC-t, PDB-t, NetworkPolicy-t és egy gateway-token Secetet. Az operátor mindezt egyezteti.

4. lépés: A működés ellenőrzése

Kövesse figyelemmel a példány indulását:

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

Amint a fázis Running-ot mutat és a Ready True, az ügynök aktív. Ellenőrizze a naplókat:

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

Az ügynökkel való kommunikációhoz irányítsa át a gateway portját:

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

Majd nyissa meg a http://localhost:18789 címet a böngészőjében.

5. lépés: Csatorna csatlakoztatása

Az OpenClaw támogatja a Telegram, Discord, WhatsApp, Signal és más üzenetküldő csatornákat. Minden csatorna környezeti változókon keresztül konfigurálható. Adja hozzá a megfelelő tokent a Secrethez:

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

Majd hivatkozzon rá a példányában:

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

Az OpenClaw automatikusan felismeri a tokent és aktiválja a csatornát. Nincs szükség további konfigurációra.


Ez lefedi az alapokat. Az ügynök fut, védett és elérhető. Az útmutató további része az opcionális funkciókat ismerteti, amelyeket akkor aktiválhat, amikor készen áll.

Böngésző-automatizálás

Az OpenClaw képes böngészni a weben, képernyőképeket készíteni és oldalakkal interakcióba lépni. Az operátor ezt egyetlen soros kiegészítéssé teszi. Egy megerősített Chromium sidecart futtat ugyanabban a podban, localhost-on keresztül csatlakoztatva:

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

Az operátor automatikusan beinjektál egy CHROMIUM_URL környezeti változót a fő konténerbe. A sidecar UID 1001-ként fut, csak olvasható gyökér fájlrendszerrel és saját biztonsági kontextussal.

Skill-ek és futásidejű függőségek

Az OpenClaw skill-ek a ClawHub-ról deklaratívan telepíthetők. Az operátor egy init konténert futtat, amely letölti az egyes skill-eket az ügynök indulása előtt:

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

Ha a skill-ek vagy MCP-szerverek pnpm-et vagy Pythont igényelnek, engedélyezze a beépített futásidejű függőség init konténereket:

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

Az init konténerek ezeket az eszközöket az adat-PVC-re telepítik, így azok megmaradnak az újraindítások között anélkül, hogy felfújnák a konténer-képet.

Automatikus frissítések

Az OpenClaw gyakran ad ki új verziókat. Az operátor automatikusan követheti ezeket, biztonsági mentést készíthet frissítés előtt, és visszaállíthat, ha valami rosszul sül el:

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

Amikor új verzió jelenik meg a regisztrációs adatbázisban, az operátor:

  1. Biztonsági mentést készít a munkaterület PVC-ről S3-kompatibilis tárolóra
  2. Frissíti a kép taget a StatefulSeten
  3. Vár legfeljebb healthCheckTimeout ideig, amíg a pod átmegy a rendelkezésre állási ellenőrzéseken
  4. Ha a pod nem lesz kész, visszaállítja az előző kép taget és a biztonsági mentést

3 egymás utáni sikertelen visszaállítás után az operátor szünetelteti az automatikus frissítést és beállít egy feltételt a vizsgálathoz.

Megjegyzés: Az automatikus frissítés nem hat a digest-tel rögzített képekre (spec.image.digest). Ha digest-tel rögzít, a frissítéseket manuálisan kezeli.

Éles üzemi megerősítés

Az operátor alapértelmezetten biztonságos. Íme a további beállítási lehetőségek éles telepítésekhez.

Monitorozás Prometheus-szal

Engedélyezze a ServiceMonitort az operátor- és példány-metrikák gyűjtéséhez:

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

Az operátor közzéteszi az openclaw_reconcile_total, openclaw_reconcile_duration_seconds, openclaw_instance_phase és automatikus frissítési számlálókat.

Ütemezés dedikált csomópontokra

Vegyes klaszter esetén használjon nodeSelector-t és tolerations-t az ügynökök dedikált csomópontokhoz rögzítéséhez:

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

Egyéni kimenő szabályok hozzáadása

Az alapértelmezett NetworkPolicy csak a DNS-t (53-as port) és a HTTPS-t (443-as port) engedélyezi. Ha az ügynöknek más szolgáltatásokat kell elérnie (adatbázist, üzenetsor-t, belső API-t), adjon hozzá kimenő szabályokat:

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

Felhőszolgáltató-identitás

AWS IRSA vagy GCP Workload Identity esetén annotálja a kezelt ServiceAccountot:

spec:
  security:
    rbac:
      serviceAccountAnnotations:
        eks.amazonaws.com/role-arn: "arn:aws:iam::123456789:role/openclaw"

Vállalati proxyk és privát CA-k

Ha a klaszter TLS-elfogó proxyt használ, injektáljon CA-csomagot:

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

Az operátor csatolja a CA-csomagot minden konténerbe és automatikusan beállítja a NODE_EXTRA_CA_CERTS értéket.

GitOps

Az OpenClawInstance CRD egy egyszerű YAML-fájl. Ez azt jelenti, hogy közvetlenül illeszkedik egy GitOps munkafolyamatba. Tárolja az ügynök-manifeszteket egy git-tárolóban, és hagyja, hogy az ArgoCD vagy Flux szinkronizálja őket a klaszterrel.

Egy tipikus tároló-struktúra:

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

Minden változás pull requesten megy keresztül. A csapat átnézi a diffet. Merge a mainbe, és az ArgoCD alkalmazza. Nincs kubectl apply laptopokról, nincs konfigurációs eltérés, teljes audit napló.

Az operátor konfigurációs hashelése ezt különösen zökkenőmentessé teszi. Amikor az ArgoCD szinkronizál egy módosított spec.config.raw-ot, az operátor észleli a tartalom-hash változását és automatikusan gördülő frissítést indít. Ugyanez vonatkozik a secret-rotációra: az operátor figyeli a hivatkozott Secreteket és újraindítja a podokat, amikor változnak.

Biztonsági mentés és visszaállítás

Az operátor támogatja az S3-kompatibilis mentéseket. Amikor töröl egy példányt, az operátor automatikusan biztonsági mentést készít a munkaterület PVC-ről a törlés előtt.

Ügynök visszaállítása mentésből egy új példányba:

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

Az operátor letölti a pillanatfelvételt, kicsomagolja a PVC-be, és elindítja az ügynököt az összes korábbi munkaterület-adattal, skill-lel és beszélgetési előzménnyel.

Helyi következtetés Ollama-val

Ha azt szeretné, hogy az ügynökök helyi modelleket használjanak (adatvédelem, késleltetés vagy költség miatt), az operátor elsőosztályú Ollama-támogatást kínál. Nincs szükség kézi sidecar-konfigurációra: a spec.ollama kezeli a konténert, a modell előzetes letöltését, a tárolást és a GPU-kiosztást:

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

Engedélyezéskor az operátor:

  1. Hozzáad egy Ollama sidecar konténert a podhoz
  2. Futtat egy init konténert, amely előzetesen letölti a felsorolt modelleket az ügynök indulása előtt
  3. Beinjektálja az OLLAMA_HOST=http://localhost:11434 értéket a fő konténerbe
  4. Kiosztja a kért NVIDIA GPU-t az nvidia.com/gpu erőforrás-korlátokon keresztül

Alapértelmezetten a modellek egy emptyDir kötetben tárolódnak konfigurálható méretkorláttal. A modellek perzisztens tárolásához az újraindítások között (hogy ne kelljen minden alkalommal újra letölteni) használjon meglévő PVC-t:

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

Tailscale-integráció

Tegye elérhetővé ügynökét a tailnetjén Ingress, terheléselosztók vagy nyilvános IP-k nélkül. Az operátor spec.tailscale mezője kezeli a hitelesítési kulcs injektálását, a konfiguráció gazdagítását és a NetworkPolicy-szabályokat:

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

Hozza létre a hitelesítési kulcs Secretet egy rövid életű, újrafelhasználható kulccsal a Tailscale adminisztrációs konzolból:

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

serve módban (alapértelmezett) csak a tailnet tagjai érhetik el az ügynököt. funnel módban a Tailscale automatikus HTTPS-sel teszi elérhetővé a nyilvános interneten.

Az operátor automatikusan:

  • Beinjektálja a TS_AUTHKEY és TS_HOSTNAME környezeti változókat
  • Egyesíti a gateway.tailscale.mode és gateway.tailscale.resetOnExit értékeket az OpenClaw-konfigurációba
  • Hozzáadja a STUN és WireGuard kimenő szabályokat a NetworkPolicy-hoz

Jelszó nélküli SSO-bejelentkezéshez a tailnet tagjai számára engedélyezze az authSSO-t:

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

Ez beállítja a gateway.auth.allowTailscale=true értéket az OpenClaw-konfigurációban, lehetővé téve a tailnet tagjai számára az ügynök elérését külön gateway-token nélkül.

Egyéni sidecarok és init konténerek

A beépített Ollama- és Tailscale-támogatáson túli felhasználási esetekhez az operátor tetszőleges sidecarokat és init konténereket fogad el. Futtasson Cloud SQL Proxyt adatbázis-eléréshez, naplótovábbítót vagy bármilyen más segédprogramot az ügynök mellett:

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

Az egyéni init konténerek az operátor saját init-csővezetéke (konfiguráció-feltöltés, pnpm, Python, skill-ek) után futnak:

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

Konfiguráció-egyesítési mód

Alapértelmezetten az operátor felülírja a konfigurációs fájlt minden pod-újraindításkor. Ha az ügynök futásidőben módosítja saját konfigurációját (skill-eken vagy önmódosításon keresztül), állítsa be a mergeMode: merge értéket az operátor-konfiguráció és a meglévő PVC-konfiguráció mély egyesítéséhez:

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

Egyesítési módban az operátor által megadott kulcsok élveznek elsőbbséget, de az ügynök által saját maga hozzáadott kulcsok túlélik az újraindításokat.

A teljes példa

Íme egy éles üzemre kész manifeszt, amely mindent kombinál ebből az útmutatóból:

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

Alkalmazza, és máris rendelkezik egy megerősített, automatikusan frissülő, böngészőképes AI-ügynökkel helyi következtetéssel, tailnet-hozzáféréssel, monitorozással, biztonsági mentéssel és hálózati elkülönítéssel. Egyetlen kubectl apply.

Mit kap azonnal

Egyetlen biztonsági beállítás érintése nélkül minden, az operátor által telepített ügynök a következőkkel rendelkezik:

  • Nem root futtatás (UID 1000)
  • Csak olvasható gyökér fájlrendszer
  • Minden Linux capability eltávolítva
  • Seccomp RuntimeDefault profil
  • Alapértelmezetten tiltó NetworkPolicy (csak DNS + HTTPS kimenő)
  • Példányonkénti ServiceAccount automatikus token-csatolás nélkül
  • PodDisruptionBudget
  • Liveness, readiness és startup szondák
  • Automatikusan generált gateway-hitelesítési token
  • 5 perces eltérés-egyeztetés

Egy validáló webhook blokkolja a root-ként való futtatási kísérleteket, és figyelmeztet a letiltott NetworkPolicy-kra, a hiányzó TLS-re az Ingressen és a nem észlelt AI-szolgáltató kulcsokra.

Következő lépések

Ha problémába ütközik vagy visszajelzése van, nyisson egy issue-t a GitHub-on. A PR-ok is szívesen fogadottak.

Ha nem szeretné maga üzemeltetni a Kubernetes-t, az OpenClaw.rocks mindezt intézi Ön helyett. Válasszon egy csomagot, csatlakoztasson egy csatornát, és az ügynöke másodpercek alatt él.