Studiuesit e sigurisë kanë gjetur mbi 135,000 instanca OpenClaw plotësisht të pambrojtura në internet. Shumë prej tyre ishin të cenushme ndaj ekzekutimit të kodit nga distanca. Kriza e sigurisë së OpenClaw është reale: CVE kritike, skills keqdashëse dhe një problem thelbësor me mënyrën se si shumica e vendosjeve trajtojnë autentifikimin. Ekzekutimi i OpenClaw në një VPS me docker run është i lehtë. Ekzekutimi i tij në mënyrë të sigurt është një problem tjetër.

Kubernetes e zgjidh këtë problem. Merr izolim rrjeti, limite burimesh, rinisje automatike dhe parazgjedhje sigurie që do të duheshin orë të tëra për t’u konfiguruar me dorë. Dhe me OpenClaw Kubernetes Operator, i merr të gjitha nga një skedar i vetëm YAML.

Ky udhëzues të çon nga zeroja te një agjent OpenClaw gati për prodhim në Kubernetes. Çdo bllok YAML është gati për t’u kopjuar dhe ngjitur.

Pse një operator

Ekzekutimi i OpenClaw në Kubernetes është më shumë se një Deployment dhe një Service. Ke nevojë për izolim rrjeti, menaxhim sekretesh, ruajtje të vazhdueshme, monitorim shëndeti, shpërndarje konfigurimesh dhe opsionalisht automatizim shfletuesi. Lidhja e saktë e të gjitha këtyre me dorë është e lodhshme dhe e prirur ndaj gabimeve.

Një Kubernetes operator i kodon këto shqetësime në një burim të vetëm të personalizuar. Ti deklaron çfarë dëshiron, dhe operatori e barazon vazhdimisht me grupin e duhur të objekteve Kubernetes. Kjo të jep:

  • Siguri si parazgjedhje. Çdo agjent ekzekutohet si UID 1000, të gjitha Linux capabilities janë hequr, seccomp është aktivizuar, sistem skedarësh root vetëm për lexim, dhe një NetworkPolicy mohim-si-parazgjedhje që lejon vetëm DNS dhe HTTPS egress. Pa nevojë për fortifikim manual.
  • Përditësime automatike me rikthim. Operatori kontrollon regjistrin OCI për versione të reja, rezervon workspace, shpërndan përditësimin dhe automatikisht e kthen mbrapsht nëse podi i ri nuk kalon kontrollet e shëndetit.
  • Shpërndarje konfigurimesh. Ndrysho spec.config.raw dhe operatori zbulon se hash-i i përmbajtjes ka ndryshuar, nxit një rolling update. E njëjta gjë për rotacionin e sekreteve.
  • Rezervim dhe rikthim. Rezervim automatik i workspace në ruajtje të përputhshme me S3 gjatë fshirjes së instancës. Rikthim në një instancë të re nga çdo foto.
  • Autentifikim gateway. Gjeneron automatikisht një token gateway për instancë. Pa çiftëzim manual, pa mDNS (i cili nuk funksionon në Kubernetes sidoqoftë).
  • Zbulim devijimesh. Çdo 5 minuta, operatori kontrollon që çdo burim i menaxhuar përputhet me gjendjen e dëshiruar. Nëse dikush redakton manualisht një NetworkPolicy ose fshin një PDB, ai rikthehet.

Parakushtet

Ke nevojë për:

  • Një klaster Kubernetes (1.28+). Çdo shpërndarje konform funksionon: EKS, GKE, AKS, k3s ose një klaster lokal Kind për testim.
  • kubectl i konfiguruar për të komunikuar me klasterin tënd.
  • helm v3 i instaluar.
  • Një çelës API për ofruesin tënd AI (Anthropic, OpenAI ose çdo pikë fundore e përputhshme me OpenAI).

Hapi 1: Instalo operatorin

Operatori vjen si një OCI Helm chart. Një komandë e instalon:

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

Verifiko që po ekzekutohet:

kubectl get pods -n openclaw-operator-system

Duhet të shohësh podin e operatorit në gjendjen Running. Operatori gjithashtu instalon një validating webhook që parandalon konfigurime jo të sigurta (si ekzekutimi si root).

