I am trying to migrate cassandra DB to AKS using k8ssandra. I would like to retain the source DB's cassandra.yaml configuration in the target as well, like increase the timeout parameters ( to handle client requests). I see the configmap placeholder in the k8ssandra's values.yaml file. Would it help to retain the source configurations? Detailed guideline on how to use it is much appreciated :)
Support for specifying Casssandra configs via a ConfigMap was added in this PR and made available in K8ssandra 1.4.0.
The new chart property name is
cassandraYamlConfigMap. Here is what the docs for the property say:Here is an example ConfigMap:
Here's how this works. The cassandra.yaml, jvm-server-options, etc. are generated as normal when
cassandraYamlConfigMapis set. After theserver-config-initinit container generates the configs, then a new init container calledapply-custom-configdoes a merge using yq of the cassandra.yaml in the ConfigMap and the cassandra.yaml generated byserver-config-init. The ConfigMap takes precedence.Make sure to pay attention to the properties that should not be specified. No validation checks are performed on the ConfigMap.
Note that you will need to use the
cassandraYamlConfigMapproperty if you want to configure internode encryption. See this post for a detailed explanation.Lastly, I want to point out that there is improved support for configuring cassandra.yaml in K8ssandra Operator. The operator does not allow you to specify a custom ConfigMap but all cassandra.yaml properties are available in the K8ssandraCluster CRD. See here for an example.