See all blog posts

Using Helm Charts to Deploy ScyllaDB on Kubernetes

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 ScyllaDB Operator 1.1 we introduced three Helm Charts which will help you to deploy and customize ScyllaDB products using Helm.

Helm Charts

Helm Charts are templated Kubernetes manifests combined into a single package that can be installed on your Kubernetes cluster. Once packaged, installing a Helm Chart into your cluster is as easy as running a single helm install command.

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 ScyllaDB 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

Using Helm ScyllaDB can be installed in a matter of minutes. First we need to install ScyllaDB Operator and its dependencies. To add ScyllaDB Chart repository to Helm registry and update it execute the following commands:

helm repo add scylla https://operator.docs.scylladb.com/stable/helm.html 

helm repo update

One ScyllaDB 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 ScyllaDB Operator use:

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

Now you’re ready to deploy the ScyllaDB 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! ScyllaDB Operator will coordinate each node joining cluster, and soon your 3 node cluster should be ready to serve traffic. To check your ScyllaDB pods, use the following:

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

Customization

Often default values aren’t what you need. That’s where the Helm template comes in and solves the problem. You can either use the --set parameter to set individual parameters or provide a yaml file with more values you want to overwrite.

Let’s say we want to deploy a 6 node ScyllaDB 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 ScyllaDB Operator repository.

Summary

As you can see, we are constantly moving forward in order to make ScyllaDB Operator as good as possible. If you find any issues, make sure to report them so we can fix them in one of the next releases.

FAQs

Where I can find ScyllaDB Helm Charts?

There are two repositories for each of the release channels. To add them to helm, use:

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

How to upgrade my existing deployment using ScyllaDB Operator 1.0?

You can find the upgrade procedure in ScyllaDB Operator documentation.

Do I have to use Helm to deploy ScyllaDB Operator?

No! It’s just an option. We also provide static Yaml manifests which can be used to deploy ScyllaDB Operator and others. Check out our GitHub repository or documentation for details.

Can I use ScyllaDB Manager for free?

Yes. ScyllaDB Manager is available for free for ScyllaDB Enterprise customers and ScyllaDB Open Source users. However, with ScyllaDB Open Source NoSQL Database, ScyllaDB Manager is limited to 5 nodes. See the ScyllaDB Manager Proprietary Software License Agreement for details.

GET STARTED WITH SCYLLA OPERATOR

Maciej Zimnoch

About Maciej Zimnoch

Maciej is a Go and C++ enthusiast. He is a software engineer working on ScyllaDB management tools. Previously he worked in network companies where he delivered multiple features to SDN solutions and LTE networks.