Kalli
Deployment

Variables d'environnement

D'où vient chaque variable en Kubernetes et en Docker Compose, et ce qu'elle contrôle.

Variables d'environnement

D'où viennent les valeurs

En Kubernetes, le fichier de valeurs du bot alimente trois objets :

ObjetSource dans le fichier de valeursContenu
ConfigMap <botId>-configmapconfigMap.*, global.botId, global.botName, i18nURLs, ports, modèles, prompt, traductions
Secret <botId>-secretssecrets.*Clés LiteLLM, identifiants PostgreSQL, secrets d'authentification
Secret <botId>-registryimageRegistry.*Identifiants du registre d'images

Les correspondances principales entre configMap et les variables d'environnement :

Clé configMapVariable
dbName, dbPortDB_NAME, DB_PORT
chainlitDbName, chainlitDbPortCHAINLIT_DB_NAME, CHAINLIT_DB_PORT
corsOriginCORS_ORIGIN
betterAuthUrlBETTER_AUTH_URL
viteServerUrl, viteChatbotUrl, viteBetterAuthCallbackUrlVITE_SERVER_URL, VITE_CHATBOT_URL, VITE_BETTER_AUTH_CALLBACK_URL
webAppBaseUrlWEB_APP_BASE_URL
indexApiUrl, documentProcessorUrlINDEX_API_URL, DOCUMENT_PROCESSOR_URL
litellmApiBaseLITELLM_API_BASE
botSystemPromptBOT_SYSTEM_PROMPT
ragKChunks, ragTemp, ragQueryModelId, ragEmbeddingModelId, ragBatchSizeRAG_K_CHUNKS, RAG_TEMP, RAG_QUERY_MODEL_ID, RAG_EMBEDDING_MODEL_ID, RAG_BATCH_SIZE
rerankerModelId, rerankerFetchMultiplier, rerankerCacheDirRERANKER_MODEL_ID, RERANKER_FETCH_MULTIPLIER, RERANKER_CACHE_DIR
logLevelLOG_LEVEL
ragNExamplesRAG_N_EXAMPLES (sans effet)

Le conteneur rag-agent reçoit en plus LITELLM_API_KEY, DATABASE_URL, DB_USER et DB_PASSWORD depuis le Secret.

Les valeurs VITE_* ne sont pas compilées dans l'image web : elles sont injectées au démarrage du pod (voir la section Web ci-dessous).

Secrets

Clés du Secret <botId>-secrets, à partir de secrets.* :

VariableRôle
LITELLM_API_KEYClé du proxy LiteLLM (RAG, index, transcription).
DATABASE_URL, DB_USER, DB_PASSWORDPostgreSQL principal.
CHAINLIT_DATABASE_URL, CHAINLIT_DB_USER, CHAINLIT_DB_PASSWORDBase du chat (retours et logos).
BETTER_AUTH_SECRETSecret d'authentification du serveur.
MICROSOFT_CLIENT_ID, MICROSOFT_CLIENT_SECRET, MICROSOFT_TENANT_IDConnexion Microsoft.

Le chart contient aussi des clés (TEAMS_APP_*, OAUTH_AZURE_AD_*, PARTNER_API_KEY) qui ne sont plus lues par les services de ce dépôt.

Serveur (apps/server)

