Por qué no usar Helm
OpenClaw es un único contenedor con algunos archivos de configuración. La personalización relevante está en el contenido del agente (archivos Markdown, Skills, anulaciones de configuración), no en la creación de plantillas de infraestructura. Kustomize gestiona las superposiciones sin la sobrecarga de un chart de Helm. Se puede añadir un chart de Helm sobre estos manifiestos si el despliegue se vuelve más complejo.Qué se necesita
- Un clúster de Kubernetes en ejecución (AKS, EKS, GKE, k3s, kind, OpenShift, etc.)
kubectlconectado al clúster- Una clave de API para al menos un proveedor de modelos
Inicio rápido
deploy.sh crea de forma predeterminada la autenticación mediante token. Para obtener el token del gateway generado para la interfaz de control:
./scripts/k8s/deploy.sh --show-token muestra el token después del despliegue.
Pruebas locales con Kind
Si no se dispone de un clúster, se puede crear uno localmente con Kind:./scripts/k8s/deploy.sh.
Paso a paso
1) Desplegar
Opción A: clave de API en el entorno (un paso)--show-token a cualquiera de los comandos para mostrar el token en stdout durante las pruebas locales.
2) Acceder al gateway
Qué se despliega
Personalización
Instrucciones del agente
Editar elAGENTS.md en scripts/k8s/manifests/configmap.yaml y volver a desplegar:
Configuración del Gateway
Editaropenclaw.json en scripts/k8s/manifests/configmap.yaml. Consultar Configuración del Gateway para obtener la referencia completa.
Añadir proveedores
Volver a ejecutar el proceso después de exportar las claves adicionales:Espacio de nombres personalizado
Imagen personalizada
Editar el campoimage en scripts/k8s/manifests/deployment.yaml:
Exponer más allá del reenvío de puertos
Los manifiestos predeterminados vinculan el gateway a la interfaz de bucle invertido dentro del pod. Esto funciona conkubectl port-forward, pero no con una ruta de Service de Kubernetes o de Ingress que necesite acceder directamente a la IP del pod.
Para exponer el gateway mediante un Ingress o un equilibrador de carga:
- Cambiar la vinculación del gateway en
scripts/k8s/manifests/configmap.yamldeloopbacka una vinculación que no sea de bucle invertido y que coincida con el modelo de despliegue. - Mantener habilitada la autenticación del gateway y utilizar un punto de entrada adecuado con terminación TLS.
- Configurar la interfaz de control para el acceso remoto mediante el modelo de seguridad web compatible (por ejemplo, HTTPS/Tailscale Serve y orígenes permitidos explícitos cuando sea necesario).
Volver a desplegar
Desinstalación
Notas de arquitectura
- El gateway se vincula de forma predeterminada a la interfaz de bucle invertido dentro del pod, por lo que la configuración incluida está destinada a
kubectl port-forward. - No hay recursos con ámbito de clúster; todo reside en un único espacio de nombres.
- Refuerzo de seguridad: capacidades
readOnlyRootFilesystem,drop: ALL, usuario no root (UID 1000). - La configuración predeterminada mantiene la interfaz de control en la ruta más segura de acceso local: vinculación a la interfaz de bucle invertido más
kubectl port-forwardahttp://127.0.0.1:18789. - Si se amplía el acceso más allá de localhost, se debe utilizar el modelo remoto compatible: HTTPS/Tailscale junto con la vinculación adecuada del gateway y los ajustes de origen de la interfaz de control.
- Los secretos se generan en un directorio temporal y se aplican directamente al clúster; no se escribe ningún material secreto en el checkout del repositorio.