I was wondering if there is a way to install a cassandra cluster locally in minikube. I found some solutions just to install it in cloud provisioners like GCP but I need to install in my dev environment.
I'm able to install cassandra using helm charts in minikube v1.9.2
running k8s v1.17.4
on Ubuntu 16.04 Xenial
like this:
git clone git@github.com:helm/charts.git
cd charts
kubectl create ns cassandra
helm install cassandra --namespace "cassandra" incubator/cassandra
$ kubectl get pods,svc -n=cassandra
NAME READY STATUS RESTARTS AGE
pod/cassandra-0 1/1 Running 0 3m52s
pod/cassandra-1 0/1 Running 0 104s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/cassandra ClusterIP None <none> 7000/TCP,7001/TCP,7199/TCP,9042/TCP,9160/TCP 3m52s
## see status of cassandra cluster
$ kubectl exec -it --namespace cassandra cassandra-0 nodetool status
Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns (effective) Host ID Rack
UN 172.18.0.6 89.13 KiB 256 65.4% 09486d44-43d6-47eb-b455-8856d566ac0a rack1
UN 172.18.0.4 74.93 KiB 256 67.5% d7c24d6a-0ba5-498f-a65c-4a858cba282e rack1
UN 172.18.0.5 74.92 KiB 256 67.1% 14c2eea0-efdf-444e-9e97-936d9710c2eb rack1
## my helm, minikube and k8s versions
$ helm version
version.BuildInfo{Version:"v3.0.2", GitCommit:"19e47ee3283ae98139d98460de796c1be1e3975f", GitTreeState:"clean", GoVersion:"go1.13.5"}
$ minikube version
minikube version: v1.9.2
commit: 93af9c1e43cab9618e301bc9fa720c63d5efa393
$ kubectl version
Client Version: version.Info{Major:"1", Minor:"17", GitVersion:"v1.17.4", GitCommit:"8d8aa39598534325ad77120c120a22b3a990b5ea", GitTreeState:"clean", BuildDate:"2020-03-12T21:03:42Z", GoVersion:"go1.13.8", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"17", GitVersion:"v1.17.4", GitCommit:"8d8aa39598534325ad77120c120a22b3a990b5ea", GitTreeState:"clean", BuildDate:"2020-03-12T20:55:23Z", GoVersion:"go1.13.8", Compiler:"gc", Platform:"linux/amd64"}
This link has steps to create a StorageClass
to persist data in cassandra.
This link has more information about cassandra helm charts and its configurations.