ChatUI
Portée : namespaced · Charge de travail : LibreChat via le chart officiel
L'interface web LibreChat, reliée à un Gateway. Elle requiert MongoDB et utilise éventuellement Meilisearch pour la recherche ; les deux sont des datastores de première classe que ChatUI ne fait que référencer.
Spécification
| Champ | Type | Description |
|---|---|---|
secretsRef | LocalRef (optionnel) | SecretsManagement du même namespace à attendre. Omettez-le pour utiliser de simples Secrets Kubernetes que vous gérez vous-même — voir secretsRef |
gatewayRef | ObjectRef | Un Gateway (câblé automatiquement si la licence le permet) |
gateway | object | Repli manuel sur un point d'accès : { url, apiKeySecretRef: { name, key } }. key peut être n'importe quelle entrée du Secret (par défaut LITELLM_API_KEY) ; seule cette valeur parvient à LibreChat, pas le reste du Secret |
models[] | list | Liste de modèles exposée au client. Le premier est celui par défaut et titre les nouvelles conversations. Vide = tous les modèles du gateway (les conversations sont alors titrées avec le modèle utilisé) : les noms des modèles du gateway référencé sont listés, et les modèles ajoutés plus tard apparaissent toujours. Obligatoire quand le gateway est donné par gateway.url — ses modèles ne peuvent pas être découverts |
agents | bool | Point d'accès Agents de LibreChat. Désactivé par défaut (interface.agents: false) ; définissez true pour l'activer |
host | string | Nom d'hôte de l'interface |
ingress | object | className, basic-auth, TLS |
mongo | DatastoreRef (requis) | Le store MongoDB de LibreChat |
meilisearch | MeilisearchRef | Backend de recherche (optionnel) |
subcharts | object | Bascules des sous-charts LibreChat (redis/ragApi uniquement) |
values | object | Surcouche libre de valeurs Helm pour le chart librechat (voir Valeurs de chart personnalisées) |
imageVolume | object | PVC pour les images téléversées |
sso | object | Connexion OIDC/SSO pour LibreChat (voir SSO) |
mcpRefs[] | liste d'ObjectRef | CR MCPServer à câbler (multi-namespace autorisé). Référencer l'un d'eux active Agents automatiquement (voir Serveurs MCP) |
mongo (requis)
| Mode | Description |
|---|---|
ref | Un MongoCluster + databaseName (par défaut LibreChat, qui doit être déclaré dans le databases[] du cluster) |
external | Un connectionSecretRef contenant MONGO_URI |
MongoDB est une infrastructure requise ; il n'est donc pas soumis à licence.
meilisearch (optionnel)
| Mode | Description |
|---|---|
ref (par défaut) | Une MeilisearchInstance |
external | host + masterKeySecretRef |
disabled | Recherche désactivée |
Les sous-charts MongoDB et Meilisearch inclus dans LibreChat sont toujours désactivés — ces datastores sont gérés par leurs propres resources.
Ce qu'elle installe
Le contrôleur installe le chart librechat comme release Helm autonome dans le namespace de ChatUI, ainsi que le ConfigMap de configuration du Gateway Forge. Il traduit la resource en valeurs de chart (URL de base du gateway, liste de modèles, hôte d'ingress + basic-auth, noms des secrets ESO, MONGO_URI / MEILI_HOST résolus, bascules de sous-charts).
Pour Meilisearch, le contrôleur copie la clé maître résolue dans un Secret possédé du même namespace <ui>-meili-key et injecte MEILI_MASTER_KEY via global.librechat.env — ainsi une MeilisearchInstance dans un autre namespace fonctionne malgré tout.
Point d'accès Agents
LibreChat livre son point d'accès Agents activé. L'opérateur le désactive par défaut — il rend interface.agents: false dans librechat.yaml — de sorte qu'un ChatUI fraîchement créé n'expose pas la construction d'agents. Réactivez-le avec :
spec:
agents: trueRéférencer un serveur MCP active aussi les Agents, car LibreChat expose les outils MCP à travers eux. Dans ce cas, l'opérateur n'accorde que ce dont les outils ont besoin :
| Comment les Agents ont été activés | use (exécuter des agents) | create (éditeur d'agents dans l'UI) |
|---|---|---|
spec.agents: true (choix explicite) | ✅ | ✅ |
| implicitement, en câblant un serveur MCP | ✅ | ❌ |
C'est important car la création d'agents n'est pas réservée aux admins dans LibreChat : les permissions sont émises sous forme d'objet plutôt que d'un simple true, qui hériterait de la valeur par défaut create: true de LibreChat et afficherait l'éditeur d'agents à tous les utilisateurs. share/public restent désactivés dans les deux cas.
Valeurs de chart personnalisées
Toutes les options du chart librechat ne sont pas modélisées sous forme de champ de CRD. spec.values est un objet libre fusionné dans les valeurs du chart, ce qui vous permet de définir tout ce que le chart prend en charge (nombre de réplicas, ressources des pods, annotations supplémentaires, …) sans attendre l'ajout d'un nouveau champ de CRD :
spec:
values:
replicaCount: 2
librechat:
resources:
limits: { cpu: "2", memory: 2Gi }Les clés gérées par l'opérateur l'emportent. Vos valeurs servent de base ; les valeurs calculées par l'opérateur (câblage des datastores, références de secrets, bascules enabled des sous-charts inclus, et les variables d'environnement de tracing/SSO qu'il injecte) sont superposées par-dessus, de sorte que spec.values ne peut pas casser le câblage dont l'opérateur dépend. Utilisez les champs dédiés (mongo, meilisearch, subcharts, agents, sso, …) pour tout ce que l'opérateur modélise ; réservez spec.values aux cas marginaux.
Câblage du Gateway
- Avec la fonctionnalité
auto-wiringet ungatewayRef, le contrôleur émet uneLiteLLMVirtualKeysur le Gateway référencé, la stocke dans un Secret possédé et injectebaseURL = http://<gw-svc>.<gw-ns>.svc.cluster.local:4000/v1ainsi que la clé. - Sans cela, fournissez
gateway.{ url, apiKeySecretRef }manuellement. Voir Câblage automatique.
SSO / OIDC login
spec.sso active le fournisseur OpenID Connect de LibreChat — il active ALLOW_SOCIAL_LOGIN et injecte les variables d'environnement OPENID_*. Les identifiants du client OAuth proviennent d'un Secret du même namespace (via SecretsManagement) ; l'opérateur génère lui-même le OPENID_SESSION_SECRET et câble DOMAIN_SERVER/DOMAIN_CLIENT vers l'URL publique de l'interface afin que les callbacks se résolvent.
| Champ | Description |
|---|---|
issuerURL | URL de base de l'émetteur OIDC / de découverte |
clientSecretRef.name | Secret contenant le client OAuth (les clés par défaut sont client-id / client-secret) |
scopes | Scopes demandés (par défaut openid, profile, email) |
providerName | Libellé du bouton de connexion |
Les champs provider, tenantID et les endpoints explicites du type SSO partagé sont réservés au Gateway et ignorés ici (LibreChat déduit les endpoints à partir de issuerURL).
spec:
sso:
issuerURL: https://idp.example.com
providerName: "Acme SSO"
clientSecretRef: { name: chatui-oidc }Serveurs MCP
spec.mcpRefs câble des CR MCPServer (catalogue intégré ou externe) dans le point de terminaison Agents de LibreChat. Référencer un serveur active Agents automatiquement ; l'opérateur rend la configuration mcpServers et, pour les cibles internes au cluster, la liste d'autorisation SSRF mcpSettings — automatiquement.
spec:
mcpRefs:
- { name: websearch } # un MCPServer dans ce namespace
- { name: docs, namespace: team } # multi-namespace autoriséValeurs par défaut renforcées & modèle d'administration
L'opérateur rend toujours une interface LibreChat renforcée, indépendamment de l'usage de MCP :
- La recherche web native et l'interpréteur de code sont DÉSACTIVÉS (
interface.webSearch: false,interface.runCode: false). MCPweb_searchest la voie de recherche web prise en charge. - Les utilisateurs ne peuvent pas ajouter ou désactiver de serveurs MCP depuis l'interface — administrateurs compris (la permission
interface.mcpServersest limitée àuse). Seule la configuration de l'opérateur (vos CRMCPServer) les définit. - Aucun véritable administrateur : sur une nouvelle ChatUI, l'opérateur crée un administrateur fantôme réservé et jamais utilisé (mot de passe aléatoire généré dans le Job, jamais conservé) pour occuper le créneau LibreChat « le premier utilisateur inscrit devient ADMIN », de sorte que tous les vrais utilisateurs (CR Identity, SSO) deviennent USER. Les administrateurs existants ne sont pas modifiés.
Exemple
apiVersion: core.navique.com/v1alpha1
kind: ChatUI
metadata:
name: forge-ui
namespace: forge-ui
spec:
secretsRef: { name: chatui-secrets }
gatewayRef: { name: gateway, namespace: forge-gateway }
models: [ azure_ai/gpt-5.4 ]
agents: false # par défaut — point d'accès Agents de LibreChat désactivé
host: chat.forge.example.com
mongo:
mode: ref
ref: { name: forge-mongo, namespace: forge-data }
databaseName: LibreChat
meilisearch:
mode: ref
ref: { name: forge-ui-search }
ingress:
enabled: true
className: nginx
basicAuthSecret: forge-ui-basic-auth
values: # surcouche libre du chart (les clés de l'opérateur l'emportent)
replicaCount: 2Statut
La disponibilité du Deployment et l'hôte d'ingress, ainsi que les conditions et observedGeneration standard.