Ερευνητές ασφάλειας έχουν βρει πάνω από 135.000 εκδοχές OpenClaw εντελώς απροστάτευτες στο διαδίκτυο. Πολλές από αυτές ήταν ευάλωτες σε εκτέλεση κώδικα εξ αποστάσεως. Η κρίση ασφάλειας του OpenClaw είναι πραγματική: κρίσιμα CVE, κακόβουλες δεξιότητες και ένα θεμελιώδες πρόβλημα με τον τρόπο που οι περισσότερες αναπτύξεις χειρίζονται την πιστοποίηση. Η εκτέλεση του OpenClaw σε VPS με docker run είναι εύκολη. Η ασφαλής εκτέλεσή του είναι ένα διαφορετικό πρόβλημα.

Το Kubernetes λύνει αυτό το πρόβλημα. Παίρνετε απομόνωση δικτύου, όρια πόρων, αυτοματοποιημένες επανεκκινήσεις και προεπιλογές ασφάλειας που θα χρειάζονταν ώρες για να ρυθμιστούν χειροκίνητα. Και με τον OpenClaw Kubernetes Operator, τα παίρνετε όλα από ένα μόνο αρχείο YAML.

Αυτός ο οδηγός σας πάει από το μηδέν σε έναν έτοιμο για παραγωγή agent OpenClaw στο Kubernetes. Κάθε μπλοκ YAML είναι έτοιμο για αντιγραφή και επικόλληση.

Γιατί operator

Η εκτέλεση του OpenClaw στο Kubernetes είναι περισσότερο από ένα Deployment και ένα Service. Χρειάζεστε απομόνωση δικτύου, διαχείριση μυστικών, μόνιμη αποθήκευση, παρακολούθηση υγείας, ανάπτυξη ρυθμίσεων και προαιρετικά αυτοματοποίηση προγράμματος περιήγησης. Η σωστή σύνδεση όλων αυτών χειροκίνητα είναι κουραστική και επιρρεπής σε σφάλματα.

Ένας Kubernetes operator κωδικοποιεί αυτές τις ανησυχίες σε έναν μόνο προσαρμοσμένο πόρο. Δηλώνετε τι θέλετε, και ο operator το συμφιλιώνει συνεχώς στο σωστό σύνολο αντικειμένων Kubernetes. Αυτό σας δίνει:

  • Ασφάλεια εξ ορισμού. Κάθε agent τρέχει ως UID 1000, όλες οι δυνατότητες Linux αφαιρεμένες, seccomp ενεργοποιημένο, σύστημα αρχείων ρίζας μόνο για ανάγνωση και εξ ορισμού απαγορευτική NetworkPolicy που επιτρέπει μόνο DNS και HTTPS εξερχόμενη κίνηση. Χωρίς χειροκίνητη ενίσχυση.
  • Αυτόματες ενημερώσεις με επαναφορά. Ο operator ελέγχει το μητρώο OCI για νέες εκδόσεις, δημιουργεί αντίγραφο ασφαλείας του χώρου εργασίας, αναπτύσσει την ενημέρωση και επαναφέρει αυτόματα αν το νέο pod αποτύχει στους ελέγχους υγείας.
  • Ανάπτυξη ρυθμίσεων. Αλλάξτε το spec.config.raw και ο operator ανιχνεύει ότι το hash περιεχομένου άλλαξε, ενεργοποιώντας μια κυλιόμενη ενημέρωση. Το ίδιο για εναλλαγή μυστικών.
  • Αντίγραφα ασφαλείας και επαναφορά. Αυτόματο αντίγραφο ασφαλείας χώρου εργασίας σε S3-συμβατή αποθήκευση κατά τη διαγραφή εκδοχής. Επαναφορά σε νέα εκδοχή από οποιοδήποτε στιγμιότυπο.
  • Πιστοποίηση πύλης. Αυτόματη δημιουργία token πύλης ανά εκδοχή. Χωρίς χειροκίνητη σύνδεση, χωρίς mDNS (που δεν λειτουργεί στο Kubernetes ούτως ή άλλως).
  • Ανίχνευση αποκλίσεων. Κάθε 5 λεπτά, ο operator ελέγχει ότι κάθε διαχειριζόμενος πόρος ταιριάζει με την επιθυμητή κατάσταση. Αν κάποιος επεξεργαστεί χειροκίνητα μια NetworkPolicy ή διαγράψει ένα PDB, συμφιλιώνεται πίσω.

Προαπαιτούμενα

Χρειάζεστε:

  • Ένα cluster Kubernetes (1.28+). Οποιαδήποτε συμβατή διανομή λειτουργεί: EKS, GKE, AKS, k3s ή ένα τοπικό Kind cluster για δοκιμές.
  • kubectl ρυθμισμένο να επικοινωνεί με το cluster σας.
  • helm v3 εγκατεστημένο.
  • Ένα κλειδί API για τον πάροχο AI σας (Anthropic, OpenAI ή οποιοδήποτε OpenAI-συμβατό endpoint).

Βήμα 1: Εγκαταστήστε τον operator

