Authored by: Abhijith Ganesh
This was a passion project to spin up a cassandra cluster without any external dependencies provided by other vendors, it is a sandbox project and heavily inspired by Bitnami's Cassandra Operator.
Follow the steps exactly, with precision. Donot miss out any steps
Apply the Persistent Volume Claim first. This will allow the chart to register the PVC accordingly. You can read about Persistent volumes, statefulsets and other important kubernetes architecture related terms here
Statefulsets: This provision allows us to establish a stateful workload on Kubernetes, it allows the developer to configure storage provision according to your hardware, size and helps us define the reclaim policy and other parameters for the various persistent volumes. The Persistent volumes can be configured according to the use case.
To apply persistent Volume Claim, you need to run
kubectl apply -f https://github.com/AbhijithGanesh/helm-cassandra/blob/master/persistentVolumeClaim.yaml
Following this, you need to add the helm repo locally:
helm repo add <name> https://abhijithganesh.github.io/helm-cassandra
The value adds rancher labs local-path
storage class as for the Persistent Volume, if you intend to
use someother storage class, change the persistentVolumeClaim.yaml
values. The storage class should accordingly be changed.
To add the local-path
run command:
kubectl apply -f https://raw.githubusercontent.com/rancher/local-path-provisioner/master/deploy/local-path-storage.yaml
Finally, you can run the helm command to set the cluster up.
helm install <cluster-name> <name>
You can get the secrets by running the commands:
kubectl get secrets
This will list all your secrets, instead of cassandra-custom-chart replace it with your instance name.
To get username and password run the following commands
kubectl get secret cassandra-custom-chart -o jsonpath="{.data.cassandra-superuser}"
kubectl get secret cassandra-custom-chart -o jsonpath="{.data.cassandra-password}"
Variable | Description |
---|---|
enabled | boolean: true or false |
minReplicas | minimum number of replicas default : 1 |
maxReplicas | Maximum number of replicas default : 100 |
targetCPUUtilizationPercentage | Target utilization of CPU. default : 80 |
(Sub directory of metadata, the tree follows this structure: metadata->names)
Variable | Description |
---|---|
pod_Name | Names for all pods. default : cassandra-pods |
namespace | Defines Namespace for the pods. |
service_Name | Defines service name for the pods |
Variable | Description |
---|---|
name | Defines name for persistent Volume. default : cass-persistent |
claimName | Defines claim name for the persistent volume. default : cass-pvc-claim |
Variable | Description |
---|---|
replicas | Boolean variable for enabling replicasets. default : 1 |
prometheusEnabled | Boolean variable for enabling prometheus. default : true |
serviceName | Service name for the statefulset. default :cass-stateful-set |
listenAddr | Listening address configured for the Cassandra pod. default : auto |
This is the sub parameter of the stateful set
Variable | Description |
---|---|
repository | Defines the repository name default : bitnami/cassandra-exporter |
tag | Defines the tag for the image being pulled. default : latest |
imagepullPolicy | Defines the pull policy (like Always, Never, IfNotPresent) for the metric. default : {} |
Variable | Description |
---|---|
enabled | Defines boolean for the metrics service. default : true |
namespace | Defines the namespace for the metric. default : {} |
This is the sub parameter of the metrics
Variable | Description |
---|---|
registry | Defines the registry from which the image is pulled. default : true |
imagepullPolicy | Defines the pull policy (like Always, Never, IfNotPresent) for the metric. default : {} |
repository | Defines the repository name default : bitnami/cassandra-exporter |
tag | Defines the tag for the image being pulled. default : latest |