Öryggisrannsakendur hafa fundið yfir 135.000 OpenClaw tilvik algjörlega óvarin á netinu. Mörg þeirra voru viðkvæm fyrir fjarkeyrslu kóða. OpenClaw öryggisvandamálið er raunverulegt: alvarleg CVE, illgjarn skills og grundvallarvandamál í því hvernig flestar uppsetningar meðhöndla auðkenningu. Að keyra OpenClaw á VPS með docker run er auðvelt. Að keyra það örugglega er allt annað mál.

Kubernetes leysir þetta vandamál. Þú færð neteinangrun, auðlindatakmörk, sjálfvirka endurræsingu og öryggissjálfgildi sem myndi taka klukkutíma að stilla handvirkt. Og með OpenClaw Kubernetes Operator færðu allt þetta úr einni YAML skrá.

Þessi leiðarvísir tekur þig frá núlli að framleiðslutilbúnum OpenClaw umboðsmanni á Kubernetes. Sérhver YAML blokk er tilbúin til afrita og líma.

Af hverju operator

Að keyra OpenClaw á Kubernetes er meira en Deployment og Service. Þú þarft neteinangrun, leyndarmálsstjórnun, varanlegan geymslu, heilsufarsvöktun, stillingaútgáfur og valfrjálst vafrasjálfvirkni. Að tengja allt þetta saman rétt handvirkt er leiðinlegt og viðkvæmt fyrir villum.

Kubernetes operator umritar þessar kröfur í eina sérsniðna auðlind. Þú lýsir yfir því sem þú vilt og operator samræmir það stöðugt við réttu Kubernetes hlutina. Þetta gefur þér:

  • Öryggi frá upphafi. Sérhver umboðsmaður keyrir sem UID 1000, öllum Linux capabilities er sleppt, seccomp er virkt, skrifvarið root skráarkerfi og sjálfgefin-neita NetworkPolicy sem leyfir aðeins DNS og HTTPS egress. Engin handvirk herðing þarf.
  • Sjálfvirkar uppfærslur með afturköllun. Operator fylgist með OCI registry eftir nýjum útgáfum, tekur öryggisafrit af workspace, setur uppfærsluna og kallar sjálfkrafa til baka ef nýi podinn stenst ekki heilsufarspróf.
  • Stillingaútgáfur. Breyttu spec.config.raw og operator greinir að efnishashið breyttist og kallar á rolling update. Sama gildir um leyndarmálaskipti.
  • Öryggisafritun og endurheimt. Sjálfvirk workspace öryggisafritun á S3-samhæfan geymslu við eyðingu tilviks. Endurheimt í nýtt tilvik úr hvaða skyndimynd sem er.
  • Gateway auðkenning. Býr sjálfkrafa til gateway tóka per tilvik. Engin handvirk pörun, ekkert mDNS (sem virkar ekki í Kubernetes hvort eð er).
  • Fráviksgreining. Á 5 mínútna fresti athugar operator að sérhver stýrð auðlind samsvari æskilegu ástandi. Ef einhver breytir NetworkPolicy handvirkt eða eyðir PDB er það endurstillt.

Forsendur

Þú þarft:

  • Kubernetes klasa (1.28+). Hvaða samhæfð dreifing sem er virkar: EKS, GKE, AKS, k3s eða staðbundinn Kind klasi til prófunar.
  • kubectl stillt til að tala við klasann þinn.
  • helm v3 uppsett.
  • API lykil fyrir AI þjónustuaðila (Anthropic, OpenAI eða hvaða OpenAI-samhæft endapunkt sem er).

Skref 1: Setja upp operator

Operator er sendur sem OCI Helm chart. Ein skipun setur hann upp:

helm install openclaw-operator \
  oci://ghcr.io/openclaw-rocks/charts/openclaw-operator \
  --namespace openclaw-operator-system \
  --create-namespace

Staðfestu að hann keyri:

kubectl get pods -n openclaw-operator-system

Þú ættir að sjá operator podinn í Running stöðu. Operator setur einnig upp validating webhook sem kemur í veg fyrir óöruggar stillingar (eins og keyrslu sem root).

Skref 2: Búa til API lykil leyndarmál

Geymdu API lykil AI þjónustuaðilans í Kubernetes Secret. Operator mun setja hann inn í umboðsmannsgáminn:

kubectl create namespace openclaw

kubectl create secret generic openclaw-api-keys \
  --namespace openclaw \
  --from-literal=ANTHROPIC_API_KEY=sk-ant-your-key-here

Fyrir OpenAI eða aðra þjónustuaðila, notaðu viðeigandi umhverfisbreytuheiti (OPENAI_API_KEY, OPENROUTER_API_KEY o.s.frv.). Þú getur haft marga þjónustuaðila í sama Secret.

