MongoCluster
Portée : namespaced · Backend : MongoDB Controllers for Kubernetes / MCK (type: mck)
MongoDB partagé avec des bases de données par consommateur — la même structure type × mode que PostgresCluster. Il encapsule l'opérateur MCK, en émettant un replica set MongoDBCommunity avec un seul utilisateur admin SCRAM partagé entre toutes les bases de données logiques. MongoDB est le store requis pour LibreChat (ChatUI).
Spec
| Champ | Type | Description |
|---|---|---|
type | enum mck (par défaut) | Émet MongoDBCommunity |
mode | enum managed | adopt | external (requis) | Mode de Provenance |
managed | object | Paramètres lorsque mode: managed |
adopt | object | Référence vers un MongoDBCommunity existant |
external | object | Secret de connexion MONGO_URI de base |
databases[] | list | Bases de données logiques (une par charge de travail consommatrice) |
managed
| Champ | Par défaut | Description |
|---|---|---|
members | 1 | Taille du replica set |
version | 8.0.4 | Version du serveur MongoDB |
storageSize | — | Taille du PVC |
storageClass | défaut du cluster | StorageClass |
resources | — | CPU/mémoire |
credentialsSecretName | généré | Remplace le Secret du mot de passe SCRAM |
rotation | — | Effectue la rotation du mot de passe SCRAM (sous licence) |
databases[]
| Champ | Description |
|---|---|
name | Nom de la base de données logique |
credentialsSecretName | Secret MONGO_URI matérialisé ; par défaut <cluster>-<name>-credentials |
Un ChatUI qui référence ce cluster obtient sa base même lorsqu'elle n'est pas déclarée ici, avec la licence auto-wiring (clusters externes compris — seul le Secret de connexion est nécessaire) ; status.databases[].claimedBy indique qui utilise chacune. Voir Bases de données pour les workloads qui référencent un datastore.
adopt
| Champ | Description |
|---|---|
instanceRef | Le MongoDBCommunity existant. namespace est optionnel et peut désigner un autre namespace — l'hôte du service en est déduit |
connectionSecretRef | Secret de chaîne de connexion (clé connectionString.standard) ; par défaut <instance>-admin-<user> de MCK. namespace vaut par défaut celui de l'instance ; un Secret hors du namespace de cette CR est recopié ici sous le nom <name>-adopted-credentials |
Comportement selon le mode
managed(type: mck) — garantit la présence de l'opérateur MCK (mongodb-kubernetes), provisionne les SA/Role/RoleBindingmongodb-kubernetes-appdbdans le namespace (les pods mongod de MCK en ont besoin), génère le Secret du mot de passe SCRAM, et émet un replica setMongoDBCommunity. Pour chaque entréedatabases[], il matérialise un SecretMONGO_URI(utilisateur SCRAM partagé,authSource=admin, chemin de base de données réécrit). MongoDB crée les bases de données paresseusement lors de la première écriture — aucun DDL n'est émis.adopt— référence unMongoDBCommunityexistant — éventuellement dans un autre namespace (adoption inter-namespaces) —, lit son Secret de chaîne de connexion (par défaut selon la convention MCK<instance>-admin-<user>), et ne touche jamais à son cycle de vie.external— dérive les URI par base de données à partir d'unMONGO_URIde base fourni ; aucun opérateur n'est installé.
Exemple — managed
apiVersion: core.navique.com/v1alpha1
kind: MongoCluster
metadata:
name: forge-mongo
namespace: forge-data
spec:
type: mck
mode: managed
managed: { members: 1, version: "8.0.4", storageSize: 10Gi }
databases:
- { name: LibreChat, credentialsSecretName: librechat-mongo-credentials }Sauvegardes et restauration
Définissez managed.backup (mode managé uniquement) pour planifier des sauvegardes vers un stockage objet — le même bloc neutre que Postgres/ClickHouse (provider: s3 | azure | gcs, destination, identifiants, schedule, retentionPolicy).
L'opérateur émet un CronJob <name>-backup managé qui exécute mongodump (init container) et téléverse l'archive gzip avec rclone — l'uploader universel S3/GCS/Azure. Les anciennes archives sont purgées par âge (retentionPolicy). backup.enabled: false supprime le CronJob.
spec:
type: mck
mode: managed
managed:
storageSize: 10Gi
backup:
enabled: true
provider: gcs
gcs:
destinationPath: gs://my-bucket/mongo
credentialsSecretRef: { name: mongo-backup-gcs }
schedule: "0 0 2 * * *"
retentionPolicy: "30d"La restauration est une procédure manuelle — restaurer une archive avec mongorestore :
rclone copyto DEST:my-bucket/mongo/mongo-<ts>.archive.gz /tmp/dump.archive.gz
mongorestore --uri="$MONGO_URI" --gzip --archive=/tmp/dump.archive.gz --dropStatus
{ phase, host, port (27017), credentialsSecret, databases[]{name, ready, credentialsSecret}, conditions, observedGeneration }. Nom court mongo.