Kako namestiti OpenClaw na Kubernetes
Varnostni raziskovalci so odkrili več kot 135.000 primerkov OpenClaw, ki so popolnoma nezaščiteni dostopni na internetu. Mnogi od njih so bili ranljivi za oddaljeno izvajanje kode. Varnostna kriza OpenClaw je realna: kritične CVE ranljivosti, zlonamerne veščine in temeljni problem z načinom, kako večina namestitev obravnava avtentikacijo. Zagon OpenClaw na VPS z docker run je enostaven. Varen zagon pa je drugačen problem.
Kubernetes ta problem reši. Dobite omrežno izolacijo, omejitve virov, avtomatizirane ponovne zagone in privzete varnostne nastavitve, katerih ročna konfiguracija bi trajala ure. Z OpenClaw Kubernetes Operator pa vse to dobite iz ene same datoteke YAML.
Ta vodnik vas vodi od nič do produkcijsko pripravljenega agenta OpenClaw na Kubernetes. Vsak blok YAML je pripravljen za kopiranje in lepljenje.
Zakaj operater
Zagon OpenClaw na Kubernetes je več kot Deployment in Service. Potrebujete omrežno izolacijo, upravljanje skrivnosti, trajni pomnilnik, zdravstveni nadzor, uvajanje konfiguracij in po želji avtomatizacijo brskalnika. Pravilno povezovanje vsega tega ročno je dolgočasno in nagnjeno k napakam.
Kubernetes operater kodira te zahteve v en sam prilagojen vir. Deklarirate, kaj želite, operater pa to neprekinjeno usklajuje v pravi nabor Kubernetes objektov. S tem dobite:
- Privzeto varnost. Vsak agent deluje kot UID 1000, vse zmožnosti Linux so odstranjene, seccomp je omogočen, korenski datotečni sistem je samo za branje in privzeto zavrnjena NetworkPolicy, ki dovoljuje le DNS in HTTPS izhodno komunikacijo. Brez ročnega utrjevanja.
- Samodejne posodobitve s povratkom. Operater preverja register OCI za nove različice, varnostno kopira delovni prostor, uvede posodobitev in samodejno povrne, če nov pod ne prestane zdravstvenih preverjanj.
- Uvajanje konfiguracij. Spremenite
spec.config.rawin operater zazna, da se je zgoščena vrednost vsebine spremenila, ter sproži postopno posodobitev. Enako za rotacijo skrivnosti. - Varnostno kopiranje in obnovitev. Samodejna varnostna kopija delovnega prostora na S3-kompatibilni pomnilnik ob brisanju primerka. Obnovitev v nov primerek iz katerega koli posnetka.
- Avtentikacija prehoda. Samodejno generira žeton prehoda za vsak primerek. Brez ročnega povezovanja, brez mDNS (ki v Kubernetes tako ali tako ne deluje).
- Zaznavanje odmikov. Vsakih 5 minut operater preveri, da se vsak upravljan vir ujema z želenim stanjem. Če nekdo ročno uredi NetworkPolicy ali izbriše PDB, se to uskladi nazaj.
Predpogoji
Potrebujete:
- Gručo Kubernetes (1.28+). Deluje katera koli skladna distribucija: EKS, GKE, AKS, k3s ali lokalna gruča Kind za testiranje.
kubectl, konfiguriran za komunikacijo z vašo gručo.helmv3 nameščen.- API ključ za vašega ponudnika AI (Anthropic, OpenAI ali katera koli OpenAI-kompatibilna končna točka).
Korak 1: Namestite operater
Operater je dostavljen kot OCI Helm chart. En ukaz ga namesti:
helm install openclaw-operator \
oci://ghcr.io/openclaw-rocks/charts/openclaw-operator \
--namespace openclaw-operator-system \
--create-namespace
Preverite, da deluje:
kubectl get pods -n openclaw-operator-system
Morali bi videti pod operaterja v stanju Running. Operater prav tako namesti validacijsko webhook, ki preprečuje nevarne konfiguracije (kot je zagon pod korenskim uporabnikom).
Korak 2: Ustvarite skrivnost za API ključ
Shranite API ključ ponudnika AI v Kubernetes Secret. Operater ga bo vstavil v vsebnik agenta:
kubectl create namespace openclaw
kubectl create secret generic openclaw-api-keys \
--namespace openclaw \
--from-literal=ANTHROPIC_API_KEY=sk-ant-your-key-here
Za OpenAI ali druge ponudnike uporabite ustrezno ime okoljske spremenljivke (OPENAI_API_KEY, OPENROUTER_API_KEY itd.). V isto skrivnost lahko vključite več ponudnikov.
Namig: Za produkcijo razmislite o uporabi External Secrets Operator za sinhronizacijo ključev iz AWS Secrets Manager, HashiCorp Vault, GCP Secret Manager ali Azure Key Vault. Dokumentacija operaterja vsebuje podrobne primere.
Korak 3: Namestite prvega agenta
Ustvarite datoteko z imenom 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
Uporabite ga:
kubectl apply -f my-agent.yaml
Ta en sam vir ustvari StatefulSet, Service, ServiceAccount, Role, RoleBinding, ConfigMap, PVC, PDB, NetworkPolicy in skrivnost žetona prehoda. Operater vse to usklajuje.
Korak 4: Preverite, da deluje
Opazujte, kako se primerek vzpostavi:
kubectl get openclawinstances -n openclaw -w
NAME PHASE READY AGE
my-agent Provisioning False 10s
my-agent Running True 45s
Ko faza pokaže Running in Ready je True, je vaš agent aktiven. Preverite dnevnike:
kubectl logs -n openclaw statefulset/my-agent -f
Za interakcijo z agentom preusmerite vrata prehoda:
kubectl port-forward -n openclaw svc/my-agent 18789:18789
Nato odprite http://localhost:18789 v brskalniku.
Korak 5: Povežite kanal
OpenClaw podpira Telegram, Discord, WhatsApp, Signal in druge kanale za sporočanje. Vsak kanal je konfiguriran prek okoljskih spremenljivk. Ustrezni žeton dodajte v skrivnost:
kubectl create secret generic openclaw-channel-keys \
--namespace openclaw \
--from-literal=TELEGRAM_BOT_TOKEN=your-bot-token-here
Nato ga navedite v primerku:
spec:
envFrom:
- secretRef:
name: openclaw-api-keys
- secretRef:
name: openclaw-channel-keys
OpenClaw samodejno zazna žeton in omogoči kanal. Dodatna konfiguracija ni potrebna.
S tem so pokrite osnove. Vaš agent deluje, je zavarovan in dosegljiv. Preostanek tega vodnika pokriva neobvezne funkcije, ki jih lahko omogočite, ko boste pripravljeni.
Avtomatizacija brskalnika
OpenClaw lahko brska po spletu, zajema posnetke zaslona in komunicira s stranmi. Operater to naredi z eno samo vrstico dodatka. Poganja utrjen stranski vsebnik Chromium v istem podu, povezan prek localhost:
spec:
chromium:
enabled: true
resources:
requests:
cpu: 500m
memory: 1Gi
limits:
cpu: 1000m
memory: 2Gi
Operater samodejno vstavi okoljsko spremenljivko CHROMIUM_URL v glavni vsebnik. Stranski vsebnik deluje kot UID 1001 z datotečnim sistemom samo za branje in lastnim varnostnim kontekstom.
Veščine in odvisnosti izvajanja
Veščine OpenClaw iz ClawHub je mogoče namestiti deklarativno. Operater zažene inicializacijski vsebnik, ki prenese vsako veščino, preden se agent zažene:
spec:
skills:
- "@anthropic/mcp-server-fetch"
- "@anthropic/mcp-server-filesystem"
Če vaše veščine ali strežniki MCP potrebujejo pnpm ali Python, omogočite vgrajene inicializacijske vsebnike za odvisnosti izvajanja:
spec:
runtimeDeps:
pnpm: true # Installs pnpm via corepack
python: true # Installs Python 3.12 + uv
Inicializacijski vsebniki namestijo ta orodja na podatkovni PVC, zato se ohranijo med ponovnimi zagoni, ne da bi napihnili sliko vsebnika.
Samodejne posodobitve
OpenClaw pogosto izdaja nove različice. Operater jih lahko samodejno sledi, pred posodobitvijo ustvari varnostno kopijo in povrne, če gre kaj narobe:
spec:
autoUpdate:
enabled: true
checkInterval: "12h"
backupBeforeUpdate: true
rollbackOnFailure: true
healthCheckTimeout: "10m"
Ko se v registru pojavi nova različica, operater:
- Ustvari varnostno kopijo PVC delovnega prostora na S3-kompatibilni pomnilnik
- Posodobi oznako slike na StatefulSet
- Počaka do
healthCheckTimeout, da pod prestane preverjanja pripravljenosti - Če pod ne uspe postati pripravljen, povrne prejšnjo oznako slike in varnostno kopijo
Po 3 zaporednih neuspelih povrnitvah operater zaustavi samodejno posodabljanje in nastavi pogoj, da lahko raziščete.
Opomba: Samodejna posodobitev ne naredi ničesar za slike, pripete na zgoščeno vrednost (
spec.image.digest). Če pripnete na zgoščeno vrednost, posodobitve upravljate ročno.
Produkcijsko utrjevanje
Operater je privzeto varen. Tu so dodatne nastavitve za produkcijske namestitve.
Nadzor s Prometheus
Omogočite ServiceMonitor za zbiranje metrik operaterja in primerkov:
spec:
observability:
metrics:
enabled: true
serviceMonitor:
enabled: true
interval: "30s"
Operater izpostavlja openclaw_reconcile_total, openclaw_reconcile_duration_seconds, openclaw_instance_phase in števce samodejnih posodobitev.
Razporejanje na namenska vozlišča
Če poganjate mešano gručo, uporabite nodeSelector in tolerations za pripenjanje agentov na namenska vozlišča:
spec:
availability:
nodeSelector:
openclaw.rocks/nodepool: openclaw
tolerations:
- key: openclaw.rocks/dedicated
value: openclaw
effect: NoSchedule
Dodajanje pravil za izhodno komunikacijo
Privzeta NetworkPolicy dovoljuje le DNS (vrata 53) in HTTPS (vrata 443). Če mora vaš agent dosegati druge storitve (podatkovno bazo, čakalno vrsto sporočil, interni API), dodajte pravila za izhodno komunikacijo:
spec:
security:
networkPolicy:
additionalEgress:
- to:
- ipBlock:
cidr: 10.0.0.0/8
ports:
- port: 5432
protocol: TCP
Identiteta ponudnika v oblaku
Za AWS IRSA ali GCP Workload Identity dodajte opombe upravljanemu ServiceAccount:
spec:
security:
rbac:
serviceAccountAnnotations:
eks.amazonaws.com/role-arn: "arn:aws:iam::123456789:role/openclaw"
Korporativni proxyji in zasebni CA
Če vaša gruča uporablja TLS-prestregovalni proxy, vstavite sveženj CA:
spec:
security:
caBundle:
configMapName: corporate-ca-bundle
key: ca-bundle.crt
Operater priklopi sveženj CA v vse vsebnike in samodejno nastavi NODE_EXTRA_CA_CERTS.
GitOps
CRD OpenClawInstance je navadna datoteka YAML. To pomeni, da se neposredno vklopi v delovni tok GitOps. Shranite manifeste agentov v repozitorij git in pustite, da ArgoCD ali Flux sinhronizira v vašo gručo.
Tipična struktura repozitorija:
gitops/
└── agents/
├── kustomization.yaml
├── namespace.yaml
├── agent-a.yaml
└── agent-b.yaml
Vsaka sprememba gre skozi zahtevek za združitev. Vaša ekipa pregleda razliko. Združite v main in ArgoCD ga uporabi. Brez kubectl apply s prenosnikov, brez odmikanja konfiguracije, popolna revizijska sled.
Zgoščevanje konfiguracije operaterja naredi to posebej gladko. Ko ArgoCD sinhronizira spremenjen spec.config.raw, operater zazna, da se je zgoščena vrednost vsebine spremenila, in samodejno sproži postopno posodobitev. Enako za rotacijo skrivnosti: operater spremlja referencirane skrivnosti in povrne pode, ko se spremenijo.
Varnostno kopiranje in obnovitev
Operater podpira S3-kompatibilne varnostne kopije. Ko izbrišete primerek, operater samodejno ustvari varnostno kopijo PVC delovnega prostora pred odstranitvijo.
Za obnovitev agenta iz varnostne kopije v nov primerek:
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
Operater prenese posnetek, ga razpakira v PVC in zažene agenta z vsemi prejšnjimi podatki delovnega prostora, veščinami in zgodovino pogovorov.
Lokalno sklepanje z Ollama
Če želite, da agenti uporabljajo lokalne modele (za zasebnost, zakasnitev ali stroške), ima operater prvovrstno podporo za Ollama. Ni potrebe po ročni nastavitvi stranskega vsebnika. spec.ollama obravnava vsebnik, predhodno vlečenje modelov, pomnilnik in dodelitev 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
Ko je omogočeno, operater:
- Doda stranski vsebnik Ollama v pod
- Zažene inicializacijski vsebnik, ki predhodno potegne navedene modele, preden se agent zažene
- Vstavi
OLLAMA_HOST=http://localhost:11434v glavni vsebnik - Dodeli zahtevani NVIDIA GPU prek omejitev virov
nvidia.com/gpu
Privzeto so modeli shranjeni v volumnu emptyDir s konfigurabilno omejitvijo velikosti. Za trajno shranjevanje modelov med ponovnimi zagoni (da se modeli ne vlečejo vsakič znova) uporabite obstoječi PVC:
spec:
ollama:
enabled: true
models: ["llama3.2"]
storage:
existingClaim: ollama-models-pvc
Integracija Tailscale
Izpostavite agenta svojemu tailnetu brez Ingress, razdeljevalnikov obremenitve ali javnih naslovov IP. Polje spec.tailscale operaterja obravnava vstavljanje ključa za avtentikacijo, obogatitev konfiguracije in pravila NetworkPolicy:
spec:
tailscale:
enabled: true
mode: serve # or "funnel" for public internet access
authKeySecretRef:
name: tailscale-authkey
hostname: my-agent
Ustvarite skrivnost ključa za avtentikacijo z efemernim, ponovljivim ključem iz skrbniške konzole Tailscale:
kubectl create secret generic tailscale-authkey \
--namespace openclaw \
--from-literal=authkey=tskey-auth-...
V načinu serve (privzeto) lahko do agenta dostopajo le člani vašega tailneta. V načinu funnel Tailscale ga izpostavi javnemu internetu s samodejnim HTTPS.
Operater samodejno:
- Vstavi okoljski spremenljivki
TS_AUTHKEYinTS_HOSTNAME - Združi
gateway.tailscale.modeingateway.tailscale.resetOnExitv konfiguracijo OpenClaw - Doda pravila za izhodno komunikacijo STUN in WireGuard v NetworkPolicy
Za prijavo SSO brez gesla za člane tailneta omogočite authSSO:
spec:
tailscale:
enabled: true
mode: serve
authKeySecretRef:
name: tailscale-authkey
authSSO: true
To nastavi gateway.auth.allowTailscale=true v konfiguraciji OpenClaw, tako da lahko člani tailneta dostopajo do agenta brez ločenega žetona prehoda.
Stranski in inicializacijski vsebniki po meri
Za primere uporabe, ki presegajo vgrajeno podporo Ollama in Tailscale, operater sprejema poljubne stranske in inicializacijske vsebnike. Poženite Cloud SQL Proxy za dostop do podatkovne baze, posredovalnik dnevnikov ali katerega koli drugega pomočnika poleg 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
Inicializacijski vsebniki po meri se zaženejo po lastnem inicializacijskem cevovodu operaterja (nastavitev konfiguracije, pnpm, Python, veščine):
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
Način združevanja konfiguracije
Privzeto operater prepiše konfiguracijsko datoteko ob vsakem ponovnem zagonu poda. Če vaš agent med izvajanjem spreminja lastno konfiguracijo (prek veščin ali samospremembe), nastavite mergeMode: merge za globoko združevanje konfiguracije operaterja z obstoječo konfiguracijo PVC:
spec:
config:
mergeMode: merge
raw:
agents:
defaults:
model:
primary: "anthropic/claude-sonnet-4-20250514"
V načinu združevanja ključi, ki jih določi operater, prevladajo, ključi, ki jih je agent dodal sam, pa preživijo ponovne zagone.
Celoten primer
Tu je produkcijsko pripravljen manifest, ki združuje vse iz tega vodnika:
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
Uporabite ga in imate utrjenega, samodejno posodobljenega, za brskalnik sposobnega AI agenta z lokalnim sklepanjem, dostopom prek tailneta, nadzorom, varnostnimi kopijami in omrežno izolacijo. En sam kubectl apply.
Kaj dobite takoj po namestitvi
Brez dotikanja ene same varnostne nastavitve vsak agent, nameščen z operaterjem, vključuje:
- Izvajanje brez korenskega uporabnika (UID 1000)
- Datotečni sistem samo za branje
- Vse zmožnosti Linux odstranjene
- Seccomp RuntimeDefault profil
- Privzeto zavrnjena NetworkPolicy (le DNS + HTTPS izhodna komunikacija)
- ServiceAccount za vsak primerek brez samodejnega priklapljanja žetona
- PodDisruptionBudget
- Sonde za živost, pripravljenost in zagon
- Samodejno generiran žeton za avtentikacijo prehoda
- 5-minutno usklajevanje odmikov
Validacijska webhook blokira poskuse zagona pod korenskim uporabnikom in opozarja na onemogočene NetworkPolicy, manjkajoč TLS na Ingress in nezaznane ključe ponudnika AI.
Naslednji koraki
- Prebrskajte celoten pregled API za vsako polje CRD
- Preberite vodnike za namestitev za EKS, GKE, AKS in Kind
- Nastavite verige nadomestnih modelov prek več ponudnikov AI
- Konfigurirajte External Secrets za Vault, AWS, GCP ali Azure
Če naletite na težave ali imate povratne informacije, odprite zahtevek na GitHub. Zahtevki za združitev so prav tako dobrodošli.
Če ne želite sami upravljati Kubernetes, OpenClaw.rocks uredi vse to za vas. Izberite načrt, povežite kanal in vaš agent je aktiven v sekundah.