MongoCluster
Geltungsbereich: namespaced · Backend: MongoDB Controllers for Kubernetes / MCK (type: mck)
Gemeinsam genutztes MongoDB mit Datenbanken je Consumer — dieselbe type-×-mode-Struktur wie PostgresCluster. Es kapselt den MCK-Operator und emittiert ein MongoDBCommunity-Replica-Set mit einem gemeinsam genutzten SCRAM-Admin-User über alle logischen Datenbanken hinweg. MongoDB ist der erforderliche Speicher für LibreChat (ChatUI).
Spec
| Feld | Typ | Beschreibung |
|---|---|---|
type | enum mck (Standard) | Emittiert MongoDBCommunity |
mode | enum managed | adopt | external (erforderlich) | Provenance-Modus |
managed | object | Einstellungen bei mode: managed |
adopt | object | Verweis auf ein bestehendes MongoDBCommunity |
external | object | Basis-MONGO_URI-Verbindungs-Secret |
databases[] | list | Logische Datenbanken (eine je konsumierendem Workload) |
adopt
| Feld | Beschreibung |
|---|---|
instanceRef | Das bestehende MongoDBCommunity. namespace ist optional und darf auf einen anderen Namespace zeigen — der Service-Host wird daraus gebildet |
connectionSecretRef | Connection-String-Secret (Schlüssel connectionString.standard); Standard ist MCKs <instance>-admin-<user>. namespace ist standardmäßig der Namespace der Instanz; ein Secret außerhalb des Namespace dieser CR wird hierher als <name>-adopted-credentials gespiegelt |
managed
| Feld | Standard | Beschreibung |
|---|---|---|
members | 1 | Größe des Replica-Sets |
version | 8.0.4 | MongoDB-Serverversion |
storageSize | — | PVC-Größe |
storageClass | Cluster-Standard | StorageClass |
resources | — | CPU/Arbeitsspeicher |
credentialsSecretName | generiert | Überschreibt das SCRAM-Passwort-Secret |
rotation | — | Rotiert das SCRAM-Passwort (lizenziert) |
databases[]
| Feld | Beschreibung |
|---|---|
name | Name der logischen Datenbank |
credentialsSecretName | Materialisiertes MONGO_URI-Secret; Standard ist <cluster>-<name>-credentials |
Ein ChatUI, das diesen Cluster referenziert, erhält mit der auto-wiring-Lizenz seine Datenbank auch dann, wenn sie hier nicht deklariert ist (externe Cluster eingeschlossen — nur das Verbindungs-Secret wird benötigt); status.databases[].claimedBy zeigt, wer welche nutzt. Siehe Datenbanken für Workloads, die einen Datenspeicher referenzieren.
Verhalten je Modus
managed(type: mck) — stellt den MCK-Operator (mongodb-kubernetes) sicher, bereitet dasmongodb-kubernetes-appdb-SA/Role/RoleBinding im Namespace bereit (die mongod-Pods von MCK benötigen es), generiert das SCRAM-Passwort-Secret und emittiert einMongoDBCommunity-Replica-Set. Prodatabases[]-Eintrag materialisiert es einMONGO_URI-Secret (gemeinsamer SCRAM-User,authSource=admin, mit umgeschriebenem Datenbankpfad). MongoDB erstellt Datenbanken verzögert beim ersten Schreibvorgang — es wird kein DDL ausgeführt.adopt— verweist auf ein bestehendesMongoDBCommunity— gegebenenfalls in einem anderen Namespace (namespace-übergreifende Adoption) —, liest dessen Connection-String-Secret (Standard ist die MCK-Konvention<instance>-admin-<user>, neben der Instanz), leitet daraus die Datenbank-spezifischenMONGO_URI-Secrets ab und greift niemals in dessen Lebenszyklus ein.external— leitet die Datenbank-spezifischen URIs aus einer angegebenen Basis-MONGO_URIab; es wird kein Operator installiert.
Beispiel — 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 }Backups & Wiederherstellung
Setzen Sie managed.backup (nur Managed-Modus), um Backups in Objektspeicher zu planen — derselbe anbieterneutrale Block wie Postgres/ClickHouse (provider: s3 | azure | gcs, Ziel, Credentials, schedule, retentionPolicy).
Der Operator erzeugt einen verwalteten <name>-backup CronJob, der mongodump (Init-Container) ausführt und das gzip-Archiv mit rclone hochlädt — dem universellen S3/GCS/Azure-Uploader. Alte Archive werden nach Alter (retentionPolicy) entfernt. backup.enabled: false löscht den 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"Wiederherstellung ist ein manueller Ablauf — ein Archiv mit mongorestore zurückspielen:
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 }. Kurzname mongo.