Az OpenClaw telepítése Kubernetes-re
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
helmv3. - 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:
- Biztonsági mentést készít a munkaterület PVC-ről S3-kompatibilis tárolóra
- Frissíti a kép taget a StatefulSeten
- Vár legfeljebb
healthCheckTimeoutideig, amíg a pod átmegy a rendelkezésre állási ellenőrzéseken - 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:
- Hozzáad egy Ollama sidecar konténert a podhoz
- Futtat egy init konténert, amely előzetesen letölti a felsorolt modelleket az ügynök indulása előtt
- Beinjektálja az
OLLAMA_HOST=http://localhost:11434értéket a fő konténerbe - Kiosztja a kért NVIDIA GPU-t az
nvidia.com/gpuerő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ésTS_HOSTNAMEkörnyezeti változókat - Egyesíti a
gateway.tailscale.modeésgateway.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
- Böngéssze a teljes API-referenciát minden CRD-mezőhöz
- Olvassa el a telepítési útmutatókat az EKS, GKE, AKS és Kind platformokhoz
- Állítson be modell-tartalék láncokat több AI-szolgáltatón keresztül
- Konfigurálja az External Secrets szolgáltatást a Vault, AWS, GCP vagy Azure számára
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.