Warning
You are currently viewing v2.3 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: 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: 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 the values in trigger spec, for example: mongodb-mongodb—test_user-test_password@xxx-27017-test-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.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 masked version of the server hostname and collection name. For example: mongodb-mongodb—test_user-test_password@xxx-27017-test-test_collection. If using more than one trigger it is required that all metricName(s) be unique. The value will be prefixed with 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:
password - Password for the configured user to login to MongoDB server.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==