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.raw un 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.
  • helm v3 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:

  1. Izveido darba telpas PVC rezerves kopiju uz S3 saderīgu krātuvi
  2. Atjaunina attēla birku uz StatefulSet
  3. Gaida līdz healthCheckTimeout, lai pods izturētu gatavības pārbaudes
  4. 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:

  1. Pievieno Ollama blakusvagona konteineru podam
  2. Palaiž inicializācijas konteineru, kas priekšielādē uzskaitītos modeļus pirms aģenta palaišanas
  3. Ievada OLLAMA_HOST=http://localhost:11434 galvenajā konteinerā
  4. Piešķir pieprasīto NVIDIA GPU caur nvidia.com/gpu resursu 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_AUTHKEY un TS_HOSTNAME
  • Sapludina gateway.tailscale.mode un gateway.tailscale.resetOnExit OpenClaw 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

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.