Guvenlik arastirmacilari internette tamamen acik duran 135.000’den fazla OpenClaw ornegi tespit etti. Bircogu uzaktan kod calistirmaya karsii savunmasizdi. OpenClaw guvenlik krizi gercektir: kritik CVE’ler, kotucul beceriler ve cogu dagitiimin kimlik dogrulamayi nasil ele aldigiyla ilgili temel bir sorun. docker run ile bir VPS uzerinde OpenClaw calistirmak kolaydir. Guvenli calistirmak farkli bir sorundur.

Kubernetes bu sorunu cozer. Ag izolasyonu, kaynak sinirlari, otomatik yeniden baslatmalar ve elle yapilandirmasi saatler surecek guvenlik varsayillanlari elde edersiniz. Ve OpenClaw Kubernetes Operator ile bunlarin hepsini tek bir YAML dosyasindan elde edersiniz.

Bu rehber sizi sifirdan Kubernetes uzerinde uretime hazir bir OpenClaw ajanina goturur. Her YAML blogu kopyalayip yapistirmaya hazirdir.

Neden bir operator

Kubernetes uzerinde OpenClaw calistirmak bir Deployment ve Service’den fazlasidir. Ag izolasyonu, gizli yonetimi, kalici depolama, saglik izleme, yapilandirma dagitimi ve istege bagli tarayici otomasyonuna ihtiyaciniz vardir. Tum bunlari elle dogru sekilde baglamak sikici ve hataya aciktir.

Bir Kubernetes operatoru bu gereksinimleri tek bir ozel kaynak icinde kodlar. Ne istediginizi beyan edersiniz ve operator bunu surekli olarak dogru Kubernetes nesneleri setine uzlastirir. Bu size sunlari verir:

  • Varsayilan olarak guvenlik. Her ajan UID 1000 olarak calisir, tum Linux yetenekleri dusurulmus, seccomp etkin, salt okunur kok dosya sistemi ve yalnizca DNS ve HTTPS cikisina izin veren varsayilan-reddet NetworkPolicy. Manuel guclendirme gerekli degildir.
  • Geri almayla otomatik guncellemeler. Operator, yeni surumler icin OCI kaydini yoklar, calisma alanini yedekler, guncellemeyi dagitir ve yeni pod saglik kontrollerini gecemezse otomatik olarak geri alir.
  • Yapilandirma dagitimi. spec.config.raw degerinizi degistirin ve operator icerik karmasinin degistigini algilar, yuvarlanan bir guncelleme tetikler. Gizli rotasyonu icin de ayni.
  • Yedekleme ve geri yukleme. Ornek silindiginde S3 uyumlu depolamaya otomatik calisma alani yedeklemesi. Herhangi bir anlil goruntusunden yeni bir ornege geri yukleme.
  • Gecit kimlik dogrulamasi. Ornek basina otomatik olarak bir gecit tokeni olusturur. Manuel eslestirme yok, mDNS yok (Kubernetes’te zaten calismaz).
  • Sapma algilama. Her 5 dakikada operator, yonetilen her kaynagin istenen durumla esllestigini kontrol eder. Birisi bir NetworkPolicy’yi elle duzenlerse veya bir PDB’yi silerse, geri uzlastirilir.

On kosullar

Ihtiyaciniz var:

  • Kubernetes kumesi (1.28+). Herhangi bir uyumlu dagitim calisir: EKS, GKE, AKS, k3s veya test icin yerel bir Kind kumesi.
  • Kumenizle iletisim kurmak icin yapilandirilmis kubectl.
  • helm v3 kurulu.
  • AI saglayiciniz icin bir API anahtari (Anthropic, OpenAI veya herhangi bir OpenAI uyumlu uc nokta).

Adim 1: Operatoru kurun

Operator bir OCI Helm chart olarak gelir. Tek bir komut onu kurar:

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

Calistigini dogrulayin:

kubectl get pods -n openclaw-operator-system

Operator pod’unu Running durumunda gormelisiniz. Operator ayrica guvenli olmayan yapilandirmalari (root olarak calistirma gibi) engelleyen bir dogrulama webhook’u da kurar.

Adim 2: API anahtari Secret’inizi olusturun

AI saglayici API anahtarinizi bir Kubernetes Secret’inda saklayin. Operator bunu ajan konteynerine enjekte edecektir:

