ScyllaDB University Live | Free Virtual Training Event
Learn more
ScyllaDB Documentation Logo Documentation
  • Deployments
    • Cloud
    • Server
  • Tools
    • ScyllaDB Manager
    • ScyllaDB Monitoring Stack
    • ScyllaDB Operator
  • Drivers
    • CQL Drivers
    • DynamoDB Drivers
    • Supported Driver Versions
  • Resources
    • ScyllaDB University
    • Community Forum
    • Tutorials
Install
Search Ask AI
ScyllaDB Docs ScyllaDB Operator Deploy ScyllaDB Deploy your first cluster

Caution

You're viewing documentation for an unstable version of ScyllaDB Operator. Switch to the latest stable version.

Deploy your first cluster¶

This page walks you through creating a ScyllaDB cluster using the ScyllaCluster resource. It starts with a minimal development cluster you can deploy in minutes, then covers production-grade configuration.

Tip

You can inspect all available API fields for your installed Operator version with:

kubectl explain --api-version='scylla.scylladb.com/v1' ScyllaCluster.spec

Prerequisites¶

  • ScyllaDB Operator installed. Follow Install with Helm, Install with GitOps, or Install on OpenShift if you have not done so yet.

  • Dedicated nodes labeled and tainted per Set up dedicated node pools.

  • Nodes configured with local disk setup and kernel tuning via NodeConfig, and the Local CSI Driver installed to provision PersistentVolumes from local storage. Follow Configure nodes if you have not done so yet.

  • kubectl configured and pointed at the cluster.

Quick path: create a development cluster¶

If you have ScyllaDB Operator installed and just want to get a ScyllaDB cluster running, follow these steps.

Tip

You can run your ScyllaDB cluster in the Kubernetes namespace of your choice (you can change the namespace used in this guide to your preference). It is a best practice (but not strictly required) to run your ScyllaDB cluster in a namespace separate from other applications.

Create a ScyllaDB configuration¶

Create a ConfigMap containing the scylla.yaml configuration. ScyllaDB Operator generates most ScyllaDB settings automatically (networking, listen addresses, seeds), but you can use this ConfigMap to fine-tune settings that ScyllaDB Operator does not manage:

kubectl apply --server-side -f=- <<EOF
apiVersion: v1
kind: ConfigMap
metadata:
  name: scylladb-config
data:
  scylla.yaml: |
    authenticator: PasswordAuthenticator
    authorizer: CassandraAuthorizer
EOF

Note

Do not configure networking, listen addresses, broadcast addresses, or seed nodes in this ConfigMap — ScyllaDB Operator manages these automatically. Conflicting options are overridden by ScyllaDB Operator. You can safely tune application-level settings like authenticator, authorizer, buffer sizes, compaction throughput, etc.

Create a ScyllaCluster¶

kubectl apply --server-side -f=- <<EOF
apiVersion: scylla.scylladb.com/v1
kind: ScyllaCluster
metadata:
  name: scylladb
spec:
  version: 2026.1.3
  developerMode: true
  datacenter:
    name: us-east-1
    racks:
    - name: us-east-1a
      members: 1
      scyllaConfig: scylladb-config
      storage:
        capacity: 1Gi
        storageClassName: scylladb-local-xfs
      resources:
        requests:
          cpu: 10m
          memory: 100Mi
        limits:
          cpu: 1
          memory: 1Gi
      placement:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: scylla.scylladb.com/node-type
                operator: In
                values:
                - scylla
        tolerations:
        - key: scylla-operator.scylladb.com/dedicated
          operator: Equal
          value: scyllaclusters
          effect: NoSchedule
EOF

The developerMode: true flag lowers resource requirements and relaxes some checks, making it suitable for quick testing. Do not use developer mode in production.

Wait for the cluster to become ready¶

kubectl wait --for='condition=Progressing=False' --timeout=10m scyllaclusters.scylla.scylladb.com/scylladb
kubectl wait --for='condition=Degraded=False' --timeout=10m scyllaclusters.scylla.scylladb.com/scylladb
kubectl wait --for='condition=Available=True' --timeout=10m scyllaclusters.scylla.scylladb.com/scylladb

Verify the cluster status:

kubectl get scyllaclusters.scylla.scylladb.com/scylladb

Expected output:

NAME       READY   MEMBERS   RACKS   AVAILABLE   PROGRESSING   DEGRADED   AGE
scylladb   1       1         1       True        False         False      5m

You can also watch the pod status:

kubectl get pods -l scylla/cluster=scylladb -w

Expected output: All pods show READY 2/2 (ScyllaDB container + Manager Agent sidecar) and STATUS Running.

Your ScyllaDB cluster is running. Explore the next steps to connect your application and prepare for production.


Production deployment¶

For production-grade deployments with multi-rack, multi-zone configurations and properly sized resources, follow a reference deployment for your platform.

Key fields explained¶

For the full API reference, see the API reference.

Spread racks across availability zones¶

Each rack should map to a Kubernetes availability zone. Use placement.nodeAffinity to pin each rack to a specific zone using the standard topology.kubernetes.io/zone label:

placement:
  nodeAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
      nodeSelectorTerms:
      - matchExpressions:
        - key: topology.kubernetes.io/zone
          operator: In
          values:
          - <zone>
        - key: scylla.scylladb.com/node-type
          operator: In
          values:
          - scylla
  tolerations:
  - key: scylla-operator.scylladb.com/dedicated
    operator: Equal
    value: scyllaclusters
    effect: NoSchedule

Replace <zone> with the actual zone name for each rack (e.g., us-east1-b, us-east-1a).

Next steps¶

  • Learn how to connect your application to ScyllaDB.

  • Review the production checklist before going to production.

  • See the reference deployments for complete end-to-end examples on specific platforms.

Was this page helpful?

PREVIOUS
Configure ScyllaDB Operator
NEXT
Reference deployments
  • Create an issue
  • Edit this page

On this page

  • Deploy your first cluster
    • Prerequisites
    • Quick path: create a development cluster
      • Create a ScyllaDB configuration
      • Create a ScyllaCluster
      • Wait for the cluster to become ready
    • Production deployment
    • Key fields explained
    • Spread racks across availability zones
    • Next steps
ScyllaDB Operator
Search Ask AI
  • master
    • master
    • v1.21
    • v1.20
    • v1.19
    • v1.18
  • Get Started
    • What Is ScyllaDB Operator?
    • ScyllaDB Concepts on Kubernetes
  • Install Operator
    • Provision infrastructure
      • Set up a GKE cluster for ScyllaDB
      • Set up an EKS cluster for ScyllaDB
      • Set up an OKE cluster for ScyllaDB
      • Set up an OpenShift cluster for ScyllaDB
    • Install with GitOps
    • Install with Helm
    • Install on OpenShift
  • Deploy ScyllaDB
    • Before you deploy
      • Set up dedicated node pools
      • Configure CPU pinning
      • Configure nodes
      • Configure ScyllaDB Operator
    • Deploy your first cluster
    • Reference deployments
      • Reference deployment: GKE
      • Reference deployment: EKS
      • Reference deployment: OKE
      • Reference deployment: OpenShift
    • Install ScyllaDB Manager
    • Set up networking
      • Configure external access
      • IPv6 networking
        • Getting started with IPv6 networking
        • Configure dual-stack networking
        • Configure IPv6-only networking
        • Migrate clusters to IPv6
        • Troubleshoot IPv6 networking issues
        • IPv6 networking concepts
    • Set up monitoring
      • Set up ScyllaDB Monitoring
      • Set up ScyllaDB Monitoring on OpenShift
      • Expose Grafana
    • Production checklist
  • Connect Your App
    • Connect via CQL
    • Alternator (DynamoDB API)
    • Discovery endpoint
  • Understand
    • Storage
    • Tuning
    • ScyllaDB Manager
    • Networking
    • ScyllaDB Monitoring overview
    • Bootstrap synchronisation
    • Automatic data cleanup
    • Sidecar and pod anatomy
    • Ignition
    • Pod disruption budgets
    • Security
    • StatefulSets and racks
  • Operate
    • Scale, add, remove racks
    • Replace nodes
    • Expand storage volumes
    • Use maintenance mode
    • Back up and restore
    • Restore from backup
    • Perform a rolling restart
    • Migrate a rack to a new node pool
    • Pass additional ScyllaDB arguments
    • Configure precomputed IO properties
  • Upgrade
    • Upgrading ScyllaDB Operator
    • Upgrading ScyllaDB clusters
  • Troubleshoot
    • Investigate pod restarts
    • Change log level on a live cluster
    • Recover from a failed node replace
    • Troubleshoot performance
    • Collect debugging information
      • Collect data with must-gather
      • must-gather contents
      • Query system tables for debugging
    • Collect core dumps
  • Reference
    • API Reference
      • scylla.scylladb.com
        • NodeConfig (scylla.scylladb.com/v1alpha1)
        • RemoteKubernetesCluster (scylla.scylladb.com/v1alpha1)
        • RemoteOwner (scylla.scylladb.com/v1alpha1)
        • ScyllaCluster (scylla.scylladb.com/v1)
        • ScyllaDBCluster (scylla.scylladb.com/v1alpha1)
        • ScyllaDBDatacenterNodesStatusReport (scylla.scylladb.com/v1alpha1)
        • ScyllaDBDatacenter (scylla.scylladb.com/v1alpha1)
        • ScyllaDBManagerClusterRegistration (scylla.scylladb.com/v1alpha1)
        • ScyllaDBManagerTask (scylla.scylladb.com/v1alpha1)
        • ScyllaDBMonitoring (scylla.scylladb.com/v1alpha1)
        • ScyllaOperatorConfig (scylla.scylladb.com/v1alpha1)
    • Feature gates
    • IPv6 configuration reference
    • Releases
    • Known issues
    • Conditions reference
    • nodetool alternatives
  • Contributing to ScyllaDB Operator
Docs Tutorials University Contact Us About Us
© 2026, ScyllaDB. All rights reserved. | Terms of Service | Privacy Policy | ScyllaDB, and ScyllaDB Cloud, are registered trademarks of ScyllaDB, Inc.
Last updated on 22 May 2026.
Powered by Sphinx 9.1.0 & ScyllaDB Theme 1.9.2