Ábending: Fyrir framleiðslu, íhugaðu að nota External Secrets Operator til að samstilla lykla frá AWS Secrets Manager, HashiCorp Vault, GCP Secret Manager eða Azure Key Vault. Skjöl operator hafa ítarleg dæmi.

Skref 3: Setja upp fyrsta umboðsmanninn

Búðu til skrá sem heitir 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

Settu hana í notkun:

kubectl apply -f my-agent.yaml

Þessi eina auðlind býr til StatefulSet, Service, ServiceAccount, Role, RoleBinding, ConfigMap, PVC, PDB, NetworkPolicy og gateway tóka Secret. Operator samræmir allt.

Skref 4: Staðfesta að það keyri

Fylgstu með tilvikinu þegar það ræsist:

kubectl get openclawinstances -n openclaw -w
NAME       PHASE        READY   AGE
my-agent   Provisioning False   10s
my-agent   Running      True    45s

Þegar fasinn sýnir Running og Ready er True er umboðsmaðurinn þinn virkur. Skoðaðu logana:

kubectl logs -n openclaw statefulset/my-agent -f

Til að eiga samskipti við umboðsmanninn, framsendu gateway:

kubectl port-forward -n openclaw svc/my-agent 18789:18789

Opnaðu síðan http://localhost:18789 í vafranum.

Skref 5: Tengja rás

OpenClaw styður Telegram, Discord, WhatsApp, Signal og fleiri skilaboðarásir. Sérhver rás er stillt í gegnum umhverfisbreytur. Bættu viðeigandi tóka við Secret:

kubectl create secret generic openclaw-channel-keys \
  --namespace openclaw \
  --from-literal=TELEGRAM_BOT_TOKEN=your-bot-token-here

Vísaðu síðan í hann í tilvikinu þínu:

spec:
  envFrom:
    - secretRef:
        name: openclaw-api-keys
    - secretRef:
        name: openclaw-channel-keys

OpenClaw greinir tókann sjálfkrafa og virkjar rásina. Engin viðbótarstilling þarf.


Þetta nær yfir grunninn. Umboðsmaðurinn þinn keyrir, er öruggur og aðgengilegur. Restin af þessum leiðarvísi fjallar um valfrjálsa eiginleika sem þú getur virkjað þegar þú ert tilbúin(n).

Vafrasjálfvirkni

OpenClaw getur vafrað á vefnum, tekið skjámyndir og haft samskipti við vefsíður. Operator gerir þetta að einnar línu viðbót. Hann keyrir hertan Chromium sidecar í sama podi, tengdan yfir localhost:

spec:
  chromium:
    enabled: true
    resources:
      requests:
        cpu: 500m
        memory: 1Gi
      limits:
        cpu: 1000m
        memory: 2Gi

Operator setur sjálfkrafa CHROMIUM_URL umhverfisbreytu inn í aðalgáminn. Sidecar keyrir sem UID 1001 með skriflæstu root skráarkerfi og eigin öryggissamhengi.

Skills og keyrslutímaháðir

OpenClaw skills frá ClawHub er hægt að setja upp deklaratívt. Operator keyrir init container sem sækir hvern skill áður en umboðsmaðurinn ræsist:

spec:
  skills:
    - "@anthropic/mcp-server-fetch"
    - "@anthropic/mcp-server-filesystem"

Ef skills eða MCP þjónar þurfa pnpm eða Python, virkjaðu innbyggðu keyrslutímaháða init gámana:

spec:
  runtimeDeps:
    pnpm: true    # Installs pnpm via corepack
    python: true  # Installs Python 3.12 + uv

Init gámarnir setja þessi verkfæri upp á data PVC, þannig að þau vara yfir endurræsingar án þess að þenja gámamyndina.

Sjálfvirkar uppfærslur

OpenClaw gefur oft út nýjar útgáfur. Operator getur fylgst sjálfkrafa með þeim, tekið öryggisafrit áður en uppfært er og afturkallað ef eitthvað fer úrskeiðis:

spec:
  autoUpdate:
    enabled: true
    checkInterval: "12h"
    backupBeforeUpdate: true
    rollbackOnFailure: true
    healthCheckTimeout: "10m"

Þegar ný útgáfa birtist í registry gerir operator eftirfarandi:

  1. Tekur öryggisafrit af workspace PVC á S3-samhæfan geymslu
  2. Uppfærir image tag á StatefulSet
  3. Bíður í allt að healthCheckTimeout eftir að podinn standist readiness prófanir
  4. Ef podinn nær ekki ready stöðu, endurheimtir fyrra image tag og öryggisafritið

Eftir 3 samfelldar misheppnaðar afturkallanir stöðvar operator sjálfvirka uppfærslu og setur condition svo þú getir rannsakað.