kubectl create namespace openclaw

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

OpenAI veya diger saglayicilar icin uygun ortam degiskeni adini kullanin (OPENAI_API_KEY, OPENROUTER_API_KEY, vb.). Ayni Secret’a birden fazla saglayici ekleyebilirsiniz.

Ipucu: Uretim icin, AWS Secrets Manager, HashiCorp Vault, GCP Secret Manager veya Azure Key Vault’tan anahtarlari senkronize etmek icin External Secrets Operator kullanmayi dusunun. Operator dokumantasyonunda ayrintili ornekler vardir.

Adim 3: Ilk ajaninizi dagitin

my-agent.yaml adinda bir dosya olusturun:

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

Uygullayin:

kubectl apply -f my-agent.yaml

Bu tek kaynak bir StatefulSet, Service, ServiceAccount, Role, RoleBinding, ConfigMap, PVC, PDB, NetworkPolicy ve bir gecit tokeni Secret’i olusturur. Operator her seyi uzlastirir.

Adim 4: Calistigini dogrulayin

Ornegin ayaga kalkmasini izleyin:

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

Faz Running ve Ready True gosterdiginde, ajaniniz aktiftir. Logllari kontrol edin:

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

Ajaninizla etkilesim icin gecidi port-forward edin:

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

Sonra tarayicinizda http://localhost:18789 acin.

Adim 5: Bir kanal baglayin

OpenClaw Telegram, Discord, WhatsApp, Signal ve diger mesajlasma kanallarini destekler. Her kanal ortam degiskenleri araciligiyla yapilandirilir. Ilgili tokeni Secret’inize ekleyin:

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

Sonra orneginizde referans verin:

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

OpenClaw tokeni otomatik olarak algilar ve kanali etkinlestirir. Ek yapilandirma gerekli degildir.


Bu temelleri kapsar. Ajaniniz calisiyor, guvenli ve erisilebilir. Bu rehberin geri kalani, hazir oldugunuzda etkinlestirebileceginiz istege bagli ozellikleri kapsar.

Tarayici otomasyonu

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

Operator otomatik olarak ana konteynere bir CHROMIUM_URL ortam degiskeni enjekte eder. Sidecar, salt okunur kok dosya sistemi ve kendi guvenlik baglamiyla UID 1001 olarak calisir.

Beceriler ve calisma zamani bagimliliklari

spec:
  skills:
    - "@anthropic/mcp-server-fetch"
    - "@anthropic/mcp-server-filesystem"
  runtimeDeps:
    pnpm: true
    python: true

Otomatik guncellemeler

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

Uretim guclendirme

Prometheus ile izleme

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

Ozel dugumlerde zamanlama

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

Ozel cikis kurallari

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

Bulut saglayici kimligi

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

Kurumsal proxyler ve ozel CA’lar

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

GitOps

OpenClawInstance CRD’si duz bir YAML dosyasidir. Ajan manifestolarinizi bir git deposunda saklayin ve ArgoCD veya Flux’un bunlari kumenizle senkronize etmesine izin verin. Dizustu bilgisayarlardan kubectl apply yok, yapilandirma sapmasi yok, tam denetim izi.

Yedekleme ve geri yukleme

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 ile yerel cikarim

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 entegrasyonu

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

Tam ornek

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

Kutudan ne cikar

Tek bir guvenlik ayarina dokunmadan, operator tarafindan dagitilan her ajan sunlarla gelir: root olmayan calistirma (UID 1000), salt okunur kok dosya sistemi, tum Linux yetenekleri dusurulmus, Seccomp RuntimeDefault profili, varsayilan-reddet NetworkPolicy (yalnizca DNS + HTTPS cikis), ornek basina otomatik token montaji olmayan ServiceAccount, PodDisruptionBudget, canlilik/hazirlik/baslatma sondajlari, otomatik olusturulmus gecit kimlik dogrulama tokeni ve 5 dakikalik sapma uzlastirmasi.

Sonraki adimlar

Sorunlarla karsilasirrsaniz veya geri bildiriminiz varsa, GitHub’da bir issue acin. PR’ler de memnuniyetle karsilanir.

Kubernetes’i kendiniz yonetmek istemiyorsaniz, OpenClaw.rocks tum bunlari sizin icin halleder. Bir plan secin, bir kanal baglayin ve ajaniniz saniyeler icinde aktif olur.