VariableObligatoireDescription
DATABASE_URLouiPostgreSQL principal.
CHAINLIT_DATABASE_URLouiBase du chat (chainlit-base), pour les retours et les logos.
BETTER_AUTH_URL, BETTER_AUTH_SECRETouiURL publique du serveur et secret d'authentification (lues par better-auth).
CORS_ORIGINouiOrigine autorisée (l'URL du site web).
INDEX_API_URLouiURL interne de l'Index API. Sans elle, la régénération échoue.
DOCUMENT_PROCESSOR_URLnonURL interne du document-processor (défaut http://localhost:8001).
LITELLM_API_BASE, LITELLM_API_KEYouiTranscription audio (proxy LiteLLM).
TRANSCRIPTION_MODEL_IDnonModèle de transcription (voxtral-mini-latest par défaut dans le chart).
I18N_JSONnonTraductions en JSON (voir ci-dessous).
MICROSOFT_*nonConnexion Microsoft.

RAG Agent et Index API

Voir Configuration du RAG Agent.

Document processor (apps/document-processor)

VariableDéfautDescription
DOC_PROCESSOR_HOST0.0.0.0Adresse d'écoute.
DOC_PROCESSOR_PORT8001Port d'écoute.
DOC_PROCESSOR_WORKERS2Nombre de workers de la file de traitement.
JOB_TIMEOUT_SECONDS1800Durée maximale d'un job.
JOB_RESULT_TTL_HOURS24Conservation des résultats.
MAX_FILE_SIZE_MB50Taille maximale d'un fichier.
MAX_CHUNK_SIZE2000Taille maximale d'un chunk.
DEFAULT_CHUNK_OVERLAP200Recouvrement entre chunks.
DOCLING_MAX_TOKENS512Taille des chunks en tokens.
DOCLING_ENABLE_OCRtrueOCR de Docling.
DOCLING_OCR_ENGINErapidocrMoteur OCR (easyocr, rapidocr, tesseract-cli, tesserocr).
DOCLING_OCR_LANGUAGESen,frLangues OCR. RapidOCR ne garde que la première.
DOCLING_TABLE_MODEaccuratefast ou accurate.
DOCLING_LAYOUT_MODELheronModèle de mise en page.
DOCLING_DEVICEautoauto, cpu ou cuda.
DOCLING_NUM_THREADS4Threads de traitement.
DOCLING_ENABLE_PICTURE_DESCRIPTIONfalseDescription des images par un modèle vision.
ENABLE_OCRfalseTesseract (chemin via TESSERACT_PATH).
TESSERACT_PATH—Chemin de l'exécutable Tesseract, si absent du PATH.
HF_TOKEN—Jeton Hugging Face, pour des téléchargements plus rapides.
LOG_LEVELINFONiveau de journalisation.

Web (apps/web)

VariableDescription
VITE_SERVER_URLURL publique du serveur.
VITE_CHATBOT_URLURL du chat.
VITE_BETTER_AUTH_CALLBACK_URLURL de retour de l'authentification.

Au démarrage, le script d'entrée de l'image remplace les marqueurs {{ .Env.VITE_* }} des fichiers HTML par les valeurs de l'environnement du pod. Le navigateur lit ces valeurs dans window.RUNTIME_ENV (apps/web/src/utils/runtime-env.ts).

Argument de build : SHADCN_PRESET, appliqué à l'image web si renseigné.

Documentation (apps/docs)

VariableDescription
NEXT_PUBLIC_BOT_NAMENom du bot dans l'en-tête. Injecté au build depuis l'argument DOCS_BOT_NAME (défaut : nAI'vi).

Le site écoute sur le port 5555, fixé dans docs/package.json (scripts dev et start).

Docker Compose (.env à la racine)

Le fichier .env.example sert au développement local avec docker compose up --build -d.

VariableExempleDescription
COMPOSE_PROJECT_NAMEnaivi-bots-v2Préfixe des conteneurs.
SERVER_PORT, WEB_PORT, DOCS_PORT3000, 3001, 5555Ports exposés.
DOC_PROCESSOR_PORT, INDEX_API_PORT, AGENT_PORT8001, 8502, 8000Ports exposés des services Python.
DB_NAME, DB_USER, DB_PASSWORD, DB_PORTPostgreSQL du compose.
CHAINLIT_DB_*Base du chat.
LITELLM_API_BASE, LITELLM_API_KEYProxy LiteLLM.
BOT_SYSTEM_PROMPTPrompt RAG (voir Configuration RAG).
SHADCN_PRESETPreset de thème appliqué au build de l'image web.

Dans le compose, DATABASE_URL est fixé par docker-compose.yml pour pointer vers le service db.

Traductions (i18n)

Les traductions viennent de i18n.json.example, copié dans helm/values.yaml par un script. Le ConfigMap les expose ensuite dans I18N_JSON.

  1. Modifier i18n.json.example (c'est la source).
  2. Depuis la racine du dépôt : python scripts/convert_i18n_to_helm_values.py. Par défaut, le script lit i18n.json.example et réécrit la section i18n: de helm/values.yaml.
  3. Reporter la section i18n: mise à jour dans le fichier de valeurs de chaque bot (ces fichiers ne sont pas dans le dépôt).

Pour le développement local, i18n.json à la racine (ou monté dans le conteneur) est lu si I18N_JSON est absent.

Bonnes pratiques

  • Ne jamais mettre de secret dans une image, dans values.yaml versionné ou dans .env commité.
  • Garder les URL publiques (VITE_*, CORS_ORIGIN, BETTER_AUTH_URL) cohérentes entre elles : une seule URL différente casse l'authentification.
  • Une variable absente déclenche une erreur au premier usage (les services ne valident pas tous leur configuration au démarrage).