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