Ο operator παρέχεται ως OCI Helm chart. Μία εντολή τον εγκαθιστά:

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

Επαληθεύστε ότι τρέχει:

kubectl get pods -n openclaw-operator-system

Θα πρέπει να δείτε το pod του operator σε κατάσταση Running. Ο operator εγκαθιστά επίσης ένα validating webhook που αποτρέπει μη ασφαλείς ρυθμίσεις (όπως εκτέλεση ως root).

Βήμα 2: Δημιουργήστε το μυστικό κλειδί API σας

Αποθηκεύστε το κλειδί API του παρόχου AI σας σε ένα Kubernetes Secret. Ο operator θα το εισάγει στο container του agent:

kubectl create namespace openclaw

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

Για OpenAI ή άλλους παρόχους, χρησιμοποιήστε το κατάλληλο όνομα μεταβλητής περιβάλλοντος (OPENAI_API_KEY, OPENROUTER_API_KEY κλπ.). Μπορείτε να συμπεριλάβετε πολλαπλούς παρόχους στο ίδιο Secret.

Συμβουλή: Για παραγωγή, εξετάστε τη χρήση του External Secrets Operator για συγχρονισμό κλειδιών από AWS Secrets Manager, HashiCorp Vault, GCP Secret Manager ή Azure Key Vault. Η τεκμηρίωση του operator έχει λεπτομερή παραδείγματα.

Βήμα 3: Αναπτύξτε τον πρώτο σας agent

Δημιουργήστε ένα αρχείο με όνομα 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

Εφαρμόστε το:

kubectl apply -f my-agent.yaml

Αυτός ο ένας πόρος δημιουργεί StatefulSet, Service, ServiceAccount, Role, RoleBinding, ConfigMap, PVC, PDB, NetworkPolicy και ένα Secret token πύλης. Ο operator τα συμφιλιώνει όλα.

Βήμα 4: Επαληθεύστε ότι τρέχει

Παρακολουθήστε την εκδοχή να ξεκινά:

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

Όταν η φάση δείχνει Running και το Ready είναι True, ο agent σας είναι ζωντανός. Ελέγξτε τα logs:

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

Για να αλληλεπιδράσετε με τον agent σας, κάντε port-forward την πύλη:

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

Στη συνέχεια ανοίξτε http://localhost:18789 στο πρόγραμμα περιήγησής σας.

Βήμα 5: Συνδέστε ένα κανάλι

Το OpenClaw υποστηρίζει Telegram, Discord, WhatsApp, Signal και άλλα κανάλια μηνυμάτων. Κάθε κανάλι ρυθμίζεται μέσω μεταβλητών περιβάλλοντος. Προσθέστε το σχετικό token στο Secret σας:

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

Στη συνέχεια αναφέρετέ το στην εκδοχή σας:

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

Το OpenClaw ανιχνεύει αυτόματα το token και ενεργοποιεί το κανάλι. Δεν χρειάζεται επιπλέον ρύθμιση.


Αυτό καλύπτει τα βασικά. Ο agent σας τρέχει, είναι ασφαλισμένος και προσβάσιμος. Το υπόλοιπο αυτού του οδηγού καλύπτει προαιρετικές λειτουργίες που μπορείτε να ενεργοποιήσετε όταν είστε έτοιμοι.

Αυτοματοποίηση προγράμματος περιήγησης

Το OpenClaw μπορεί να περιηγηθεί στο web, να τραβήξει στιγμιότυπα οθόνης και να αλληλεπιδράσει με σελίδες. Ο operator το κάνει προσθήκη μιας γραμμής. Εκτελεί ένα ενισχυμένο Chromium sidecar στο ίδιο pod, συνδεδεμένο μέσω localhost:

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

Ο operator εισάγει αυτόματα μια μεταβλητή περιβάλλοντος CHROMIUM_URL στο κύριο container. Το sidecar container τρέχει ως UID 1001 με σύστημα αρχείων ρίζας μόνο για ανάγνωση και δικό του πλαίσιο ασφάλειας.

Δεξιότητες και εξαρτήσεις χρόνου εκτέλεσης

Οι δεξιότητες OpenClaw από το ClawHub μπορούν να εγκατασταθούν δηλωτικά. Ο operator εκτελεί ένα init container που φέρνει κάθε δεξιότητα πριν ξεκινήσει ο agent:

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

Αν οι δεξιότητές σας ή οι διακομιστές MCP χρειάζονται pnpm ή Python, ενεργοποιήστε τα ενσωματωμένα init containers εξαρτήσεων χρόνου εκτέλεσης:

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

Τα init containers εγκαθιστούν αυτά τα εργαλεία στο PVC δεδομένων, οπότε διατηρούνται μεταξύ επανεκκινήσεων χωρίς να μεγαλώνει η εικόνα του container.

Αυτόματες ενημερώσεις

Το OpenClaw κυκλοφορεί νέες εκδόσεις συχνά. Ο operator μπορεί να τις παρακολουθεί αυτόματα, να δημιουργεί αντίγραφο ασφαλείας πριν την ενημέρωση και να επαναφέρει αν κάτι πάει στραβά:

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

