GGideondevops

Deploying Apache Cassandra on Kubernetes

25 Jul 2026, 1:41 pm

Apache Cassandra is a highly scalable, distributed NoSQL database built for write-heavy workloads, horizontal scaling, and tunable consistency, with no single point of failure. K8ssandra is an open-source operator that automates Cassandra provisioning, scaling, backups, and repairs on Kubernetes. This guide deploys a multi-node Cassandra cluster via the K8ssandra Operator, with cert-manager, persistent block storage, and a LoadBalancer service for external access.

Prerequisites: a Kubernetes cluster with at least 4 nodes / 4GB RAM each, a workstation with kubectl and helm configured against the cluster.

Install cqlsh

cqlsh is the Python-based CLI for querying Cassandra.

Install cert-manager

K8ssandra uses cert-manager to generate the Java keystores/truststores Cassandra needs for internal TLS.

Install the K8ssandra Operator

You should see both k8ssandra-operator and k8ssandra-operator-cass-operator deployments ready.

Deploy a Multi-Node Cassandra Cluster Check available StorageClasses in your cluster:

Note the name of a CSI-backed block storage class — you'll reference it below. Create the cluster manifest:

Replace standard with your cluster's actual StorageClass name. This provisions 3 Cassandra nodes with a 10GB volume each, 512MB JVM heap per Cassandra node, and a single Stargate node (REST/GraphQL/Document API gateway in front of Cassandra) with a 256MB heap. Confirm your cloud provider's CSI driver is installed and configured before applying — it's required for dynamic volume provisioning. Apply and wait (cluster bring-up takes ~15 minutes):

You're looking for 3 demo-dc1-default-sts-N pods and a demo-dc1-default-stargate-deployment-* pod, all Running.

Verify Persistent Storage

Cassandra nodes run as a StatefulSet, each backed by a PVC for durable storage.

All three PVCs should show Bound.

Expose the Cluster

Create a LoadBalancer service to reach Cassandra over the native CQL protocol (port 9042):

Wait for EXTERNAL-IP to populate (a few minutes) — that's your connection address.

Test the Cluster

Next Steps

Cassandra is running as a 3-node cluster with persistent storage and a Stargate data gateway. From here: • Scale size in the datacenter spec and reapply to add nodes • Enable Stargate's REST/GraphQL APIs for app access without a native CQL driver • Configure K8ssandra's Medusa integration for scheduled backups to object storage

For the full guide, visit the original article on Vultr Docs.

https://dev.to/vultr/deploying-apache-cassandra-on-kubernetes-po6

Join the conversation

Sign up to like, save, comment, and connect with techies who think like you.

Log in / Sign up