Using Helm Charts to Deploy Scylla on Kubernetes

By Maciej Zimnoch

Modern deployments are kept as code, and it is very common that development, staging and production environments differ only in a few properties like allocated resources. When Kubernetes is used as infrastructure, duplication of manifests for all types of deployments may be error prone. That’s why Helm templates are quite popular these days.

With Scylla Operator 1.1 we introduced three Helm Charts which will help you to deploy and customize Scylla products using Helm.

Helm Charts

Release 1.1 provides three Helm Charts:

  • scylla-operator
  • scylla-manager
  • scylla

As the name suggests, each of them allows to customize and deploy one of the Scylla products.

Helm Charts are shipped in two release channels:

  • “latest” channel as the name suggests contains the latest charts built after each merge and published on every successful end-to-end tests run.
  • “stable” channel contains only charts which are released and approved by the QA team.

Note: only stable charts should be used in production environments.

Users can override default parameters when installing the chart to suit their needs or if the simplicity is required, they can use values provided by us.

Deploy with a Few Clicks

helm repo add scylla https://scylla-operator-charts.storage.googleapis.com/stable

helm repo update

One Scylla Operator dependency is Cert Manager. You can either install it using Helm from their Chart repository, or use a static copy stored in our GitHub repository:

kubectl apply -f https://github.com/scylladb/scylla-operator/blob/master/examples/common/cert-manager.yaml

To install Scylla Operator use:

helm install scylla-operator scylla/scylla-operator --create-namespace --namespace scylla-operator

Now you’re ready to deploy the Scylla cluster. Let’s deploy a default single rack cluster just to play around with it.

helm install scylla scylla/scylla --create-namespace --namespace scylla

That’s it! Scylla Operator will coordinate each node joining cluster, and soon your 3 node cluster should be ready to serve traffic. To check your Scylla pods, use the following:

kubectl -n scylla get pods -l "app.kubernetes.io/name=scylla"

Customization

Let’s say we want to deploy a 6 node Scylla cluster suitable for i3.xlarge instances and spread these instances between two racks.

datacenter: "us-east-1"
racks:
- name: "us-east-1a"
members: 3
storage:
capacity: 800Gi
resources:
limits:
cpu: 3
memory: 24Gi
requests:
cpu: 3
memory: 24Gi
- name: "us-east-1b"
members: 3
storage:
capacity: 800Gi
resources:
limits:
cpu: 3
memory: 24Gi
requests:
cpu: 3
memory: 24Gi

To preview what manifests will be generated, you can append --dry-run parameter to install command.

If you’re satisfied with the output you can append the name of the file to helm install command:

helm install scylla scylla/scylla --create-namespace --namespace scylla -f 6_i3xlarge.yaml

To find out all available parameters you can check the Helm Chart source code available in Scylla Operator repository.

Summary

FAQs

Where I can find Scylla Helm Charts?

Source code of Helm Charts is available in Scylla Operator GitHub repository.

How to upgrade my existing deployment using Scylla Operator 1.0?

Do I have to use Helm to deploy Scylla Operator?

Can I use Scylla Manager for free?

GET STARTED WITH SCYLLA OPERATOR

The monstrously-fast NoSQL database.