ArangoDB Latest
Scale applications based on ArangoDB query result.
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 containbearerin case of Bearer Authentication. Specify this in trigger configuration.bearerToken: The token needed for authentication.
Basic authentication:
authModes: It must containbasicin 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