MongoDB Latest
Scale applications based on MongoDB queries.
Trigger Specification
This specification describes the mongodb
trigger that scales based on result of MongoDB query.
triggers:
- type: mongodb
metadata:
# name of an environment variable containing a valid MongoDB connection string
connectionStringFromEnv: MongoDB_CONNECTION_STRING
# Required: database name
dbName: "test"
# Required: collection name
collection: "test_collection"
# Required: query expr, used by filter data
query: '{"region":"eu-1","state":"running","plan":"planA"}'
# Required: according to the number of query result, to scale the TargetRef
queryValue: "1"
# Optional: according to the number of query result, the scaler is active
activationQueryValue: "1"
Alternatively, you can configure connection parameters explicitly instead of providing a connection string:
triggers:
- type: mongodb
metadata:
# scheme of the MongoDB server. if using MongoDB Altas, you can set it to "mongodb+srv"
scheme: "mongodb"
# host name of the MongoDB server. Example of mongodb service: "mongodb-svc.<namespace>.svc.cluster.local"
host: mongodb-svc.default.svc.cluster.local
# port number of the MongoDB server.
port: "27017"
# username credential for connecting to the MongoDB server
username: test_user
# name of an environment variable containing a valid password for connecting to the MongoDB server
passwordFromEnv: MongoDB_Password
# Required: database name
dbName: "test"
# Required: collection name
collection: "test_collection"
# Required: query expr, used by filter data
query: '{"region":"eu-1","state":"running","plan":"planA"}'
# Required: according to the number of query result, to scale the TargetRef
queryValue: "1"
# Optional: according to the number of query result, the scaler is active
activationQueryValue: "1"
Parameter list:
The mongodb
trigger always requires the following information:
dbName
- Name of the database.collection
- Name of the collection.query
- A MongoDB query that should return single numeric value.queryValue
- A threshold that will define when scaling should occur.activationQueryValue
- Target value for activating the scaler. Learn more about activation here. (Default:0
, Optional)
To connect to the MongoDB server, you can provide either:
connectionStringFromEnv
- The name of an environment variable containing a valid MongoDB connection string for connecting to the MongoDB server.
Or provide more detailed connection parameters explicitly (a connection string will be generated for you at runtime):
scheme
- The scheme of the MongoDB server, if using MongoDB Atlas, you can set it tomongodb+srv
. (Default:mongodb
, Optional)host
- The host name of the MongoDB server.port
- The port number of the MongoDB server.username
- Username to authenticate with to MongoDB database.passwordFromEnv
- The name of an environment variable containing the password credential for connecting to the MongoDB server.
When configuring with a connection string, you can use this URL format:
mongodb[+srv]://<username>:<password>@mongodb-svc.<namespace>.svc.cluster.local:27017/<database_name>
Authentication Parameters
As an alternative to environment variables, You can authenticate with the MongoDB server by using connection string or password authentication via TriggerAuthentication
or ClusterTriggerAuthentication
configuration.
Connection String Authentication:
connectionString
- Connection string for MongoDB server.
Password Authentication:
scheme
- The scheme of the MongoDB server, if using MongoDB Atlas, you can set it tomongodb+srv
. (Default:mongodb
, Optional)host
- The host name of the MongoDB server.port
- The port number of the MongoDB server.username
- Username to authenticate with to MongoDB database.password
- Password for the configured user to login to MongoDB server.dbName
- Name of the database.
Example
Here is an example of how to deploy a scaled Job with the MongoDB
scale trigger which uses TriggerAuthentication
.
apiVersion: keda.sh/v1alpha1
kind: ScaledJob
metadata:
name: mongodb-job
spec:
jobTargetRef:
template:
spec:
containers:
- name: mongodb-update
image: 1314520999/mongodb-update:latest
args:
- --dataBase=test
- --collection=test_collection
imagePullPolicy: IfNotPresent
restartPolicy: Never
backoffLimit: 1
pollingInterval: 30 # Optional. Default: 30 seconds
maxReplicaCount: 30 # Optional. Default: 100
successfulJobsHistoryLimit: 0 # Optional. Default: 100. How many completed jobs should be kept.
failedJobsHistoryLimit: 10 # Optional. Default: 100. How many failed jobs should be kept.
triggers:
- type: mongodb
metadata:
dbName: "test"
collection: "test_collection"
query: '{"region":"eu-1","state":"running","plan":"planA"}'
queryValue: "1"
authenticationRef:
name: mongodb-trigger
---
apiVersion: keda.sh/v1alpha1
kind: TriggerAuthentication
metadata:
name: mongodb-trigger
spec:
secretTargetRef:
- parameter: connectionString
name: mongodb-secret
key: connect
---
apiVersion: v1
kind: Secret
metadata:
name: mongodb-secret
type: Opaque
data:
connect: bW9uZ29kYjovL3Rlc3RfdXNlcjp0ZXN0X3Bhc3N3b3JkQG1vbmdvZGItc3ZjLm1vbmdvREIuc3ZjLmNsdXN0ZXIubG9jYWw6MjcwMTcvdGVzdA==