ArangoDB Latest

Scale applications based on ArangoDB query result.

Availability: v2.10+ Maintainer: Community

Trigger Specification

This specification describes the arangodb trigger that scales based on a ArangoDB query result. Here is an example of providing values in metadata:

triggers: - type: arangodb  metadata:  # Required fields:  endpoints: "https://<endpoint1>:8529,https://<endpoint2>:8529" # Note: add one or more comma separated URL endpoints of all the coordinators  query: FOR students IN class COLLECT WITH COUNT INTO length RETURN {"value":length} # Note: the query should return only a single numeric value in the JSON format {"value":<value>}  queryValue: '3'  dbName: gradesheet  collection: class  # Optional fields:  activationQueryValue: '3'  connectionLimit: 13  unsafeSsl: "false" # Default is `false`, Used for skipping certificate check when having self-signed certs 

Parameter list:

  • endpoints - ArangoDB server endpoint URL or comma separated URL endpoints of all the coordinators. It can also be provided as an authentication parameter.
  • query - ArangoDB query to scale for. Please note that the query should return only a single numeric value, i.e. an integer or a float, in the JSON format {"value":<value>}.
  • dbName - Name of the database. It can also be provided as an authentication parameter.
  • collection - Name of the collection.
  • threshold - A threshold that will define when scaling should occur.
  • activationThreshold - Target value for activating the scaler. Learn more about activation here. (Default: 0, Optional)
  • serverID - The unique ArangoDB server ID. Only required if bearer JWT is being used. (Optional)
  • unsafeSsl - Used for skipping certificate check e.g: using self-signed certs. (Values: true,false, Default: false, Optional)
  • connectionLimit - Specify the max size of the active connection pool. (Optional)
  • authModes - Authentication mode to be used. (Values: bearer,basic, Optional)

Authentication Parameters

ArangoDB provides SSL/TLS configured out of the box. For authentication, it can be configured along with a Basic Auth or Bearer Auth.

You can use TriggerAuthentication CRD to configure the authentication. Specify authModes and other trigger parameters along with secret credentials in TriggerAuthentication as mentioned below:

Bearer authentication:

  • authModes: It must contain bearer in case of Bearer Authentication. Specify this in trigger configuration.
  • bearerToken: The token needed for authentication.

Basic authentication:

  • authModes: It must contain basic in case of Basic Authentication. Specify this in trigger configuration.
  • username - Provide the username to be used for basic authentication.
  • password - Provide the password to be used for authentication. (Optional, For convenience this has been marked optional as many applications implement basic auth with a username as apikey and password as empty.)

Additionally, the parameters endpoints and dbName can also be provided as authentication parameters.

Example

apiVersion: keda.sh/v1alpha1 kind: ScaledObject metadata:  name: arangodb-scaledobject  namespace: default spec:  maxReplicaCount: 12  scaleTargetRef:  name: arangodb-deployment  triggers:  - type: arangodb  metadata:  endpoints: https://<endpoint>:8529  queryValue: '3'  activationQueryValue: '3'  dbName: gradesheet  collection: class  query: FOR students IN class COLLECT WITH COUNT INTO length RETURN {"value":length} 

Here is an example of a arangodb scaler with Bearer Authentication, where the Secret and TriggerAuthentication are defined as follows:

apiVersion: v1 kind: Secret metadata:  name: keda-arangodb-secret  namespace: default data:  bearerToken: "BEARER_TOKEN" --- apiVersion: keda.sh/v1alpha1 kind: TriggerAuthentication metadata:  name: keda-arangodb-creds  namespace: default spec:  secretTargetRef:  - parameter: bearerToken  name: keda-arangodb-secret  key: bearerToken --- apiVersion: keda.sh/v1alpha1 kind: ScaledObject metadata:  name: arangodb-scaledobject  namespace: default spec:  maxReplicaCount: 12  scaleTargetRef:  name: nginx  triggers:  - type: arangodb  metadata:  endpoints: https://<endpoint>:8529  queryValue: '3'  dbName: gradesheet  collection: class  query: FOR students IN class COLLECT WITH COUNT INTO length RETURN {"value":length}  serverID: "uDmcE-0Zd"  authModes: "bearer"  authenticationRef:  name: keda-arangodb-creds 

Here is an example of a arangodb scaler with Basic Authentication, where the Secret and TriggerAuthentication are defined as follows:

apiVersion: v1 kind: Secret metadata:  name: keda-arangodb-secret  namespace: default data:  username: dXNlcm5hbWU=  password: cGFzc3dvcmQ= --- apiVersion: keda.sh/v1alpha1 kind: TriggerAuthentication metadata:  name: keda-arangodb-creds  namespace: default spec:  secretTargetRef:  - parameter: username  name: keda-arangodb-secret  key: username  - parameter: password  name: keda-arangodb-secret  key: password --- apiVersion: keda.sh/v1alpha1 kind: ScaledObject metadata:  name: arangodb-scaledobject  namespace: default spec:  maxReplicaCount: 12  scaleTargetRef:  name: nginx  triggers:  - type: arangodb  metadata:  endpoints: https://<endpoint>:8529  queryValue: '3'  dbName: gradesheet  collection: class  query: FOR students IN class COLLECT WITH COUNT INTO length RETURN {"value":length}  authModes: "basic"  authenticationRef:  name: keda-arangodb-creds