Kubernetes has become the de facto platform for deploying production software at scale, and our helm-charts repository has been a valuable tool for teams who want to deploy the Temporal Service to a Kubernetes cluster.
Our Helm Charts recently reached a key milestone: the 1.0.0 release. Before I explain some important changes in that release, I want to thank the community members who helped make it possible.
A collaboration with the community#
These Helm Charts began as a side project by a few Temporal engineers six years ago, but quickly became a collaborative effort with our community. To date, we’ve merged more than 400 pull requests. Those have been contributed by nearly 150 people, two-thirds of whom aren’t Temporal employees.
Over the years, community members running Temporal in production, at organizations of all sizes and across a variety of industries, used these Helm Charts. They caught edge cases we hadn’t anticipated. They contributed support for configurations we hadn’t imagined. They suggested improvements, filed issues, and submitted pull requests. And they also helped one another.
This release and beyond: What you need to know#
As the 1.0.0 version number suggests, the Helm Charts have now reached a point of stability and we do not expect to introduce breaking changes for the releases that follow in this series. Reaching that stability required making some changes that were incompatible with pre-1.0.0 releases.
The UPGRADING.md file in the root of the repository details these changes, but here is a brief summary:
-
The Helm Charts no longer include sub-charts for the database used by the Temporal Cluster. Older releases bundled Apache Cassandra by default, and supported PostgreSQL and MySQL as alternatives, installing them automatically in addition to the Temporal Cluster itself. The 1.0.0 and later versions only install the Temporal-specific components (Temporal Server, Temporal Web UI, and admin tools), so you must provide the database for the cluster to use and specify the connection details in your configuration.
-
Similarly, the Helm Charts no longer include sub-charts for optional components, such as Elasticsearch, Prometheus, and Grafana. If you use those components, you must provide them and specify their details in the configuration.
-
Related to these two changes, the structure of the
values.yamlfile has changed from earlier versions. There are no longer top-level database keys, and the configuration for the persistence layer has been moved toserver.config.persistence.datastores. -
The internal frontend service was previously configured using the
server.internalFrontendkey, but this key is now lowercase and hyphenated (server.internal-frontend), so you’ll need to update your configuration accordingly. -
The
imagePullSecretsfield changed from a map ({}) to an array ([]). If you use image pull secrets, you’ll need to update to the new format.
New capabilities introduced#
Beyond the breaking changes, the 1.0.0 release adds several new capabilities, such as:
-
Server and Web UI Pods now support configurable readiness probes, giving you precise control over when Kubernetes considers a pod ready to receive traffic.
-
You can configure custom deployment strategies, including rolling update parameters, at both the global and per-service level.
-
The new
minReadySecondssetting gives you additional control over rollout pace. -
Log levels are now configurable through
server.config.logLevel. -
Service labels, schema job annotations, and test Pod annotations are all configurable.
-
You can configure AWS IAM authentication and TLS for Elasticsearch/OpenSearch.
-
Coupled with security improvements in the Temporal docker images, Temporal can now use a read-only filesystem. Previously, the Docker images required writing the templated config file out to disk.
Where to get help#
If you’re migrating from an older version of the Helm Charts, see the UPGRADING.md file for additional guidance, including a checklist to help you plan your migration.
If you're starting from scratch with the new release, the README contains detailed configuration examples to help you get up and running quickly. The values/ directory in the repository has working example files you can use as starting points for your own custom configurations.
In case you run into trouble, the #helm-charts channel in Temporal’s Community Slack is a great place to ask for help. If you find a bug, open an issue on GitHub.
We look forward to more collaboration!