Skip to main content

Overview

MongoDB is a document-oriented NoSQL database designed for flexible, schema-free data storage at scale. This template deploys a single-replica MongoDB instance with persistent storage and optional external access via a direct load balancer.
MongoDB on Control Plane operates as a single-replica deployment. Do not scale up the replica count, as this would result in multiple isolated instances rather than a replicated cluster.

What Gets Created

  • Stateful Workload — A single-replica MongoDB container with configurable resources.
  • Volume Set — Persistent storage for MongoDB data, with optional autoscaling.
  • Secret — A dictionary secret storing the admin username and password, injected into the container at startup.
  • Identity & Policy — An identity bound to the workload with reveal access to the database credentials secret.
This template does not create a GVC. You must deploy it into an existing GVC.

Installation

This template has no external prerequisites. To install, follow the instructions for your preferred method:

Configuration

The default values.yaml for this template:
image: mongo:8.2.3

resources:
  minCpu: 100m
  minMemory: 128Mi
  maxCpu: 250m
  maxMemory: 264Mi

config:
  username: username
  password: password

volumeset:
  capacity: 10 # initial capacity in GiB (minimum is 10)
  autoscaling:
    enabled: false
    maxCapacity: 100 # Maximum capacity in GiB
    minFreePercentage: 10 # Trigger scaling when free space drops below this percentage
    scalingFactor: 1.2 # Multiply current capacity by this factor when scaling up

internalAccess:
  type: same-gvc # options: none, same-gvc, same-org, workload-list
  workloads: # Note: can only be used if type is same-gvc or workload-list
    #- //gvc/GVC_NAME/workload/WORKLOAD_NAME

directLoadBalancer:
  enabled: false

Credentials

  • config.username — MongoDB admin username. Change before deploying to production.
  • config.password — MongoDB admin password. Change before deploying to production.
These values are only applied on first startup when the data directory is empty. Updating them after the initial deployment will have no effect on the running database. To change credentials on an existing instance, use MongoDB’s native commands (e.g. db.updateUser()).

Resources

  • resources.minCpu / resources.minMemory — Minimum CPU and memory guaranteed to the workload.
  • resources.maxCpu / resources.maxMemory — Maximum CPU and memory the workload can use.

Storage

  • volumeset.capacity — Initial volume size in GiB (minimum 10).
  • volumeset.autoscaling.enabled — Automatically expand the volume as it fills. When enabled:
    • maxCapacity — Maximum volume size in GiB.
    • minFreePercentage — Trigger a scale-up when free space drops below this percentage.
    • scalingFactor — Multiply the current capacity by this factor when scaling up.

Internal Access

  • internalAccess.type — Controls which workloads can connect to MongoDB on port 27017:
TypeDescription
noneNo internal access allowed
same-gvcAllow access from all workloads in the same GVC
same-orgAllow access from all workloads in the same organization
workload-listAllow access only from specific workloads listed in workloads

Direct Load Balancer

  • directLoadBalancer.enabled — When true, exposes MongoDB externally on port 27017 via a dedicated load balancer IP.

Connecting to MongoDB

Once deployed, connect to MongoDB from within the same GVC using:
RELEASE_NAME-mongo.GVC_NAME.cpln.local:27017

External References