Hapi 2: Krijo sekretin e çelësit API

Ruaj çelësin API të ofruesit tënd AI në një Kubernetes Secret. Operatori do ta injektojë në kontejnerin e agjentit:

kubectl create namespace openclaw

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

Për OpenAI ose ofrues të tjerë, përdor emrin përkatës të variablit të mjedisit (OPENAI_API_KEY, OPENROUTER_API_KEY etj.). Mund të përfshish shumë ofrues në të njëjtin Secret.

Këshillë: Për prodhim, merr parasysh përdorimin e External Secrets Operator për të sinkronizuar çelësat nga AWS Secrets Manager, HashiCorp Vault, GCP Secret Manager ose Azure Key Vault. Dokumentacioni i operatorit ka shembuj të detajuar.

Hapi 3: Vendos agjentin e parë

Krijo një skedar të quajtur 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

Apliko atë:

kubectl apply -f my-agent.yaml

Ky burim i vetëm krijon një StatefulSet, Service, ServiceAccount, Role, RoleBinding, ConfigMap, PVC, PDB, NetworkPolicy dhe një Secret token gateway. Operatori i barazon të gjitha.

Hapi 4: Verifiko që po ekzekutohet

Vëzhgo instancën duke u ngritur:

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

Pasi faza tregon Running dhe Ready është True, agjenti yt është aktiv. Kontrollo regjistrat:

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

Për të ndërvepruar me agjentin, përcjell portin e gateway:

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

Pastaj hap http://localhost:18789 në shfletues.

Hapi 5: Lidh një kanal

OpenClaw mbështet Telegram, Discord, WhatsApp, Signal dhe kanale të tjera mesazhesh. Çdo kanal konfigurohet përmes variablave të mjedisit. Shto tokenin përkatës në Secret:

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

Pastaj referoje në instancën tënde:

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

OpenClaw e zbulon tokenin automatikisht dhe aktivizon kanalin. Pa nevojë për konfigurim shtesë.


Kjo mbulon bazat. Agjenti yt po ekzekutohet, është i siguruar dhe i arritshëm. Pjesa tjetër e këtij udhëzuesi mbulon veçoritë opsionale që mund t’i aktivizosh kur të jesh gati.

Automatizimi i shfletuesit

OpenClaw mund të shfletojë uebin, të marrë pamje ekrani dhe të ndërveprojë me faqe. Operatori e bën këtë një shtesë me një rresht. Ai ekzekuton një Chromium sidecar të fortifikuar në të njëjtin pod, të lidhur përmes localhost:

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

Operatori automatikisht injekton një variabël mjedisi CHROMIUM_URL në kontejnerin kryesor. Sidecar ekzekutohet si UID 1001 me sistem skedarësh root vetëm për lexim dhe kontekstin e vet të sigurisë.

Skills dhe varësi ekzekutimi

Skills OpenClaw nga ClawHub mund të instalohen në mënyrë deklarative. Operatori ekzekuton një init container që sjell çdo skill para se agjenti të niset:

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

Nëse skills ose serverët MCP kanë nevojë për pnpm ose Python, aktizo init kontejnerët e integruar të varësive të ekzekutimit:

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

Init kontejnerët i instalojnë këto mjete në PVC të dhënash, kështu që mbijetojnë rinisjet pa fryrë imazhin e kontejnerit.

Përditësimet automatike

OpenClaw lëshon versione të reja shpesh. Operatori mund t’i ndjekë automatikisht, të rezervojë para përditësimit dhe të rikthejë nëse diçka shkon keq:

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

Kur shfaqet një version i ri në regjistër, operatori:

  1. Krijon një rezervim të workspace PVC në ruajtje të përputhshme me S3
  2. Përditëson etiketën e imazhit në StatefulSet
  3. Pret deri në healthCheckTimeout që podi të kalojë kontrollet e gatishmërisë
  4. Nëse podi nuk arrin gjendjen gati, rikthhen etiketën e mëparshme të imazhit dhe rezervimin

