Aller au contenu

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

Tock sur Kubernetes

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/, chart tock
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 (appVersion dans helm search repo tock). Pour déployer une autre version de Tock, renseignez l'image.tag de 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.0 pour 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 Studio
  • bot-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, buildWorker et kotlinCompiler, et plusieurs réplicas pour botApi, nlpApi, duckling et genAiOrchestrator (voir Cloud).
  • Renseignez les resources de chaque composant, avec une limite mémoire supérieure au tas maximal de la JVM (voir Mémoire JVM & Docker).
  • Activez global.NetworkPolicy.enabled pour 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).

Chat with Tock
×