Kaip diegti OpenClaw Kubernetes aplinkoje
Saugumo tyrejai rado daugiau nei 135 000 OpenClaw egzemplioriu, kurie internete yra visiskai neapsaugoti. Daugelis ju buvo pazheidzhjami nuotoliniam kodo vykdymui. OpenClaw saugumo krize yra reali: kritines CVE, kenkejishki igudzhiai ir esminis problemos su tuo, kaip dauguma diegimu tvarko autentifikacija. OpenClaw paleidimas VPS su docker run yra paprastas. Saugus paleidimas yra visai kitas uzdavinys.
Kubernetes ishsprendzhia shi problema. Gaunate tinklo izoliacija, ishtekliu apribojimus, automatizuotus paleidimus is naujo ir saugumo numatytuosius nustatymus, kuriu rankinis konfiguravimas uzhimtu valandas. Su OpenClaw Kubernetes Operator visa tai gaunate is vieno YAML failo.
Shis vadovas nuves jus nuo nulio iki gamybai paruoshto OpenClaw agento Kubernetes aplinkoje. Kiekvienas YAML blokas yra paruoshtas kopijavimui ir iklijavimui.
Kodel operatorius
OpenClaw paleidimas Kubernetes aplinkoje yra daugiau nei Deployment ir Service. Jums reikia tinklo izoliacijos, paslapchiu valdymo, nuolatines saugyklos, sveikatos stebesenos, konfiguracijos diegimo ir pasirinktinai narshykles automatizavimo. Viso to teisingas sujungimas rankiniu budu yra nuobodus ir linkses i klaidas.
Kubernetes operatorius uzhkoduoja shiuos reikalavimus i viena tinkinami ishtekli. Jus deklaruojate, ko norite, o operatorius nuolat suderina tai i teisinga Kubernetes objektu rinkini. Su tuo gaunate:
- Sauguma pagal numatytaji. Kiekvienas agentas veikia kaip UID 1000, visos Linux galimibes pashhalintos, seccomp ijungtas, tik skaitoma shakniné failu sistema ir pagal numatytaji draudzhianti NetworkPolicy, kuri leidzha tik DNS ir HTTPS isheinanchia komunikacija. Jokio rankinio sustiprinjmo nereikia.
- Automatinius atnaujinimus su atshuakimu. Operatorius tikrina OCI registra del nauju versiju, padaro darbo erdves atsargine kopija, idiegia atnaujinima ir automatishkai atshuaka, jei naujas podas neishlaiko sveikatos patikru.
- Konfiguracijos diegima. Pakeiskite savo
spec.config.rawir operatorius aptinka, kad turinio maishah pasikéite, ir paleidzhia nuoseklu atnaujinima. Tas pats paslapchiu rotacijai. - Atsarginiu kopiju kurima ir atkurima. Automatine darbo erdves atsarginé kopija i S3 suderinama saugykla egzemplioriaus trynimo metu. Atkurimas i nauja egzemplioriu is bet kurio momentinio vaizdo.
- Vartu autentifikacija. Automatishkai generuoja vartu zhetona kiekvienam egzemplioriui. Jokio rankinio susiejimo, jokio mDNS (kuris Kubernetes aplinkoje vis tiek neveikia).
- Nuokrypiu aptikima. Kas 5 minutes operatorius patikrina, ar kiekvienas valdomas ishteklius atitinka norima busena. Jei kas nors rankiniu budu redaguoja NetworkPolicy arba ishtrina PDB, tai suderinama atgal.
Butinosios salygos
Jums reikia:
- Kubernetes klasterio (1.28+). Bet kuri suderinama distribucija veikia: EKS, GKE, AKS, k3s arba vietinis Kind klasteris testavimui.
kubectl, sukonfiguruoto komunikacijai su jusu klasteriu.helmv3 idiegto.- API rakto jusu AI teikejui (Anthropic, OpenAI arba bet kuris OpenAI suderinamas galinis tashkas).
1 zhingsnis: Idiekite operatoriu
Operatorius pristatomas kaip OCI Helm chart. Viena komanda ji idiegia:
helm install openclaw-operator \
oci://ghcr.io/openclaw-rocks/charts/openclaw-operator \
--namespace openclaw-operator-system \
--create-namespace
Patikrinkite, ar jis veikia:
kubectl get pods -n openclaw-operator-system
Turetumete matyti operatoriaus poda busenoje Running. Operatorius taip pat idiegia validuojanti webhook, kuris neleidzhia nesaugiu konfiguaraciju (tokiu kaip paleidimas root teisemis).
2 zhingsnis: Sukurkite savo API rakto paslaptí
Issaugokite savo AI teikejo API rakta Kubernetes Secret. Operatorius ji ives i agento konteineri:
kubectl create namespace openclaw
kubectl create secret generic openclaw-api-keys \
--namespace openclaw \
--from-literal=ANTHROPIC_API_KEY=sk-ant-your-key-here
OpenAI ar kitiems teikejams naudokite atitinkama aplinkos kintamojo pavadinima (OPENAI_API_KEY, OPENROUTER_API_KEY ir kt.). I ta pachi Secret galite itraukti kelis teikejus.
Patarimas: Gamybai apsvarstykite External Secrets Operator naudojima raktams sinchronizuoti is AWS Secrets Manager, HashiCorp Vault, GCP Secret Manager ar Azure Key Vault. Operatoriaus dokumentacijoje yra detalus pavyzdzhiai.
3 zhingsnis: Idiekite pirma agenta
Sukurkite faila pavadinimu 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
Pritaikykite ji:
kubectl apply -f my-agent.yaml
Shis vienas ishteklius sukuria StatefulSet, Service, ServiceAccount, Role, RoleBinding, ConfigMap, PVC, PDB, NetworkPolicy ir vartu zhetono Secret. Operatorius visa tai suderina.
4 zhingsnis: Patikrinkite, ar jis veikia
Stebékite egzemplioriaus paleidima:
kubectl get openclawinstances -n openclaw -w
NAME PHASE READY AGE
my-agent Provisioning False 10s
my-agent Running True 45s
Kai faze rodo Running ir Ready yra True, jusu agentas yra aktyvus. Patikrinkite zhurnalus:
kubectl logs -n openclaw statefulset/my-agent -f
Noredami bendrauti su agentu, peradresuokite vartu prievada:
kubectl port-forward -n openclaw svc/my-agent 18789:18789
Tada atidarykite http://localhost:18789 narshykleje.
5 zhingsnis: Prijunkite kanala
OpenClaw palaiko Telegram, Discord, WhatsApp, Signal ir kitus zinuciu kanalus. Kiekvienas kanalas konfiguruojamas per aplinkos kintamuosius. Pridekite atitinkama zhetona prie savo Secret:
kubectl create secret generic openclaw-channel-keys \
--namespace openclaw \
--from-literal=TELEGRAM_BOT_TOKEN=your-bot-token-here
Tada nurodykite ji savo egzemplioriuje:
spec:
envFrom:
- secretRef:
name: openclaw-api-keys
- secretRef:
name: openclaw-channel-keys
OpenClaw automatishkai aptinka zhetona ir ijungia kanala. Jokios papildomos konfiguracijos nereikia.
Tuo pagrindai aprépti. Jusu agentas veikia, yra apsaugotas ir pasiekiamas. Likusi shio vadovo dalis apima pasirinktines funkcijas, kurias galite ijungti, kai busite pasiruoshe.
Narshykles automatizavimas
OpenClaw gali narshyti internete, daryti ekrano kopijas ir saveikaut su puslapiais. Operatorius tai padaro vienos eilutes priedu. Jis paleidzhia sustipinta Chromium shalutini konteineri tame pachiame pode, sujungta per localhost:
spec:
chromium:
enabled: true
resources:
requests:
cpu: 500m
memory: 1Gi
limits:
cpu: 1000m
memory: 2Gi
Operatorius automatishkai iveda aplinkos kintamaji CHROMIUM_URL i pagrindini konteineri. Shalutinis konteineris veikia kaip UID 1001 su tik skaitoma shaknine failu sistema ir savo saugumo kontekstu.
Igudzhiai ir vykdymo laiko priklausomybes
OpenClaw igudzhius is ClawHub galima diegti deklaratyviai. Operatorius paleidzhia inicializacijos konteineri, kuris atsisiunchia kiekviena igudzi pries agento paleidima:
spec:
skills:
- "@anthropic/mcp-server-fetch"
- "@anthropic/mcp-server-filesystem"
Jei jusu igudzhiams ar MCP serveriams reikia pnpm ar Python, ijunkite integruotus vykdymo laiko priklausomybiu inicializacijos konteinerius:
spec:
runtimeDeps:
pnpm: true # Installs pnpm via corepack
python: true # Installs Python 3.12 + uv
Inicializacijos konteineriai idiegia shiuos irankius i duomenu PVC, todel jie ishlieka tarp paleidimu is naujo nepuchiand konteinerio atvaizdzho.
Automatiniai atnaujinimai
OpenClaw dazhni leidzhia naujas versijas. Operatorius gali jas automatishkai sekti, pries atnaujindamas padaryti atsarginé kopija ir atshuokti, jei kas nors nepavyksta:
spec:
autoUpdate:
enabled: true
checkInterval: "12h"
backupBeforeUpdate: true
rollbackOnFailure: true
healthCheckTimeout: "10m"
Kai registre pasirodo nauja versija, operatorius:
- Sukuria darbo erdves PVC atsarginé kopija S3 suderinams saugykloje
- Atnaujina atvaizdzio zyme StatefulSet
- Laukia iki
healthCheckTimeout, kol podas ishlaiko parengties patikras - Jei podas nesugeba tapti paruoshtu, atkuria ankstesne atvaizdzio zyme ir atsarginé kopija
Po 3 iš eilés nesekminku atshaukimu operatorius sustabdo automatinius atnaujinimus ir nustato salyga, kad galetumete ishtirti.
Pastaba: Automatinis atnaujinimas nieko nedaro su maishah prisegtais atvaizdzhiais (
spec.image.digest). Jei prisegate maishah, atnaujinimus valdote rankiniu budu.
Gamybinis sustiprinimas
Operatorius pagal numatytaji yra saugus. Shtai papildomi nustatymai gamybiniams diegimams.
Stebesena su Prometheus
Ijunkite ServiceMonitor operatoriaus ir egzemplioriu metriku rinkimui:
spec:
observability:
metrics:
enabled: true
serviceMonitor:
enabled: true
interval: "30s"
Operatorius atskleidzhia openclaw_reconcile_total, openclaw_reconcile_duration_seconds, openclaw_instance_phase ir automatiniu atnaujinimu skaitiklius.
Planavimas skirtuose mazguose
Jei paleidzhiate mishru klasteri, naudokite nodeSelector ir tolerations agentu prisegimui prie skirtu mazgu:
spec:
availability:
nodeSelector:
openclaw.rocks/nodepool: openclaw
tolerations:
- key: openclaw.rocks/dedicated
value: openclaw
effect: NoSchedule
Tinkintu isheineanchios komunikacijos taisykliu pridéjimas
Numatytoji NetworkPolicy leidzha tik DNS (prievadas 53) ir HTTPS (prievadas 443). Jei jusu agentas turi pasiekti kitas paslaugas (duomenu baze, zinuciu eile, vidini API), pridekite isheineanchios komunikacijos taisykles:
spec:
security:
networkPolicy:
additionalEgress:
- to:
- ipBlock:
cidr: 10.0.0.0/8
ports:
- port: 5432
protocol: TCP
Debesies teikejo tapatibe
AWS IRSA ar GCP Workload Identity atveju anotuokite valdoma ServiceAccount:
spec:
security:
rbac:
serviceAccountAnnotations:
eks.amazonaws.com/role-arn: "arn:aws:iam::123456789:role/openclaw"
Korporatyviniai tarpiniai serveriai ir privatias CA
Jei jusu klasteris naudoja TLS perstipimanti tarpini serveri, iveskite CA paketa:
spec:
security:
caBundle:
configMapName: corporate-ca-bundle
key: ca-bundle.crt
Operatorius primontuoja CA paketa i visus konteinerius ir automatishkai nustato NODE_EXTRA_CA_CERTS.
GitOps
OpenClawInstance CRD yra paprastas YAML failas. Tai reishkia, kad jis tiesiogiai telpa i GitOps darbo eiga. Saugokite savo agentu manifestus git saugykloje ir leiskite ArgoCD ar Flux sinchronizuoti juos i jusu klasteri.
Tipine saugyklos struktura:
gitops/
└── agents/
├── kustomization.yaml
├── namespace.yaml
├── agent-a.yaml
└── agent-b.yaml
Kiekvienas pakeitimas eina per suliejimo uzhklausa. Jusu komanda perzhiuri skirtuma. Suliejate su main ir ArgoCD ji pritaiko. Jokiu kubectl apply is nesziojamuju kompiuteriu, jokio konfiguracijos nuokrypio, pilnas audito pedsakas.
Operatoriaus konfiguracijos maishah funkcija padaro tai ypatc sklandzhiai. Kai ArgoCD sinchronizuoja pakeista spec.config.raw, operatorius aptinka, kad turinio maishah pasikéite, ir automatishkai paleidzhia nuoseklu atnaujinima. Tas pats paslapchiu rotacijai: operatorius stebi nurodytas paslaptis ir paleidzhia podus is naujo, kai jos pasikeichia.
Atsarginiu kopiju kurimas ir atkurimas
Operatorius palaiko S3 suderinamas atsargines kopijas. Kai ishtriniate egzemplioriu, operatorius automatishkai sukuria darbo erdves PVC atsarginé kopija pries pashhalinima.
Noredami atkurti agenta is atsargines kopijos i nauja egzemplioriu:
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
Operatorius atsisiunchia momentini vaizda, ishpakuoja ji i PVC ir paleidzhia agenta su visais ankstesniais darbo erdves duomenimis, igudzhiais ir pokalbiu istorija.
Vietinis ishvedimas su Ollama
Jei norite, kad agentai naudotu vietinius modelius (del privatumo, delsos ar kashtu), operatorius turi pirmos klases Ollama palaikyma. Nereikia rankiniu budu nustatyti shalutinio konteinerio. spec.ollama tvarko konteineri, modeliu ishankstini atsisiuntima, saugykla ir GPU paskirstyma:
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
Kai ijungtas, operatorius:
- Prideda Ollama shalutini konteineri prie podo
- Paleidzhia inicializacijos konteineri, kuris ishanksto atsisiunchia ivardjntus modelius pries agento paleidima
- Iveda
OLLAMA_HOST=http://localhost:11434i pagrindini konteineri - Paskiria prashoma NVIDIA GPU per
nvidia.com/gpuishtekliu apribojimus
Pagal numatytaji modeliai saugomi emptyDir tome su konfiguruojamu dydzho apribojimu. Nuolatiniam modeliu saugojimui tarp paleidimu is naujo (kad modeliai nebutu parsiunchiami kiekviena karta) naudokite esama PVC:
spec:
ollama:
enabled: true
models: ["llama3.2"]
storage:
existingClaim: ollama-models-pvc
Tailscale integracija
Atskleizkite savo agenta savo tailnet be Ingress, apkrovos balansavimo ar vieshuju IP adresu. Operatoriaus spec.tailscale laukas tvarko autentifikacijos rakto ivedima, konfiguracijos praturtinima ir NetworkPolicy taisykles:
spec:
tailscale:
enabled: true
mode: serve # or "funnel" for public internet access
authKeySecretRef:
name: tailscale-authkey
hostname: my-agent
Sukurkite autentifikacijos rakto paslaptí su laikinuoju, pakartotinai naudojamu raktu is Tailscale administravimo konsoles:
kubectl create secret generic tailscale-authkey \
--namespace openclaw \
--from-literal=authkey=tskey-auth-...
Rezhime serve (numatytasis) tik jusu tailnet nariai gali pasiekti agenta. Rezhime funnel Tailscale ji atskleidzhia vieshajam internetui su automatiniu HTTPS.
Operatorius automatishkai:
- Iveda aplinkos kintamuosius
TS_AUTHKEYirTS_HOSTNAME - Sulieja
gateway.tailscale.modeirgateway.tailscale.resetOnExiti OpenClaw konfiguaracija - Prideda STUN ir WireGuard isheineanchios komunikacijos taisykles i NetworkPolicy
SSO prisijungimui be slaptazhodzho tailnet nariams, ijunkite authSSO:
spec:
tailscale:
enabled: true
mode: serve
authKeySecretRef:
name: tailscale-authkey
authSSO: true
Tai nustato gateway.auth.allowTailscale=true OpenClaw konfiguaracijoje, kad tailnet nariai galetu pasiekti agenta be atskiro vartu zhetono.
Tinkinti shalutiniai ir inicializacijos konteineriai
Naudojimo atvejams, virshhijantiems integruota Ollama ir Tailscale palaikyma, operatorius priima savavaliushkus shalutinius ir inicializacijos konteinerius. Paleiskite Cloud SQL Proxy duomenu bazes prieigai, zhurnalu persiunteja ar bet kuri kita pagelbini shalia savo agento:
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
Tinkinti inicializacijos konteineriai paleidzhiami po operatoriaus savo inicializacijos vamzdyno (konfiguracijos nustatymas, pnpm, Python, igudzhiai):
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
Konfiguracijos suliejimo rezhimas
Pagal numatytaji operatorius perrasho konfiguracijos faila kiekviename podo paleidime is naujo. Jei jusu agentas keicia savo konfiguaracija vykdymo metu (per igudzhius ar savaimini modifikavima), nustatykite mergeMode: merge giliam operatoriaus konfiguracijos suliejimui su esama PVC konfiguaracija:
spec:
config:
mergeMode: merge
raw:
agents:
defaults:
model:
primary: "anthropic/claude-sonnet-4-20250514"
Suliejimo rezhime operatoriaus nurodyti raktai laimi, bet raktai, kuriuos agentas pridejo pats, ishlieka tarp paleidimu is naujo.
Pilnas pavyzdys
Shtai gamybai paruoshtas manifestas, jungiantis viska is shio vadovo:
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
Pritaikykite ji ir turite sustiprinita, automatishkai atnaujinama, narshykles galimibes turinti AI agenta su vietiniu ishvedimu, tailnet priega, stebesena, atsarginemis kopijomis ir tinklo izoliacija. Vienas kubectl apply.
Ka gaunate is karto
Nepalietus ne vieno saugumo nustatymo, kiekvienas operatoriaus idiegtas agentas pristatomnas su:
- Ne-root vykdymu (UID 1000)
- Tik skaitoma shaknine failu sistema
- Visos Linux galimibes pashhalintos
- Seccomp RuntimeDefault profiliu
- Pagal numatytaji draudzhianchia NetworkPolicy (tik DNS + HTTPS isheineanti komunikacija)
- Kiekvieno egzemplioriaus ServiceAccount be automatinio zhetono prijungimo
- PodDisruptionBudget
- Gyvybikhhumo, parengties ir paleidimo zondai
- Automatishkai sugeneruotas vartu autentifikacijos zhetonas
- 5 minuciu nuokrypiu suderinimas
Validuojantis webhook blokuoja bandymus paleisti root teisemis ir perspeja apie ishungtas NetworkPolicy, trukstama TLS Ingress ir neaptiktus AI teikejo raktus.
Kiti zhingsniai
- Narshykite pilna API nuoroda kiekvienam CRD laukui
- Skaitykite diegimo vadovus EKS, GKE, AKS ir Kind
- Nustatykite modeliu atsarginiu grandiniu tarp keliu AI teikejiu
- Konfiguruokite External Secrets Vault, AWS, GCP ar Azure
Jei kyla problemu ar turite atsiliépimu, atidarykite problema GitHub. Suliejimo uzhklausos taip pat laukiamos.
Jei nenorite patys valdyti Kubernetes, OpenClaw.rocks visa tai sutvarko uzh jus. Pasirinkite plana, prijunkite kanala ir jusu agentas yra aktyvus per sekundes.