Pas 3 rikthimeve të dështuara rradhazi, operatori ndal përditësimin automatik dhe vendos një kusht në mënyrë që të mund ta hetosh.

Shënim: Përditësimi automatik është një no-op për imazhe të fiksuara me digest (spec.image.digest). Nëse e fikson me digest, i kontrollon përditësimet manualisht.

Fortifikimi për prodhim

Operatori vjen i sigurt si parazgjedhje. Ja kontrollet shtesë për vendosje prodhimi.

Monitorim me Prometheus

Aktizo ServiceMonitor për të mbledhur metrikat e operatorit dhe instancave:

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

Operatori ekspozon openclaw_reconcile_total, openclaw_reconcile_duration_seconds, openclaw_instance_phase dhe numërues përditësimi automatik.

Planifiko në nyje të dedikuara

Nëse ekzekuton një klaster të përzier, përdor nodeSelector dhe tolerations për të fiksuar agjentët në nyje të dedikuara:

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

Shto rregulla egress të personalizuara

NetworkPolicy e parazgjedhur lejon vetëm DNS (port 53) dhe HTTPS (port 443). Nëse agjenti yt ka nevojë të arrijë shërbime të tjera (një bazë të dhënash, një radhë mesazhesh, një API të brendshme), shto rregulla egress:

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

Identiteti i ofruesit cloud

Për AWS IRSA ose GCP Workload Identity, anoto ServiceAccount e menaxhuar:

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

Proksi korporative dhe CA private

Nëse klasteri yt përdor një proksi ndërpritës TLS, injekto një paketë CA:

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

Operatori e monton paketën CA në të gjithë kontejnerët dhe vendos NODE_EXTRA_CA_CERTS automatikisht.

GitOps

CRD OpenClawInstance është një skedar i thjeshtë YAML. Kjo do të thotë se futet drejtpërdrejt në një rrjedhë pune GitOps. Ruaj manifestet e agjentëve në një depo git dhe lër ArgoCD ose Flux t’i sinkronizojë me klasterin tënd.

Një strukturë tipike depoje:

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

Çdo ndryshim kalon përmes një pull request. Ekipi yt shqyrton diferencën. Bashko në main, dhe ArgoCD e aplikon. Pa kubectl apply nga laptopët, pa devijim konfigurimi, gjurmë e plotë auditimi.

Hash-imi i konfigurimit të operatorit e bën këtë veçanërisht të rrjedhshme. Kur ArgoCD sinkronizon një spec.config.raw të ndryshuar, operatori zbulon hash-in e ndryshuar të përmbajtjes dhe nxit automatikisht një rolling update. E njëjta gjë për rotacionin e sekreteve: operatori vëzhgon Secrets e referencuara dhe rinisë podet kur ato ndryshojnë.

Rezervim dhe rikthim

Operatori mbështet rezervime të përputhshme me S3. Kur fshin një instancë, operatori automatikisht krijon një rezervim të workspace PVC para shkatërrimit.

Për të rikthyer një agjent nga një rezervim në një instancë të re:

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

Operatori shkarkon foton, e shpaketon në PVC dhe nis agjentin me të gjitha të dhënat e mëparshme të workspace, skills dhe historikun e bisedave të paprekura.

Inferëncë lokale me Ollama

Nëse dëshiron që agjentët të përdorin modele lokale (për privatësi, vonesë ose kosto), operatori ka mbështetje Ollama të klasit të parë. Pa nevojë të konfigurosh një sidecar me dorë: spec.ollama trajton kontejnerin, tërheqjen paraprake të modeleve, ruajtjen dhe alokimin e 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

Kur aktivizohet, operatori:

  1. Shton një kontejner sidecar Ollama në pod
  2. Ekzekuton një init container që tërheq modelet e listuara para se agjenti të niset
  3. Injekton OLLAMA_HOST=http://localhost:11434 në kontejnerin kryesor
  4. Alokon GPU-në e kërkuar NVIDIA përmes limiteve të burimeve nvidia.com/gpu

Si parazgjedhje, modelet ruhen në një volum emptyDir me limit madhësie të konfigurueshëm. Për ruajtje të vazhdueshme modelesh mes rinisjesh (kështu që modelet nuk ritëriqen çdo herë), përdor një PVC ekzistues:

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

