Déployer sur Kubernetes
Le dépôt tock-helm-chart fournit un chart
Helm qui déploie une plateforme Tock complète sur Kubernetes.
Cette page résume l'utilisation du chart. La référence de tous ses paramètres est son README.
Ce qui est déployé
Le chart déploie tous les composants Tock :
| Composant | Image | Ressources Kubernetes |
|---|---|---|
| Tock Studio | tock/bot_admin |
Deployment, Service, Ingress |
| Bot API | tock/bot_api |
Deployment, Service, Ingress |
| NLP API | tock/nlp_api |
Deployment, Service |
| Build worker | tock/build_worker |
Deployment |
| Duckling | tock/duckling |
Deployment, Service |
| Compilateur Kotlin | tock/kotlin_compiler |
Deployment, Service |
| Orchestrateur Gen AI | tock/gen-ai-orchestrator-server |
Deployment, Service |
Il peut aussi déployer les bases de données sous forme de sous-charts, ou se connecter à des bases existantes :
- MongoDB (chart Bitnami), déployé par défaut en replica set de 3 nœuds
- OpenSearch (et éventuellement OpenSearch Dashboards), comme base vectorielle pour le RAG
- PostgreSQL avec PGVector, comme autre base vectorielle

Voir la page architecture pour le rôle de chaque composant.
Installation
Le chart est publié à la fois comme artefact OCI et dans un dépôt Helm classique :
- Artefact OCI :
oci://ghcr.io/theopenconversationkit/charts/tock - Dépôt Helm :
https://theopenconversationkit.github.io/tock-helm-chart/, charttock
helm install mytock oci://ghcr.io/theopenconversationkit/charts/tock --version <version-du-chart> -f values.yaml
helm repo add tock https://theopenconversationkit.github.io/tock-helm-chart/
helm repo update
helm search repo tock
helm install mytock tock/tock --version <version-du-chart> -f values.yaml
Chaque version du chart déploie par défaut une version donnée de Tock (
appVersiondanshelm search repo tock). Pour déployer une autre version de Tock, renseignez l'image.tagde chaque composant dans votre fichier de valeurs.La dernière version du chart (0.6.3) déploie par défaut Tock 25.10.7, plus ancien que la version décrite dans cette documentation (26.9.0) : définissez
image.tagà26.9.0pour utiliser les fonctionnalités décrites ici.
Une fois la release installée, Helm affiche les URL de Tock Studio et de la Bot API.
L'identifiant/mot de passe par défaut de Tock Studio est admin@app.com / password : changez-le avant d'ouvrir
la plateforme (voir Authentification).
Principaux paramètres
Les paramètres sont regroupés par composant (adminWeb, botApi, nlpApi, buildWorker, duckling,
kotlinCompiler, genAiOrchestrator) et dans une section global. Pour chaque composant, vous pouvez régler
l'image, le nombre de réplicas, les ressources, les contextes de sécurité, les contraintes de placement et les
variables d'environnement (section environment, voir la référence de configuration).
Ingress
Les composants adminWeb et botApi sont exposés via un Ingress, sur les hôtes suivants :
tockstudio-<release>.<global.wildcardDomain>pour Tock Studiobot-api-<release>.<global.wildcardDomain>pour la Bot API
global:
wildcardDomain: tock.mondomaine.com
ingressClassName: nginx
adminWeb:
ingress:
enabled: true
tls:
- secretName: tock-tls
hosts:
- tockstudio-mytock.tock.mondomaine.com
botApi:
ingress:
enabled: true
Seule la Bot API doit être accessible aux canaux externes (voir Exposition réseau).
MongoDB
Par défaut, le chart déploie MongoDB en replica set (global.deployMongoDb.enabled: true), configuré avec la
section mongodb (voir le chart Bitnami).
La persistance est activée avec un volume de 1 Gio : augmentez mongodb.persistence.size pour un usage réel.
Pour utiliser une base existante, désactivez le sous-chart et indiquez la chaîne de connexion :
global:
deployMongoDb:
enabled: false
mongodbUrls: mongodb://myuser:mypass@fqdn-node1:27017,fqdn-node2:27017,fqdn-node3:27017/mydb?replicaSet=rs0
mongodbcheckfqdn: fqdn-node1
mongodbPort: "27017"
La base doit être un replica set (voir Base de données MongoDB).
Base vectorielle
La base vectorielle utilisée par l'orchestrateur Gen AI se choisit dans la section global :
global:
deployOpenSearch:
enabled: true # déploie le sous-chart OpenSearch
dashboardEnabled: false # déploie éventuellement OpenSearch Dashboards
global:
deployPgVector:
enabled: true # déploie le sous-chart PostgreSQL avec PGVector
postgresql:
auth:
postgresPassword: <mot-de-passe>
global:
deployOpenSearch: # ou deployPgVector avec pgVectorHost, pgVectorPort...
useExisting: true
openSearchHost: opensearch.mondomaine.com
openSearchPort: "9200"
openSearchUser: <utilisateur>
openSearchPwd: <mot-de-passe>
Les paramètres de connexion de l'orchestrateur sont alors renseignés par le chart. Les fournisseurs de LLM et d'embeddings se configurent dans Tock Studio (voir Fournisseurs de LLM et d'embeddings).
Authentification
Les utilisateurs de Tock Studio peuvent être définis dans une ConfigMap, référencée par adminWeb.authConfigMap :
apiVersion: v1
kind: ConfigMap
metadata:
name: admin-web-auth-cfg
data:
tock_users: "alice@tock.ai,bob@tock.ai"
tock_passwords: "secret1,secret2"
tock_organizations: "tock,tock"
tock_roles: "botUser,nlpUser|botUser|admin|technicalAdmin"
adminWeb:
authConfigMap: admin-web-auth-cfg
Dans cet exemple, Alice a le rôle botUser, et Bob a tous les rôles. Voir Sécurité
pour les rôles, et pour l'authentification OAuth2 / OpenID Connect.
Certificats d'entreprise
Si votre bot ou l'orchestrateur appelle des services signés par une autorité de certification interne, le chart peut construire un truststore à partir d'un Secret :
kubectl create secret generic corp-root-cert --from-file=corp-root-cert.crt
botApi:
truststore:
enabled: true
certSecret: corp-root-cert
genAiOrchestrator:
truststore:
enabled: true
certSecret: corp-root-cert
Déploiement sans accès Internet
Avec les modèles OpenAI, l'orchestrateur utilise tiktoken, qui télécharge ses encodages au démarrage. Sans accès
Internet, fournissez-les dans une image de conteneur d'initialisation, activée avec
genAiOrchestrator.langchain.tiktokencache. Le README
du chart décrit comment construire cette image.
Recommandations pour la production
- Gardez un seul réplica pour
adminWeb,buildWorkeretkotlinCompiler, et plusieurs réplicas pourbotApi,nlpApi,ducklingetgenAiOrchestrator(voir Cloud). - Renseignez les
resourcesde chaque composant, avec une limite mémoire supérieure au tas maximal de la JVM (voir Mémoire JVM & Docker). - Activez
global.NetworkPolicy.enabledpour restreindre le trafic entre les pods. - Revoyez la configuration MongoDB (authentification, persistance, sauvegardes), ou utilisez une base managée.
- Changez les mots de passe par défaut (Tock Studio, OpenSearch, PostgreSQL).
Exemples
Le dossier samples du dépôt
contient des fichiers de valeurs pour plusieurs environnements : Rancher Desktop ou k3s
(Intel et ARM), GKE avec l'ingress natif ou NGINX, un MongoDB externe, l'authentification locale, le RAG avec
OpenSearch ou PGVector, et un LLM local avec Ollama.
Par exemple, pour tester Tock avec un RAG sur Rancher Desktop :
git clone https://github.com/theopenconversationkit/tock-helm-chart.git && cd tock-helm-chart
helm install mytock ./charts/tock -f samples/values-rancher-arm-with-rag-and-pgvector.yaml
Tock Studio est alors accessible à l'adresse http://tockstudio-mytock.rancher.localhost.
Sur les processeurs ARM, ou sans instructions AVX, l'image MongoDB par défaut ne démarre pas : les exemples utilisent une image compatible (
mongodb.image).