Skip to content

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 ​

ChampTypeDescription
typeenum mck (par défaut)Émet MongoDBCommunity
modeenum managed | adopt | external (requis)Mode de Provenance
managedobjectParamètres lorsque mode: managed
adoptobjectRéférence vers un MongoDBCommunity existant
externalobjectSecret de connexion MONGO_URI de base
databases[]listBases de données logiques (une par charge de travail consommatrice)

managed ​

ChampPar défautDescription
members1Taille du replica set
version8.0.4Version du serveur MongoDB
storageSize—Taille du PVC
storageClassdéfaut du clusterStorageClass
resources—CPU/mémoire
credentialsSecretNamegénéréRemplace le Secret du mot de passe SCRAM
rotation—Effectue la rotation du mot de passe SCRAM (sous licence)

databases[] ​

ChampDescription
nameNom de la base de données logique
credentialsSecretNameSecret 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 ​

ChampDescription
instanceRefLe MongoDBCommunity existant. namespace est optionnel et peut désigner un autre namespace — l'hôte du service en est déduit
connectionSecretRefSecret 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/RoleBinding mongodb-kubernetes-appdb dans le namespace (les pods mongod de MCK en ont besoin), génère le Secret du mot de passe SCRAM, et émet un replica set MongoDBCommunity. Pour chaque entrée databases[], il matérialise un Secret MONGO_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 un MongoDBCommunity existant — é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'un MONGO_URI de base fourni ; aucun opérateur n'est installé.

Exemple — managed ​

yaml
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.

yaml
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 :

bash
rclone copyto DEST:my-bucket/mongo/mongo-<ts>.archive.gz /tmp/dump.archive.gz
mongorestore --uri="$MONGO_URI" --gzip --archive=/tmp/dump.archive.gz --drop

Status ​

{ phase, host, port (27017), credentialsSecret, databases[]{name, ready, credentialsSecret}, conditions, observedGeneration }. Nom court mongo.

Cœur open source sous AGPL-3.0. Les composants Enterprise sont propriétaires et soumis à licence.