Integrimi Tailscale

Ekspozo agjentin tënd në tailnet pa Ingress, load balancer ose IP publike. Fusha spec.tailscale e operatorit trajton injektimin e çelësit auth, pasurimin e konfigurimit dhe rregullat e NetworkPolicy:

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

Krijo sekretin e çelësit auth me një çelës efemer, të ripërdorshëm nga konsola e administratorit Tailscale:

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

Në modalitetin serve (parazgjedhja), vetëm anëtarët e tailnet tënd mund të arrijnë agjentin. Në modalitetin funnel, Tailscale e ekspozon në internetin publik me HTTPS automatik.

Operatori automatikisht:

  • Injekton variablat e mjedisit TS_AUTHKEY dhe TS_HOSTNAME
  • Bashkon gateway.tailscale.mode dhe gateway.tailscale.resetOnExit në konfigurimin OpenClaw
  • Shton rregulla egress STUN dhe WireGuard në NetworkPolicy

Për hyrje SSO pa fjalëkalim për anëtarët e tailnet, aktizo authSSO:

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

Kjo vendos gateway.auth.allowTailscale=true në konfigurimin OpenClaw, kështu që anëtarët e tailnet mund të qasen agjentin pa një token të veçantë gateway.

Sidecar-ë dhe init kontejnerë të personalizuar

Për raste përdorimi përtej mbështetjes së integruar Ollama dhe Tailscale, operatori pranon sidecar-ë dhe init kontejnerë arbitrarë. Ekzekuto një Cloud SQL Proxy për qasje në bazën e të dhënave, një përcjellës regjistrash ose çdo ndihmës tjetër krahas agjentit:

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

Init kontejnerët e personalizuar ekzekutohen pas linjës së vet init të operatorit (mbjellje konfigurimi, 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

Modaliteti i bashkimit të konfigurimit

Si parazgjedhje, operatori mbishkruan skedarin e konfigurimit në çdo rinisje podi. Nëse agjenti yt modifikon konfigurimin e vet gjatë ekzekutimit (përmes skills ose vetëmodifikimit), vendos mergeMode: merge për të bashkuar thellë konfigurimin e operatorit me konfigurimin ekzistues të PVC:

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

Në modalitetin bashkim, çelësat e specifikuar nga operatori fitojnë, por çelësat që agjenti shtoi vetë mbijetojnë rinisjet.

Shembulli i plotë

Ja një manifest gati për prodhim që kombinon gjithçka nga ky udhëzues:

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

Aplikoje, dhe ke një agjent AI të fortifikuar, me përditësim automatik, të aftë për shfletim me inferëncë lokale, qasje tailnet, monitorim, rezervime dhe izolim rrjeti. Një kubectl apply i vetëm.

Çfarë merr menjëherë

Pa prekur asnjë cilësim sigurie, çdo agjent i vendosur nga operatori vjen me:

  • Ekzekutim jo-root (UID 1000)
  • Sistem skedarësh root vetëm për lexim
  • Të gjitha Linux capabilities të hequra
  • Profil Seccomp RuntimeDefault
  • NetworkPolicy mohim-si-parazgjedhje (vetëm DNS + HTTPS egress)
  • ServiceAccount për instancë pa montim automatik tokeni
  • PodDisruptionBudget
  • Sonda liveness, readiness dhe startup
  • Token autentifikimi gateway i gjeneruar automatikisht
  • Barazim devijimesh çdo 5 minuta

Një validating webhook bllokon përpjekjet për të ekzekutuar si root dhe paralajmëron për NetworkPolicies të çaktivizuara, TLS që mungon në Ingress dhe çelësa ofruesish AI të pazbuluar.

Hapat e ardhshëm

Nëse has probleme ose ke komente, hap një issue në GitHub. PR janë gjithashtu të mirëpritura.

Nëse nuk dëshiron ta menaxhosh Kubernetes vetë, OpenClaw.rocks kujdeset për të gjitha këto për ty. Zgjidh një plan, lidh një kanal dhe agjenti yt është aktiv brenda sekondash.