Όταν εμφανιστεί μια νέα έκδοση στο μητρώο, ο operator:

  1. Δημιουργεί αντίγραφο ασφαλείας του PVC χώρου εργασίας σε S3-συμβατή αποθήκευση
  2. Ενημερώνει την ετικέτα εικόνας στο StatefulSet
  3. Περιμένει μέχρι healthCheckTimeout για να περάσει το pod τους ελέγχους ετοιμότητας
  4. Αν το pod αποτύχει να γίνει έτοιμο, επαναφέρει την προηγούμενη ετικέτα εικόνας και το αντίγραφο ασφαλείας

Μετά από 3 συνεχόμενες αποτυχημένες επαναφορές, ο operator παύει την αυτόματη ενημέρωση και θέτει μια συνθήκη ώστε να μπορέσετε να ερευνήσετε.

Σημείωση: Η αυτόματη ενημέρωση δεν κάνει τίποτα για εικόνες δεσμευμένες σε digest (spec.image.digest). Αν δεσμεύετε σε digest, ελέγχετε τις ενημερώσεις χειροκίνητα.

Ενίσχυση παραγωγής

Ο operator παρέχεται ασφαλής εξ ορισμού. Ακολουθούν οι πρόσθετες ρυθμίσεις για αναπτύξεις παραγωγής.

Παρακολούθηση με Prometheus

Ενεργοποιήστε το ServiceMonitor για συλλογή μετρικών operator και εκδοχών:

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

Χρονοπρογραμματισμός σε αποκλειστικούς κόμβους

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

Προσθήκη κανόνων εξερχόμενης κίνησης

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

Ταυτότητα παρόχου cloud

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

Εταιρικά proxy και ιδιωτικά CA

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

Ο operator προσαρτά το πακέτο CA σε όλα τα containers και ορίζει αυτόματα το NODE_EXTRA_CA_CERTS.

GitOps

Το OpenClawInstance CRD είναι ένα απλό αρχείο YAML. Αυτό σημαίνει ότι ταιριάζει απευθείας σε μια ροή εργασίας GitOps. Αποθηκεύστε τα manifests των agents σε ένα αποθετήριο git και αφήστε το ArgoCD ή το Flux να τα συγχρονίσει στο cluster σας.

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

Κάθε αλλαγή περνά από ένα pull request. Η ομάδα σας ελέγχει τη διαφορά. Συγχωνεύστε στο main και το ArgoCD την εφαρμόζει. Χωρίς kubectl apply από φορητούς, χωρίς απόκλιση ρυθμίσεων, πλήρες ίχνος ελέγχου.

Αντίγραφα ασφαλείας και επαναφορά

Ο operator υποστηρίζει S3-συμβατά αντίγραφα ασφαλείας. Όταν διαγράψετε μια εκδοχή, ο operator δημιουργεί αυτόματα αντίγραφο ασφαλείας του PVC χώρου εργασίας πριν την αφαίρεση.

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

Τοπική εξαγωγή συμπερασμάτων με 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

spec:
  tailscale:
    enabled: true
    mode: serve
    authKeySecretRef:
      name: tailscale-authkey
    hostname: my-agent
kubectl create secret generic tailscale-authkey \
  --namespace openclaw \
  --from-literal=authkey=tskey-auth-...

Προσαρμοσμένα sidecars και init containers

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

Λειτουργία συγχώνευσης ρυθμίσεων

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

Το πλήρες παράδειγμα

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

Τι παίρνετε αμέσως

Χωρίς να αγγίξετε μία μόνο ρύθμιση ασφάλειας, κάθε agent που αναπτύσσεται από τον operator περιλαμβάνει:

  • Εκτέλεση χωρίς root (UID 1000)
  • Σύστημα αρχείων ρίζας μόνο για ανάγνωση
  • Όλες οι δυνατότητες Linux αφαιρεμένες
  • Προφίλ Seccomp RuntimeDefault
  • Εξ ορισμού απαγορευτική NetworkPolicy (μόνο DNS + HTTPS εξερχόμενη)
  • ServiceAccount ανά εκδοχή χωρίς αυτόματη προσάρτηση token
  • PodDisruptionBudget
  • Ανιχνευτές ζωτικότητας, ετοιμότητας και εκκίνησης
  • Αυτόματα δημιουργημένο token πιστοποίησης πύλης
  • 5-λεπτη συμφιλίωση αποκλίσεων

Επόμενα βήματα

Αν αντιμετωπίσετε προβλήματα ή έχετε σχόλια, ανοίξτε ένα issue στο GitHub. Τα PR είναι επίσης ευπρόσδεκτα.

Αν δεν θέλετε να διαχειρίζεστε Kubernetes μόνοι σας, το OpenClaw.rocks τα χειρίζεται όλα αυτά για εσάς. Επιλέξτε ένα πλάνο, συνδέστε ένα κανάλι και ο agent σας είναι ζωντανός σε δευτερόλεπτα.