Athugasemd: Sjálfvirk uppfærsla er aðgerðarlaus fyrir digest-festar myndir (spec.image.digest). Ef þú festir eftir digest stjórnarðu uppfærslum handvirkt.

Framleiðsluherðing

Operator er sendur öruggur frá upphafi. Hér eru viðbótarstillingarnar fyrir framleiðsluuppsetningar.

Vöktun með Prometheus

Virkjaðu ServiceMonitor til að safna operator og tilviksmælingunum:

spec:
  observability:
    metrics:
      enabled: true
      serviceMonitor:
        enabled: true
        interval: "30s"

Operator birtir openclaw_reconcile_total, openclaw_reconcile_duration_seconds, openclaw_instance_phase og sjálfvirkrar uppfærslu teljara.

Tímasetja á sérstaka nóða

Ef þú keyrir blandaðan klasa, notaðu nodeSelector og tolerations til að festa umboðsmenn við sérstaka nóða:

spec:
  availability:
    nodeSelector:
      openclaw.rocks/nodepool: openclaw
    tolerations:
      - key: openclaw.rocks/dedicated
        value: openclaw
        effect: NoSchedule

Bæta við sérsniðnum egress reglum

Sjálfgefna NetworkPolicy leyfir aðeins DNS (port 53) og HTTPS (port 443). Ef umboðsmaðurinn þinn þarf að ná til annarra þjónusta (gagnagrunnur, skilaboðaröð, innri API), bættu við egress reglum:

spec:
  security:
    networkPolicy:
      additionalEgress:
        - to:
            - ipBlock:
                cidr: 10.0.0.0/8
          ports:
            - port: 5432
              protocol: TCP

Auðkenni skýjaþjónustu

Fyrir AWS IRSA eða GCP Workload Identity, merktu stýrt ServiceAccount:

spec:
  security:
    rbac:
      serviceAccountAnnotations:
        eks.amazonaws.com/role-arn: "arn:aws:iam::123456789:role/openclaw"

Fyrirtækjaproxýar og einka CA

Ef klasinn þinn notar TLS-hlustandi proxy, settu inn CA bundle:

spec:
  security:
    caBundle:
      configMapName: corporate-ca-bundle
      key: ca-bundle.crt

Operator tengir CA bundle inn í alla gáma og setur NODE_EXTRA_CA_CERTS sjálfkrafa.

GitOps

OpenClawInstance CRD er venjuleg YAML skrá. Það þýðir að hún passar beint inn í GitOps vinnuflæði. Geymdu umboðsmannsskrárnar í git repo og láttu ArgoCD eða Flux samstilla þær við klasann þinn.

Dæmigerð repo uppbygging:

gitops/
└── agents/
    ├── kustomization.yaml
    ├── namespace.yaml
    ├── agent-a.yaml
    └── agent-b.yaml

Sérhver breyting fer í gegnum pull request. Teymið þitt skoðar mismuninn. Sameina í main og ArgoCD beitir henni. Engin kubectl apply frá fartölvum, engin stillingarvikun, fullkominn endurskoðunarferill.

Config hashing operator gerir þetta sérstaklega þægilegt. Þegar ArgoCD samstillir breytta spec.config.raw, greinir operator breytt efnishash og kallar sjálfkrafa á rolling update. Sama gildir um leyndarmálaskipti: operator fylgist með tilvísuðum Secrets og endurræsir pods þegar þau breytast.

Öryggisafritun og endurheimt

Operator styður S3-samhæf öryggisafrit. Þegar þú eyðir tilviki tekur operator sjálfkrafa öryggisafrit af workspace PVC áður en það er rift.

Til að endurheimta umboðsmann úr öryggisafriti í nýtt tilvik:

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

Operator sækir skyndimyndina, afpakkar hana inn í PVC og ræsir umboðsmanninn með öllum fyrri workspace gögnum, skills og samtalssögu óhrörðum.

Staðbundin ályktun með Ollama

Ef þú vilt að umboðsmenn noti staðbundin módel (fyrir friðhelgi, seinlega eða kostnað), hefur operator fyrsta flokks Ollama stuðning. Engin þörf á að stilla sidecar handvirkt: spec.ollama sér um gáminn, fyrirfram niðurhal módela, geymslu og GPU úthlutun:

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

Þegar virkjað, gerir operator eftirfarandi:

  1. Bætir Ollama sidecar gámi við podinn
  2. Keyrir init container sem sækir upptalin módel áður en umboðsmaðurinn ræsist
  3. Setur OLLAMA_HOST=http://localhost:11434 inn í aðalgáminn
  4. Úthlutar umbeðinni NVIDIA GPU gegnum nvidia.com/gpu auðlindatakmörk

