Warning
You are currently viewing v2.14 of the documentation and it is not the latest. For the most recent documentation, kindly click here.
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)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.
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