Sikkerhetsforskere har funnet over 135 000 OpenClaw-instanser som står helt ubeskyttet på internett. Mange av dem var sårbare for fjernkodekjøring. OpenClaw-sikkerhetskrisen er reell: kritiske CVE-er, ondsinnede ferdigheter og et grunnleggende problem med hvordan de fleste distribusjoner håndterer autentisering. Å kjøre OpenClaw på en VPS med docker run er enkelt. Å kjøre det sikkert er et annet problem.

Kubernetes løser det problemet. Du får nettverksisolering, ressursbegrensninger, automatiserte omstarter og sikkerhetsstandarder som ville tatt timer å konfigurere for hånd. Og med OpenClaw Kubernetes Operator får du alt dette fra en enkelt YAML-fil.

Denne guiden tar deg fra null til en produksjonsklar OpenClaw-agent på Kubernetes. Hver YAML-blokk er klar til å kopieres og limes inn.

Hvorfor en operator

Å kjøre OpenClaw på Kubernetes er mer enn en Deployment og en Service. Du trenger nettverksisolering, hemmelighetshåndtering, persistent lagring, helseovervåking, konfigurasjonsoppdatering og valgfri nettleserautomatisering. Å koble alt dette riktig for hånd er kjedelig og feilutsatt.

En Kubernetes-operator koder disse kravene inn i en enkelt tilpasset ressurs. Du deklarerer hva du vil ha, og operatoren avstemmer det kontinuerlig til riktig sett med Kubernetes-objekter. Det gir deg:

  • Sikkerhet som standard. Hver agent kjører som UID 1000, alle Linux-kapabiliteter droppet, seccomp aktivert, skrivebeskyttet rotfilsystem og en standard-nekt NetworkPolicy som bare tillater DNS og HTTPS utgående. Ingen manuell herding nødvendig.
  • Automatiske oppdateringer med tilbakerulling. Operatoren sjekker OCI-registeret for nye versjoner, sikkerhetskopierer arbeidsområdet, ruller ut oppdateringen og ruller automatisk tilbake hvis den nye poden feiler helsesjekker.
  • Konfigurasjonsutrulling. Endre din spec.config.raw og operatoren oppdager at innholdshash endret seg, utløser en rullerende oppdatering. Det samme for hemmelighetsrotasjon.
  • Sikkerhetskopiering og gjenoppretting. Automatisk sikkerhetskopiering av arbeidsområde til S3-kompatibel lagring ved sletting av instans. Gjenoppretting til ny instans fra ethvert øyeblikksbilde.
  • Gateway-autentisering. Autogenererer et gateway-token per instans. Ingen manuell paring, ingen mDNS (som ikke fungerer i Kubernetes uansett).
  • Avviksdeteksjon. Hvert 5. minutt sjekker operatoren at hver administrert ressurs matcher ønsket tilstand. Hvis noen manuelt redigerer en NetworkPolicy eller sletter en PDB, avstemmes den tilbake.

Forutsetninger

Du trenger:

  • Et Kubernetes-kluster (1.28+). Enhver kompatibel distribusjon fungerer: EKS, GKE, AKS, k3s eller et lokalt Kind-kluster for testing.
  • kubectl konfigurert til å snakke med klusteret ditt.
  • helm v3 installert.
  • En API-nøkkel for AI-leverandøren din (Anthropic, OpenAI eller ethvert OpenAI-kompatibelt endepunkt).

Trinn 1: Installer operatoren

Operatoren leveres som et OCI Helm chart. En kommando installerer den:

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

Verifiser at den kjører:

kubectl get pods -n openclaw-operator-system

Du bør se operator-poden i tilstanden Running. Operatoren installerer også en validerings-webhook som forhindrer usikre konfigurasjoner (som å kjøre som root).

Trinn 2: Opprett din API-nøkkelhemmelighet

Lagre API-nøkkelen til AI-leverandøren din i en Kubernetes Secret. Operatoren vil injisere den i agent-containeren:

kubectl create namespace openclaw

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

For OpenAI eller andre leverandører, bruk passende miljøvariabelnavn (OPENAI_API_KEY, OPENROUTER_API_KEY osv.). Du kan inkludere flere leverandører i samme Secret.

