We’ve heard your feedback: deploying Cadence has been a challenge, especially with limited documentation on operational aspects. So far, we’ve only provided a few docker compose files (opens new window) to help you get started on a development machine. However, deploying and managing Cadence at scale requires a deep understanding of underlying services, configurations and their dependencies.
To address these challenges, we’re launching several initiatives to make it easier to deploy and operate Cadence clusters. These include deployment specs for common scenarios, monitoring dashboards, alerts, runbooks, and more comprehensive documentation.
# Introducing Cadence Kubernetes Helm Chart v0
Today, we are happy to announce the release of Cadence Kubernetes Helm Chart v0 (opens new window). This will be the starting point for standardizing Cadence deployments on Kubernetes. We chose Kubernetes because it's the leading compute platform, but Cadence remains flexible and can run on any infrastructure.
# How to Get Started
Helm (opens new window) must be installed to use the charts. Please refer to Helm's documentation (opens new window) to get started.
Once Helm has been set up correctly, add the repo as follows:
helm repo add cadence https://uber.github.io/cadence-charts
If you had already added this repo earlier, run helm repo update
to retrieve the latest versions of the packages. You can then run helm search repo cadence
to see the charts.
To install the cadence chart:
helm install my-cadence cadence/cadence
To uninstall the chart:
helm delete my-cadence
See CONTRIBUTING.md (opens new window) for details on how to validate the deployment by running sample workflows.
# Current State of the Chart
There were a few community-created Cadence Helm charts but they were not actively maintained and had a few glitches that Cadence team @Uber wasn't able to provide support for. With the introduction of the new official Cadence Helm chart, our team is committed to provide support and evolve it with input from community.
The v0 chart contains only the basics at the moment:
- Cadence backend services as separate deployments: frontend, history, matching, worker.
- Customizable replica counts and resource limitations.
- Customizable dynamic config as a configmap.
- A single instance ephemeral Cassandra container. This is included so that no external dependency is required to get started. Ideally you should have your own external (hosted or managed) DB instance that you can specify in values.yaml.
- The chart comes with
cadence:master-auto-setup
as the default image and capable of setting up Cassandra DB schema on first installation.
What is (obviously) missing:
- Support for advanced visibility stores like Elasticsearch or Pinot.
- Support for persistent plugins configurations besides Cassandra.
- Support for fully customizable service config via values.yaml.
- Metrics integration with Prometheus (and more out of the box prometheus dashboards)
- Custom annotations/lables/tolerations etc.
- Support for ingress
# Next Steps
Since this is an early release, we would love to hear from you. Feel free to start discussions (opens new window) or report issues (opens new window).
Also check out the contribution guideline (opens new window) if you are interested to contribute. Don't hesitate to send a PR and ping us over slack if we miss it.
P.S. Huge thanks to our summer intern Nikita Bhardwaj (opens new window) for kickstarting the Cadence Helm charts initiative.