Kā izvietot OpenClaw uz Kubernetes
Drošības pētnieki ir atraduši vairāk nekā 135 000 OpenClaw instanču, kas internetā ir pilnīgi neaizsargātas. Daudzas no tām bija neaizsargātas pret attālinātu koda izpildi. OpenClaw drošības krīze ir reāla: kritiskas CVE ievainojamības, ļaunprātīgas prasmes un fundamentāla problēma ar to, kā vairums izvietojumu apstrādā autentifikāciju. OpenClaw palaišana uz VPS ar docker run ir vienkārša. Droša palaišana ir pavisam cita problēma.
Kubernetes atrisina šo problēmu. Jūs iegūstat tīkla izolāciju, resursu ierobežojumus, automatizētas restartēšanas un drošības noklusējumus, kuru manuāla konfigurēšana aizņemtu stundas. Ar OpenClaw Kubernetes Operator jūs to visu iegūstat no viena YAML faila.
Šī rokasgrāmata aizved jūs no nulles līdz ražošanai gatavam OpenClaw aģentam uz Kubernetes. Katrs YAML bloks ir gatavs kopēšanai un ielīmēšanai.
Kāpēc operators
OpenClaw palaišana uz Kubernetes ir vairāk nekā Deployment un Service. Jums ir nepieciešama tīkla izolācija, noslēpumu pārvaldība, pastāvīga krātuve, veselības uzraudzība, konfigurācijas ieviešana un pēc izvēles pārlūka automatizācija. Visa tā pareiza savienošana manuāli ir garlaicīga un kļūdām pakļauta.
Kubernetes operators kodē šīs prasības vienā pielāgotā resursā. Jūs deklarējat, ko vēlaties, un operators nepārtraukti saskaņo to pareizajā Kubernetes objektu kopā. Ar to jūs iegūstat:
- Drošību pēc noklusējuma. Katrs aģents darbojas kā UID 1000, visas Linux spējas noņemtas, seccomp iespējots, tikai lasāma saknes failu sistēma un pēc noklusējuma aizliedzoša NetworkPolicy, kas atļauj tikai DNS un HTTPS izejošo komunikāciju. Nav nepieciešama manuāla nostiprināšana.
- Automātiskas atjaunināšanas ar atcelšanu. Operators pārbauda OCI reģistru jaunām versijām, izveido darba telpas rezerves kopiju, ievieš atjauninājumu un automātiski atceļ, ja jaunais pods neiztur veselības pārbaudes.
- Konfigurācijas ieviešanu. Mainiet savu
spec.config.rawun operators konstatē, ka satura jaucējsumma mainījusies, un aktivizē secīgu atjaunināšanu. Tas pats noslēpumu rotācijai. - Rezerves kopēšanu un atjaunošanu. Automātiska darba telpas rezerves kopija uz S3 saderīgu krātuvi instances dzēšanas brīdī. Atjaunošana jaunā instancē no jebkura momentuzņēmuma.
- Vārtejas autentifikāciju. Automātiski ģenerē vārtejas žetonu katrai instancei. Nav manuālas sasaistes, nav mDNS (kas Kubernetes vidē tāpat nedarbojas).
- Novirzes noteikšanu. Ik pēc 5 minūtēm operators pārbauda, vai katrs pārvaldītais resurss atbilst vēlamajam stāvoklim. Ja kāds manuāli rediģē NetworkPolicy vai izdzēš PDB, tas tiek saskaņots atpakaļ.
Priekšnosacījumi
Jums ir nepieciešams:
- Kubernetes klasteris (1.28+). Jebkura saderīga distribūcija darbojas: EKS, GKE, AKS, k3s vai lokāls Kind klasteris testēšanai.
kubectl, konfigurēts komunikācijai ar jūsu klasteri.helmv3 instalēts.- API atslēga jūsu AI pakalpojumu sniedzējam (Anthropic, OpenAI vai jebkurš OpenAI saderīgs galapunkts).
1. solis: Instalējiet operatoru
Operators tiek piegādāts kā OCI Helm chart. Viena komanda to instalē:
helm install openclaw-operator \
oci://ghcr.io/openclaw-rocks/charts/openclaw-operator \
--namespace openclaw-operator-system \
--create-namespace
Pārbaudiet, vai tas darbojas:
kubectl get pods -n openclaw-operator-system
Jums jāredz operatora pods stāvoklī Running. Operators arī instalē validējošu webhook, kas novērš nedrošas konfigurācijas (piemēram, darbību kā root).
2. solis: Izveidojiet savu API atslēgas noslēpumu
Saglabājiet sava AI pakalpojumu sniedzēja API atslēgu Kubernetes Secret. Operators to ievadīs aģenta konteinerā:
kubectl create namespace openclaw
kubectl create secret generic openclaw-api-keys \
--namespace openclaw \
--from-literal=ANTHROPIC_API_KEY=sk-ant-your-key-here
OpenAI vai citiem pakalpojumu sniedzējiem izmantojiet atbilstošo vides mainīgā nosaukumu (OPENAI_API_KEY, OPENROUTER_API_KEY utt.). Jūs varat iekļaut vairākus pakalpojumu sniedzējus tajā pašā Secret.
Padoms: Ražošanai apsveriet External Secrets Operator izmantošanu atslēgu sinhronizēšanai no AWS Secrets Manager, HashiCorp Vault, GCP Secret Manager vai Azure Key Vault. Operatora dokumentācijā ir detalizēti piemēri.
3. solis: Izvietojiet savu pirmo aģentu
Izveidojiet failu ar nosaukumu 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
Lietojiet to:
kubectl apply -f my-agent.yaml
Šis viens resurss izveido StatefulSet, Service, ServiceAccount, Role, RoleBinding, ConfigMap, PVC, PDB, NetworkPolicy un vārtejas žetona Secret. Operators to visu saskaņo.
4. solis: Pārbaudiet, vai tas darbojas
Vērojiet instances palaišanos:
kubectl get openclawinstances -n openclaw -w
NAME PHASE READY AGE
my-agent Provisioning False 10s
my-agent Running True 45s
Kad fāze rāda Running un Ready ir True, jūsu aģents ir aktīvs. Pārbaudiet žurnālus:
kubectl logs -n openclaw statefulset/my-agent -f
Lai mijiedarbotos ar aģentu, pārsūtiet vārtejas portu:
kubectl port-forward -n openclaw svc/my-agent 18789:18789
Tad atveriet pārlūkā http://localhost:18789.
5. solis: Pievienojiet kanālu
OpenClaw atbalsta Telegram, Discord, WhatsApp, Signal un citus ziņojumapmaiņas kanālus. Katrs kanāls tiek konfigurēts caur vides mainīgajiem. Pievienojiet attiecīgo žetonu savam Secret:
kubectl create secret generic openclaw-channel-keys \
--namespace openclaw \
--from-literal=TELEGRAM_BOT_TOKEN=your-bot-token-here
Tad atsaucieties uz to savā instancē:
spec:
envFrom:
- secretRef:
name: openclaw-api-keys
- secretRef:
name: openclaw-channel-keys
OpenClaw automātiski nosaka žetonu un iespējo kanālu. Papildu konfigurācija nav nepieciešama.
Ar to pamati ir aptverti. Jūsu aģents darbojas, ir nodrošināts un sasniedzams. Pārējā rokasgrāmatas daļa aptver izvēles funkcijas, kuras varat iespējot, kad esat gatavs.
Pārlūka automatizācija
OpenClaw var pārlūkot tīmekli, uzņemt ekrānuzņēmumus un mijiedarboties ar lapām. Operators to padara par vienas rindas papildinājumu. Tas palaiž nostiprinātu Chromium blakusvagonu tajā pašā podā, savienotu caur localhost:
spec:
chromium:
enabled: true
resources:
requests:
cpu: 500m
memory: 1Gi
limits:
cpu: 1000m
memory: 2Gi
Operators automātiski ievada vides mainīgo CHROMIUM_URL galvenajā konteinerā. Blakusvagona konteiners darbojas kā UID 1001 ar tikai lasāmu saknes failu sistēmu un savu drošības kontekstu.
Prasmes un izpildlaika atkarības
OpenClaw prasmes no ClawHub var instalēt deklaratīvi. Operators palaiž inicializācijas konteineru, kas ielādē katru prasmi pirms aģenta palaišanas:
spec:
skills:
- "@anthropic/mcp-server-fetch"
- "@anthropic/mcp-server-filesystem"
Ja jūsu prasmēm vai MCP serveriem ir nepieciešams pnpm vai Python, iespējojiet iebūvētos izpildlaika atkarību inicializācijas konteinerus:
spec:
runtimeDeps:
pnpm: true # Installs pnpm via corepack
python: true # Installs Python 3.12 + uv
Inicializācijas konteineri instalē šos rīkus datu PVC, tāpēc tie saglabājas starp restartēšanām, nepalielinot konteinera attēlu.
Automātiskas atjaunināšanas
OpenClaw bieži izdod jaunas versijas. Operators var tās automātiski izsekot, pirms atjaunināšanas izveidot rezerves kopiju un atcelt, ja kaut kas noiet greizi:
spec:
autoUpdate:
enabled: true
checkInterval: "12h"
backupBeforeUpdate: true
rollbackOnFailure: true
healthCheckTimeout: "10m"
Kad reģistrā parādās jauna versija, operators:
- Izveido darba telpas PVC rezerves kopiju uz S3 saderīgu krātuvi
- Atjaunina attēla birku uz StatefulSet
- Gaida līdz
healthCheckTimeout, lai pods izturētu gatavības pārbaudes - Ja pods nespēj kļūt gatavs, atjauno iepriekšējo attēla birku un rezerves kopiju
Pēc 3 secīgām neveiksmīgām atcelšanām operators aptur automātisko atjaunināšanu un iestata nosacījumu, lai jūs varētu izmeklēt.
Piezīme: Automātiskā atjaunināšana neko nedara ar jaucējsummai piesaistītiem attēliem (
spec.image.digest). Ja piesaistāt ar jaucējsummu, jūs kontrolējat atjauninājumus manuāli.
Ražošanas nostiprināšana
Operators pēc noklusējuma ir drošs. Šeit ir papildu iestatījumi ražošanas izvietojumiem.
Uzraudzība ar Prometheus
Iespējojiet ServiceMonitor operatora un instanču metriku vākšanai:
spec:
observability:
metrics:
enabled: true
serviceMonitor:
enabled: true
interval: "30s"
Operators atklāj openclaw_reconcile_total, openclaw_reconcile_duration_seconds, openclaw_instance_phase un automātiskās atjaunināšanas skaitītājus.
Plānošana uz specializētiem mezgliem
Ja palaižat jauktu klasteri, izmantojiet nodeSelector un tolerations, lai piesaistītu aģentus specializētiem mezgliem:
spec:
availability:
nodeSelector:
openclaw.rocks/nodepool: openclaw
tolerations:
- key: openclaw.rocks/dedicated
value: openclaw
effect: NoSchedule
Pielāgotu izejošās komunikācijas noteikumu pievienošana
Noklusējuma NetworkPolicy atļauj tikai DNS (ports 53) un HTTPS (ports 443). Ja jūsu aģentam ir jāsasniedz citi pakalpojumi (datubāze, ziņojumu rinda, iekšējais API), pievienojiet izejošās komunikācijas noteikumus:
spec:
security:
networkPolicy:
additionalEgress:
- to:
- ipBlock:
cidr: 10.0.0.0/8
ports:
- port: 5432
protocol: TCP
Mākoņa pakalpojumu sniedzēja identitāte
AWS IRSA vai GCP Workload Identity gadījumā anotējiet pārvaldīto ServiceAccount:
spec:
security:
rbac:
serviceAccountAnnotations:
eks.amazonaws.com/role-arn: "arn:aws:iam::123456789:role/openclaw"
Korporatīvie starpniekserveri un privātie CA
Ja jūsu klasteris izmanto TLS pārtverošu starpniekserveri, ievadiet CA komplektu:
spec:
security:
caBundle:
configMapName: corporate-ca-bundle
key: ca-bundle.crt
Operators pievieno CA komplektu visiem konteineriem un automātiski iestata NODE_EXTRA_CA_CERTS.
GitOps
OpenClawInstance CRD ir parasts YAML fails. Tas nozīmē, ka tas tieši iekļaujas GitOps darba plūsmā. Glabājiet savu aģentu manifestus git repozitorijā un ļaujiet ArgoCD vai Flux sinhronizēt tos jūsu klasterī.
Tipiska repozitorija struktūra:
gitops/
└── agents/
├── kustomization.yaml
├── namespace.yaml
├── agent-a.yaml
└── agent-b.yaml
Katra izmaiņa iet caur sapludināšanas pieprasījumu. Jūsu komanda pārskata atšķirību. Sapludiniet ar main, un ArgoCD to lieto. Nav kubectl apply no klēpjdatoriem, nav konfigurācijas novirzes, pilna revīzijas izsekojamība.
Operatora konfigurācijas jaukšana padara to īpaši vienmērīgu. Kad ArgoCD sinhronizē mainītu spec.config.raw, operators konstatē, ka satura jaucējsumma mainījusies, un automātiski aktivizē secīgu atjaunināšanu. Tas pats noslēpumu rotācijai: operators uzrauga atsauktos noslēpumus un restartē podus, kad tie mainās.
Rezerves kopēšana un atjaunošana
Operators atbalsta S3 saderīgas rezerves kopijas. Kad dzēšat instanci, operators automātiski izveido darba telpas PVC rezerves kopiju pirms noņemšanas.
Lai atjaunotu aģentu no rezerves kopijas jaunā instancē:
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
Operators lejupielādē momentuzņēmumu, izpako to PVC un palaiž aģentu ar visiem iepriekšējiem darba telpas datiem, prasmēm un sarunu vēsturi.
Lokāli secinājumi ar Ollama
Ja vēlaties, lai aģenti izmantotu lokālos modeļus (privātuma, latentuma vai izmaksu dēļ), operatoram ir pirmšķiras Ollama atbalsts. Nav nepieciešams manuāli iestatīt blakusvagonu. spec.ollama apstrādā konteineru, modeļu priekšielādi, krātuvi un GPU piešķiršanu:
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
Kad iespējots, operators:
- Pievieno Ollama blakusvagona konteineru podam
- Palaiž inicializācijas konteineru, kas priekšielādē uzskaitītos modeļus pirms aģenta palaišanas
- Ievada
OLLAMA_HOST=http://localhost:11434galvenajā konteinerā - Piešķir pieprasīto NVIDIA GPU caur
nvidia.com/gpuresursu ierobežojumiem
Pēc noklusējuma modeļi tiek glabāti emptyDir sējumā ar konfigurējamu izmēra ierobežojumu. Pastāvīgai modeļu glabāšanai starp restartēšanām (lai modeļi netiktu atkārtoti ielādēti katru reizi) izmantojiet esošu PVC:
spec:
ollama:
enabled: true
models: ["llama3.2"]
storage:
existingClaim: ollama-models-pvc
Tailscale integrācija
Atklājiet savu aģentu savam tailnet bez Ingress, slodzes balansētājiem vai publiskām IP adresēm. Operatora spec.tailscale lauks apstrādā autentifikācijas atslēgas ievadīšanu, konfigurācijas bagātināšanu un NetworkPolicy noteikumus:
spec:
tailscale:
enabled: true
mode: serve # or "funnel" for public internet access
authKeySecretRef:
name: tailscale-authkey
hostname: my-agent
Izveidojiet autentifikācijas atslēgas noslēpumu ar īslaicīgu, atkārtoti lietojamu atslēgu no Tailscale administrēšanas konsoles:
kubectl create secret generic tailscale-authkey \
--namespace openclaw \
--from-literal=authkey=tskey-auth-...
Režīmā serve (noklusējums) tikai jūsu tailnet dalībnieki var sasniegt aģentu. Režīmā funnel Tailscale to atklāj publiskajam internetam ar automātisku HTTPS.
Operators automātiski:
- Ievada vides mainīgos
TS_AUTHKEYunTS_HOSTNAME - Sapludina
gateway.tailscale.modeungateway.tailscale.resetOnExitOpenClaw konfigurācijā - Pievieno STUN un WireGuard izejošās komunikācijas noteikumus NetworkPolicy
Bezparoles SSO pieteikšanās tailnet dalībniekiem, iespējojiet authSSO:
spec:
tailscale:
enabled: true
mode: serve
authKeySecretRef:
name: tailscale-authkey
authSSO: true
Tas iestata gateway.auth.allowTailscale=true OpenClaw konfigurācijā, lai tailnet dalībnieki varētu piekļūt aģentam bez atsevišķa vārtejas žetona.
Pielāgoti blakusvagoni un inicializācijas konteineri
Lietojumgadījumiem ārpus iebūvētā Ollama un Tailscale atbalsta operators pieņem patvaļīgus blakusvagonus un inicializācijas konteinerus. Palaidiet Cloud SQL Proxy datubāzes piekļuvei, žurnālu pārsūtītāju vai jebkuru citu palīgu blakus savam aģentam:
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
Pielāgoti inicializācijas konteineri darbojas pēc operatora paša inicializācijas cauruļvada (konfigurācijas iestatīšana, pnpm, Python, prasmes):
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ācijas sapludināšanas režīms
Pēc noklusējuma operators pārraksta konfigurācijas failu katrā poda restartēšanā. Ja jūsu aģents maina savu konfigurāciju izpildlaikā (caur prasmēm vai paš-modificēšanu), iestatiet mergeMode: merge operatora konfigurācijas dziļai sapludināšanai ar esošo PVC konfigurāciju:
spec:
config:
mergeMode: merge
raw:
agents:
defaults:
model:
primary: "anthropic/claude-sonnet-4-20250514"
Sapludināšanas režīmā operatora norādītās atslēgas uzvar, bet atslēgas, ko aģents pievienoja pats, saglabājas starp restartēšanām.
Pilns piemērs
Šeit ir ražošanai gatavs manifests, kas apvieno visu no šīs rokasgrāmatas:
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
Lietojiet to, un jums ir nostiprināts, automātiski atjaunināms, pārlūka iespējām aprīkots AI aģents ar lokāliem secinājumiem, tailnet piekļuvi, uzraudzību, rezerves kopijām un tīkla izolāciju. Viens kubectl apply.
Ko jūs iegūstat uzreiz
Neaiztiekot nevienu drošības iestatījumu, katrs operatora izvietots aģents tiek piegādāts ar:
- Ne-root izpildi (UID 1000)
- Tikai lasāmu saknes failu sistēmu
- Visas Linux spējas noņemtas
- Seccomp RuntimeDefault profilu
- Pēc noklusējuma aizliedzošu NetworkPolicy (tikai DNS + HTTPS izejošā komunikācija)
- Katras instances ServiceAccount bez automātiskas žetona piemontēšanas
- PodDisruptionBudget
- Dzīvotspējas, gatavības un palaišanas zondes
- Automātiski ģenerētu vārtejas autentifikācijas žetonu
- 5 minūšu novirzes saskaņošanu
Validējošs webhook bloķē mēģinājumus darbināt kā root un brīdina par atspējotām NetworkPolicy, trūkstošu TLS uz Ingress un neatklātām AI pakalpojumu sniedzēja atslēgām.
Nākamie soļi
- Pārlūkojiet pilnu API atsauci katram CRD laukam
- Lasiet izvietošanas rokasgrāmatas priekš EKS, GKE, AKS un Kind
- Iestatiet modeļu rezerves ķēdes starp vairākiem AI pakalpojumu sniedzējiem
- Konfigurējiet External Secrets priekš Vault, AWS, GCP vai Azure
Ja rodas problēmas vai ir atsauksmes, atveriet problēmu GitHub. Sapludināšanas pieprasījumi arī ir laipni gaidīti.
Ja nevēlaties pats pārvaldīt Kubernetes, OpenClaw.rocks apstrādā to visu jūsu vietā. Izvēlieties plānu, pievienojiet kanālu un jūsu aģents ir aktīvs sekundēs.