Tips: For produksjon, vurder å bruke External Secrets Operator for å synkronisere nøkler fra AWS Secrets Manager, HashiCorp Vault, GCP Secret Manager eller Azure Key Vault. Operatorens dokumentasjon har detaljerte eksempler.

Trinn 3: Distribuer din første agent

Opprett en fil kalt 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

Bruk den:

kubectl apply -f my-agent.yaml

Denne ene ressursen oppretter en StatefulSet, Service, ServiceAccount, Role, RoleBinding, ConfigMap, PVC, PDB, NetworkPolicy og en gateway-token Secret. Operatoren avstemmer alt.

Trinn 4: Verifiser at den kjører

Overvåk instansens oppstart:

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

Når fasen viser Running og Ready er True, er agenten din live. Sjekk loggene:

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

For å samhandle med agenten din, port-forward gatewayen:

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

Åpne deretter http://localhost:18789 i nettleseren din.

Trinn 5: Koble til en kanal

OpenClaw støtter Telegram, Discord, WhatsApp, Signal og andre meldingskanaler. Hver kanal konfigureres gjennom miljøvariabler. Legg til relevant token i din Secret:

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

Referer deretter til den i instansen din:

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

OpenClaw oppdager tokenet automatisk og aktiverer kanalen. Ingen ekstra konfigurasjon nødvendig.


Det dekker det grunnleggende. Agenten din kjører, er sikret og tilgjengelig. Resten av denne guiden dekker valgfrie funksjoner du kan aktivere når du er klar.

Nettleserautomatisering

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

Operatoren injiserer automatisk en CHROMIUM_URL-miljøvariabel i hovedcontaineren. Sidecar-containeren kjører som UID 1001 med et skrivebeskyttet rotfilsystem og sin egen sikkerhetskontekst.

Ferdigheter og kjøretidsavhengigheter

spec:
  skills:
    - "@anthropic/mcp-server-fetch"
    - "@anthropic/mcp-server-filesystem"
spec:
  runtimeDeps:
    pnpm: true    # Installs pnpm via corepack
    python: true  # Installs Python 3.12 + uv

Automatiske oppdateringer

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

Når en ny versjon dukker opp i registeret, oppretter operatoren en sikkerhetskopi, oppdaterer bildetaggen, venter på helsesjekker, og ruller tilbake om nødvendig.

Produksjonsherding

Overvåking med Prometheus

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

Planlegging på dedikerte noder

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

Tilpassede utgående regler

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

Skyleverandøridentitet

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

Bedriftsproxyer og private CA-er

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

GitOps

OpenClawInstance CRD er en vanlig YAML-fil. Lagre agentmanifestene dine i et git-repo og la ArgoCD eller Flux synkronisere dem til klusteret ditt. Ingen kubectl apply fra bærbare datamaskiner, ingen konfigurasjonsavvik, fullstendig revisjonsspor.

Sikkerhetskopiering og gjenoppretting

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

Lokal inferens med Ollama

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

Tailscale-integrasjon

spec:
  tailscale:
    enabled: true
    mode: serve
    authKeySecretRef:
      name: tailscale-authkey
    hostname: my-agent

Det komplette eksempelet

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

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

Hva du får med en gang

Uten å røre en eneste sikkerhetsinnstilling leveres hver agent distribuert av operatoren med: ikke-root-kjøring (UID 1000), skrivebeskyttet rotfilsystem, alle Linux-kapabiliteter droppet, Seccomp RuntimeDefault-profil, standard-nekt NetworkPolicy (bare DNS + HTTPS utgående), per-instans ServiceAccount uten automatisk token-montering, PodDisruptionBudget, liveness-, readiness- og startup-prober, autogenerert gateway-autentiseringstoken, og 5-minutters avviksavstemming.

Neste trinn

Hvis du støter på problemer eller har tilbakemeldinger, åpne et issue på GitHub. Pull requests er også velkomne.

Hvis du ikke vil administrere Kubernetes selv, håndterer OpenClaw.rocks alt dette for deg. Velg en plan, koble til en kanal, og agenten din er live på sekunder.