Skip to main content
Un punto di partenza minimale per eseguire OpenClaw su Kubernetes, non una distribuzione pronta per la produzione. Include le risorse principali ed è pensato per essere adattato al proprio ambiente.

Perché non Helm

OpenClaw è un singolo container con alcuni file di configurazione. La personalizzazione più rilevante riguarda i contenuti dell’agente (file Markdown, Skills, sostituzioni della configurazione), non i modelli dell’infrastruttura. Kustomize gestisce le sovrapposizioni senza il sovraccarico di un chart Helm. Se la distribuzione diventa più complessa, è possibile aggiungere un chart Helm sopra questi manifest.

Requisiti

  • Un cluster Kubernetes in esecuzione (AKS, EKS, GKE, k3s, kind, OpenShift, ecc.)
  • kubectl connesso al cluster
  • Una chiave API per almeno un fornitore di modelli

Avvio rapido

Per impostazione predefinita, deploy.sh crea l’autenticazione tramite token. Recuperare il token del Gateway generato per l’interfaccia di controllo:
Per il debug locale, ./scripts/k8s/deploy.sh --show-token stampa il token dopo la distribuzione.

Test locale con Kind

Se non si dispone di un cluster, crearne uno localmente con Kind:
Quindi eseguire normalmente la distribuzione con ./scripts/k8s/deploy.sh.

Procedura dettagliata

1) Distribuzione

Opzione A: chiave API nell’ambiente (un solo passaggio)
Lo script crea un Secret Kubernetes con la chiave API e un token del Gateway generato automaticamente, quindi esegue la distribuzione. Se il Secret esiste già, mantiene il token del Gateway corrente e tutte le chiavi dei fornitori che non vengono modificate. Opzione B: creare il Secret separatamente
Aggiungere --show-token a uno dei comandi per stampare il token su stdout durante i test locali.

2) Accesso al Gateway

Risorse distribuite

Personalizzazione

Istruzioni dell’agente

Modificare AGENTS.md in scripts/k8s/manifests/configmap.yaml e ridistribuire:

Configurazione del Gateway

Modificare openclaw.json in scripts/k8s/manifests/configmap.yaml. Consultare Configurazione del Gateway per il riferimento completo.

Aggiunta di fornitori

Eseguire nuovamente i comandi dopo aver esportato le chiavi aggiuntive:
Le chiavi dei fornitori esistenti rimangono nel Secret, a meno che non vengano sovrascritte. In alternativa, modificare direttamente il Secret:

Spazio dei nomi personalizzato

Immagine personalizzata

Modificare il campo image in scripts/k8s/manifests/deployment.yaml:

Esposizione oltre il port forwarding

I manifest predefiniti associano il Gateway al local loopback all’interno del pod. Questa configurazione funziona con kubectl port-forward, ma non con un Service Kubernetes o un percorso Ingress che debba raggiungere direttamente l’indirizzo IP del pod. Per esporre il Gateway tramite un Ingress o un bilanciatore del carico:
  • Modificare l’associazione del Gateway in scripts/k8s/manifests/configmap.yaml da loopback a un’associazione non loopback compatibile con il proprio modello di distribuzione.
  • Mantenere abilitata l’autenticazione del Gateway e utilizzare un punto di ingresso appropriato con terminazione TLS.
  • Configurare l’interfaccia di controllo per l’accesso remoto utilizzando il modello di sicurezza web supportato (ad esempio HTTPS/Tailscale Serve e origini consentite esplicite, quando necessarie).

Ridistribuzione

Questo comando applica tutti i manifest e riavvia il pod per caricare eventuali modifiche alla configurazione o ai Secret.

Rimozione

Questo comando elimina lo spazio dei nomi e tutte le risorse al suo interno, incluso il PVC.

Note sull’architettura

  • Per impostazione predefinita, il Gateway è associato al local loopback all’interno del pod, quindi la configurazione inclusa è destinata a kubectl port-forward.
  • Non vengono utilizzate risorse con ambito cluster; tutto risiede in un singolo spazio dei nomi.
  • Rafforzamento della sicurezza: readOnlyRootFilesystem, funzionalità drop: ALL, utente non root (UID 1000).
  • La configurazione predefinita mantiene l’interfaccia di controllo sul percorso di accesso locale più sicuro: associazione al loopback più kubectl port-forward verso http://127.0.0.1:18789.
  • Se si estende l’accesso oltre localhost, utilizzare il modello remoto supportato: HTTPS/Tailscale insieme all’associazione appropriata del Gateway e alle impostazioni delle origini dell’interfaccia di controllo.
  • I segreti vengono generati in una directory temporanea e applicati direttamente al cluster; nessun materiale segreto viene scritto nel checkout del repository.

Struttura dei file

Contenuti correlati