Sjálfgefið eru módel geymd í emptyDir volume með stillanlegum stærðartakmörkum. Fyrir varanlega módelssgeymslu yfir endurræsingar (svo módel séu ekki sótt aftur í hvert skipti), notaðu núverandi PVC:

spec:
  ollama:
    enabled: true
    models: ["llama3.2"]
    storage:
      existingClaim: ollama-models-pvc

Tailscale samþætting

Gerðu umboðsmanninn þinn aðgengilegan á tailnet án Ingress, load balancers eða opinberra IP tölur. spec.tailscale reitur operator sér um auth key injection, stillingaauðgun og NetworkPolicy reglur:

spec:
  tailscale:
    enabled: true
    mode: serve       # or "funnel" for public internet access
    authKeySecretRef:
      name: tailscale-authkey
    hostname: my-agent

Búðu til auth key Secret með ephemeral, endurnýtanlegum lykli frá Tailscale stjórnborði:

kubectl create secret generic tailscale-authkey \
  --namespace openclaw \
  --from-literal=authkey=tskey-auth-...

Í serve ham (sjálfgefið) geta aðeins meðlimir tailnet þíns náð til umboðsmannsins. Í funnel ham birtir Tailscale hann á almennu netinu með sjálfvirku HTTPS.

Operator gerir sjálfkrafa:

  • Setur TS_AUTHKEY og TS_HOSTNAME umhverfisbreytur inn
  • Sameinar gateway.tailscale.mode og gateway.tailscale.resetOnExit inn í OpenClaw stillinguna
  • Bætir STUN og WireGuard egress reglum við NetworkPolicy

Fyrir lykilorðalaust SSO innskráningu tailnet meðlima, virkjaðu authSSO:

spec:
  tailscale:
    enabled: true
    mode: serve
    authKeySecretRef:
      name: tailscale-authkey
    authSSO: true

Þetta setur gateway.auth.allowTailscale=true í OpenClaw stillingunni, svo tailnet meðlimir geta nálgast umboðsmanninn án sérstaks gateway tóka.

Sérsniðnir sidecars og init containers

Fyrir notkunartilvik umfram innbyggðan Ollama og Tailscale stuðning tekur operator við handahófskenndra sidecars og init containers. Keyrðu Cloud SQL Proxy fyrir gagnagrunnstengingu, logsenditæki eða hvaða annan hjálpara sem er samhliða umboðsmanni þínum:

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

Sérsniðnir init containers keyra eftir eigin init rás operator (config seeding, pnpm, Python, skills):

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

Config samrunaham

Sjálfgefið yfirskrifar operator stillingaskrána við hverja endurræsingu pods. Ef umboðsmaðurinn þinn breytir eigin stillingum á keyrslutíma (í gegnum skills eða sjálfsbreytingar), settu mergeMode: merge til að djúpsamruna operator stillingar við núverandi PVC stillingar:

spec:
  config:
    mergeMode: merge
    raw:
      agents:
        defaults:
          model:
            primary: "anthropic/claude-sonnet-4-20250514"

Í samrunaham hafa lyklar frá operator forgang, en lyklar sem umboðsmaðurinn bætti sjálfur við lifa af endurræsingar.

Fullt dæmi

Hér er framleiðslutilbúið manifest sem sameinar allt úr þessum leiðarvísi:

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

Settu það í notkun og þú hefur hertan, sjálfvirkt uppfærðan, vafrarhæfan AI umboðsmann með staðbundinni ályktun, tailnet aðgangi, vöktun, öryggisafritum og neteinangrun. Eitt kubectl apply.

Hvað þú færð strax

Án þess að snerta eina einustu öryggisstillingu er sérhver umboðsmaður frá operator sendur með:

  • Ekki-root keyrslu (UID 1000)
  • Skrifvarið root skráarkerfi
  • Öllum Linux capabilities sleppt
  • Seccomp RuntimeDefault profile
  • Sjálfgefin-neita NetworkPolicy (aðeins DNS + HTTPS egress)
  • ServiceAccount per tilvik án sjálfvirks token tengingar
  • PodDisruptionBudget
  • Liveness, readiness og startup probes
  • Sjálfvirkt búinn til gateway auðkenningartóki
  • 5 mínútna frávikssamræming

Validating webhook hindrar tilraunir til keyrslu sem root og varar við óvirkum NetworkPolicies, vantar TLS á Ingress og ógreindum AI þjónustuaðilalyklum.

Næstu skref

Ef þú lendir í vandræðum eða hefur athugasemdir, opnaðu issue á GitHub. PRs eru líka velkomin.

Ef þú vilt ekki reka Kubernetes sjálf(ur), sér OpenClaw.rocks um allt þetta fyrir þig. Veldu áætlun, tengdu rás og umboðsmaðurinn þinn er í loftinu á nokkrum sekúndum.