Warning
You are currently viewing v"2.8" of the documentation and it is not the latest. For the most recent documentation, kindly click here.
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"
# Optional: The generated metric name would be mongodb-global-metric. Here mongodb- use as a prefix for metric name
metricName: "global-metric"
Alternatively, you can configure connection parameters explicitly instead of providing a connection string:
triggers:
- type: mongodb
metadata:
# 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"
# Optional: The generated metric name would be mongodb-global-metric. Here mongodb- use as a prefix for metric name.
metricName: "global-metric"
NOTE: If metricName is not set, then one is generated based on trigger index and the
collection
, for example: s0-mongodb-test_collection
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):
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://<username>:<password>@mongodb-svc.<namespace>.svc.cluster.local:27017/<database_name>
You can also optionally assign a name to the metric using the metricName
value. If not specified, the metricName
will be generated automatically based on trigger index and collection name. For example: s1-mongodb-test_collection. The value will be prefixed with s{triggerIndex}-mongodb-
.
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:
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.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"
metricName: "global-metric"
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==