Cassandra Latest
Scale applications based on Cassandra query results.
Trigger Specification
This specification describes the cassandra
trigger that scales based on the outputs of a Cassandra query.
triggers:
- type: cassandra
metadata:
username: "cassandra"
port: "9042"
clusterIPAddress: "cassandra.default"
consistency: "Quorum"
protocolVersion: "4"
keyspace: "test_keyspace"
query: "SELECT COUNT(*) FROM test_keyspace.test_table;"
targetQueryValue: "1"
activationTargetQueryValue: "10"
Parameter list:
username
- The username credential for connecting to the Cassandra instance.port
- The port number of the Cassandra instance. (Optional, Can be set either here or inclusterIPAddress
)clusterIPAddress
- The IP address or the host name of the Cassandra instance.consistency
- Configuration for a session or per individual read operation. (Values:LOCAL_ONE
,LOCAL_QUORUM
,EACH_QUORUM
,LOCAL_SERIAL
,ONE
,TWO
,THREE
,QUORUM
,SERIAL
,ALL
, Default:ONE
, Optional)protocolVersion
- CQL Binary Protocol. (Default:4
, Optional)keyspace
- The name of the keyspace used in Cassandra.query
- A Cassandra query that should return single numeric value.targetQueryValue
- The threshold value that is provided by the user and used astargetValue
ortargetAverageValue
(depending on the trigger metric type) in the Horizontal Pod Autoscaler (HPA).activationTargetQueryValue
- Target value for activating the scaler. Learn more about activation here. (Default:0
, Optional)
Authentication Parameters
You can authenticate by using a password via TriggerAuthentication
configuration.
Password Authentication:
password
- Password for configured user to log in to the Cassandra instance.tls
- To enable SSL auth for Cassandra session, set this to enable. If not set, TLS for Cassandra is not used. (Values: enable, disable, Default: disable, Optional).cert
- Certificate path for client authentication. Mandatory if tls enabled. (Optional)key
- Key path for client authentication. Mandatory if tls enabled. (Optional)
Example with no TLS auth
apiVersion: v1
kind: Secret
metadata:
name: cassandra-secrets
type: Opaque
data:
cassandra_password: CASSANDRA_PASSWORD
---
apiVersion: keda.sh/v1alpha1
kind: TriggerAuthentication
metadata:
name: keda-trigger-auth-cassandra-secret
spec:
secretTargetRef:
- parameter: password
name: cassandra-secrets
key: cassandra_password
---
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
name: cassandra-scaledobject
spec:
scaleTargetRef:
name: nginx-deployment
triggers:
- type: cassandra
metadata:
username: "cassandra"
port: "9042"
clusterIPAddress: "cassandra.default"
consistency: "Quorum"
protocolVersion: "4"
query: "SELECT COUNT(*) FROM test_keyspace.test_table;"
targetQueryValue: "1"
authenticationRef:
name: keda-trigger-auth-cassandra-secret
Example with TLS auth
Since we are passing Cert and Key content as inputs to the scaler, we have to supply writable location for required GSSAPI configurations for the keda-operator
container.
sasl/gssapi
in manager.yaml
If you use YAML declarations to deploy KEDA, add below volume mount and volume to supply writable location for required GSSAPI configurations for the keda-operator
container.
volumeMounts:
- mountPath: /tmp/cassandra
name: temp-cassandra-vol
readOnly: false
volumes:
- name: temp-cassandra-vol
emptyDir:
medium: Memory
sasl/gssapi
in keda-charts
If you use Helm Charts to deploy KEDA, add below volume mount and volume to supply writable location for required gssapi configurations.
volumes.keda.extraVolumeMounts
- mountPath: /tmp/cassandra
name: temp-cassandra-vol
readOnly: false
volumes.keda.extraVolumes
- name: temp-cassandra-vol
emptyDir:
medium: Memory
Once we have the writable mount path set up for the certificates and keys.
apiVersion: v1
kind: Secret
metadata:
name: cassandra-secrets
type: Opaque
data:
cassandra_password: CASSANDRA_PASSWORD
tls: enable
cert: <cert content | base64encoded>
key: <key content | base64encoded>
## Optional parameter ca ##
ca: <ca cert content | base64encoded>
---
apiVersion: keda.sh/v1alpha1
kind: TriggerAuthentication
metadata:
name: keda-trigger-auth-cassandra-secret
spec:
secretTargetRef:
- parameter: password
name: cassandra-secrets
key: cassandra_password
- parameter: tls
name: cassandra-secrets
key: tls
- parameter: cert
name: cassandra-secrets
key: cert
- parameter: key
name: cassandra-secrets
key: key
## Optional parameter ca ##
- parameter: ca
name: cassandra-secrets
key: ca
---
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
name: cassandra-scaledobject
spec:
scaleTargetRef:
name: nginx-deployment
triggers:
- type: cassandra
metadata:
username: "cassandra"
port: "9042"
clusterIPAddress: "cassandra.default"
consistency: "Quorum"
protocolVersion: "4"
query: "SELECT COUNT(*) FROM test_keyspace.test_table;"
targetQueryValue: "1"
authenticationRef:
name: keda-trigger-auth-cassandra-secret