OpenClaw sur Kubernetes
Un point de départ minimal pour exécuter OpenClaw sur Kubernetes — pas un déploiement prêt pour la production. Il couvre les ressources principales et doit être adapté à votre environnement.Pourquoi pas Helm ?
OpenClaw est un conteneur unique avec quelques fichiers de configuration. La personnalisation intéressante se situe dans le contenu des agents (fichiers markdown, Skills, remplacements de configuration), pas dans le templating d’infrastructure. Kustomize gère les overlays sans le surcoût d’un chart Helm. Si votre déploiement devient plus complexe, un chart Helm peut être ajouté par-dessus ces manifestes.Ce dont vous avez besoin
- Un cluster Kubernetes en fonctionnement (AKS, EKS, GKE, k3s, kind, OpenShift, etc.)
kubectlconnecté à votre cluster- Une clé API pour au moins un fournisseur de modèles
Démarrage rapide
./scripts/k8s/deploy.sh --show-token affiche le jeton après le déploiement.
Test local avec Kind
Si vous n’avez pas de cluster, créez-en un localement avec Kind :./scripts/k8s/deploy.sh.
Étape par étape
1) Déployer
Option A — clé API dans l’environnement (une étape) :--show-token avec l’une ou l’autre commande si vous voulez que le jeton soit affiché sur stdout pour les tests locaux.
2) Accéder à la passerelle
Ce qui est déployé
Personnalisation
Instructions de l’agent
Modifiez leAGENTS.md dans scripts/k8s/manifests/configmap.yaml puis redéployez :
Configuration de la passerelle
Modifiezopenclaw.json dans scripts/k8s/manifests/configmap.yaml. Consultez Configuration de la passerelle pour la référence complète.
Ajouter des fournisseurs
Relancez avec des clés supplémentaires exportées :Namespace personnalisé
Image personnalisée
Modifiez le champimage dans scripts/k8s/manifests/deployment.yaml :
Exposer au-delà de port-forward
Les manifestes par défaut lient la passerelle à loopback à l’intérieur du pod. Cela fonctionne aveckubectl port-forward, mais pas avec un Service Kubernetes ou un chemin Ingress qui doit atteindre l’IP du pod.
Si vous souhaitez exposer la passerelle via un Ingress ou un équilibreur de charge :
- Modifiez la liaison de la passerelle dans
scripts/k8s/manifests/configmap.yamldeloopbackvers une liaison non loopback adaptée à votre modèle de déploiement - Conservez l’authentification de la passerelle activée et utilisez un point d’entrée correctement terminé en TLS
- Configurez l’interface de contrôle pour l’accès distant en utilisant le modèle de sécurité web pris en charge (par exemple HTTPS/Tailscale Serve et origines autorisées explicites si nécessaire)
Redéployer
Démontage
Remarques d’architecture
- La passerelle est liée à loopback à l’intérieur du pod par défaut, donc la configuration incluse est prévue pour
kubectl port-forward - Aucune ressource à portée cluster — tout vit dans un seul namespace
- Sécurité :
readOnlyRootFilesystem, capacitésdrop: ALL, utilisateur non root (UID 1000) - La configuration par défaut garde l’interface de contrôle sur le chemin d’accès local le plus sûr : liaison loopback plus
kubectl port-forwardvershttp://127.0.0.1:18789 - Si vous dépassez l’accès localhost, utilisez le modèle distant pris en charge : HTTPS/Tailscale plus la liaison de passerelle appropriée et les paramètres d’origine de l’interface de contrôle
- Les secrets sont générés dans un répertoire temporaire puis appliqués directement au cluster — aucun secret n’est écrit dans la copie du dépôt