Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
9d4c4cb
fix<postgres>: schema job fail open and add example (#58)
shijiesheng Oct 28, 2025
502a562
docs: Convert slack links to CNCF, add link to contributing guide (#57)
vishwa-uber Oct 30, 2025
e63fb49
Bump Web v4.0.11 (#60)
CosminL-DEV Nov 6, 2025
ecc3e4e
add es examples and add to chart dependencies
shijiesheng Oct 31, 2025
4d1be74
add additional comment
shijiesheng Oct 31, 2025
45a7f51
add kafka values to elasticsearch example
Bueller87 Nov 12, 2025
9122e55
fix configmap so visibility datastore is created
Bueller87 Nov 13, 2025
481cf79
change cadence verion to 1.3.7
Bueller87 Nov 13, 2025
be5335d
Set cadence version to v1.3.6 in chart and values
Bueller87 Nov 14, 2025
d8bb312
fix: always create visibility database when configured
Bueller87 Nov 14, 2025
c85e226
run helm-docs to update Readme
Bueller87 Nov 14, 2025
e9f653a
chore: remove unused visibility DB config from ES example
Bueller87 Nov 17, 2025
7051228
fix: skip visibility DB creation when Elasticsearch is enabled
Bueller87 Nov 17, 2025
7f8c5c4
fix: use ES index name matching template pattern
Bueller87 Nov 19, 2025
9cc4bc7
fix: disable SQL visibility store for ES-only mode
Bueller87 Nov 19, 2025
37e3728
fix: use 'es' keyword for visibility store name in dynamic config
Bueller87 Nov 19, 2025
ffee53e
fix: remove advancedVisibilityStore for Kafka-based async visibility
Bueller87 Nov 19, 2025
297dcad
fix: explicitly set advancedVisibilityStore to empty string
Bueller87 Nov 19, 2025
805cd4b
fix: restore advancedVisibilityStore (required by Cadence)
Bueller87 Nov 19, 2025
6b2ec55
fix: provision Kafka topics at startup to avoid race conditions
Bueller87 Nov 20, 2025
4ad9d9d
Ran helm-docs
Bueller87 Nov 20, 2025
47b90b7
Merge branch 'main' into fix-elasticsearch
Bueller87 Nov 20, 2025
15d3d14
fix: change visibility index name
Bueller87 Nov 20, 2025
f7e13ac
fix: restore elasticsearch check for visibility store config
Bueller87 Nov 25, 2025
8a66709
fix: explicitly disable Kafka in postgres-only example
Bueller87 Nov 25, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions charts/cadence/Chart.lock
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,11 @@ dependencies:
- name: mysql
repository: oci://registry-1.docker.io/bitnamicharts
version: 12.3.5
digest: sha256:9d2bdf5e27b9fedc3a32d7abcf6c3ff569818e2756240f94977b1047efafe4b0
generated: "2025-09-17T16:04:57.7251556+02:00"
- name: elasticsearch
repository: oci://registry-1.docker.io/bitnamicharts
version: 21.6.3
- name: kafka
repository: oci://registry-1.docker.io/bitnamicharts
version: 30.1.8
digest: sha256:794d39e9345acfb117730c963e7818fa388613b2cbb2becef8c3ce43d1e15206
generated: "2025-11-03T14:00:44.205655-08:00"
10 changes: 9 additions & 1 deletion charts/cadence/Chart.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
apiVersion: v2
name: cadence
version: 1.0.10
version: 1.1.0
appVersion: v1.3.6

description: |
Expand Down Expand Up @@ -40,3 +40,11 @@ dependencies:
version: 12.x.x
repository: oci://registry-1.docker.io/bitnamicharts
condition: mysql.enabled
- name: elasticsearch
version: 21.6.x
repository: oci://registry-1.docker.io/bitnamicharts
condition: elasticsearch.enabled
- name: kafka
version: 30.x.x
repository: oci://registry-1.docker.io/bitnamicharts
condition: kafka.enabled
4 changes: 3 additions & 1 deletion charts/cadence/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# cadence

![Version: 1.0.10](https://img.shields.io/badge/Version-1.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v1.3.6](https://img.shields.io/badge/AppVersion-v1.3.6-informational?style=flat-square)
![Version: 1.1.0](https://img.shields.io/badge/Version-1.1.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v1.3.6](https://img.shields.io/badge/AppVersion-v1.3.6-informational?style=flat-square)

Cadence is a distributed, scalable, durable, and highly available orchestration engine
to execute asynchronous long-running business logic in a scalable and resilient way.
Expand All @@ -24,6 +24,8 @@ This chart deploys Uber Cadence server components and web UI.
| Repository | Name | Version |
|------------|------|---------|
| oci://registry-1.docker.io/bitnamicharts | cassandra | 11.x.x |
| oci://registry-1.docker.io/bitnamicharts | elasticsearch | 21.6.x |
| oci://registry-1.docker.io/bitnamicharts | kafka | 30.x.x |
| oci://registry-1.docker.io/bitnamicharts | mysql | 12.x.x |
| oci://registry-1.docker.io/bitnamicharts | postgresql | 16.x.x |

Expand Down
203 changes: 203 additions & 0 deletions charts/cadence/examples/values.postgres-es7.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,203 @@
# Namespace note: install into namespace: cadence-postgres-es7

# Allow Bitnami charts to use legacy repository images
global:
image:
tag: "v1.3.6" # Default version
security:
allowInsecureImages: true

# Force Cadence to use PostgreSQL for main DB
config:
persistence:
# Name of the default datastore (PostgreSQL)
defaultStore: "default"
# Disable basic SQL visibility (we're using ES-only via Kafka)
visibilityStore: ""
# Name of the advanced visibility datastore (Elasticsearch)
# Note: This defines the datastore, but dynamic config controls how it's used
advancedVisibilityStore: "es-visibility"
database:
driver: "postgres"
sql:
hosts: "cadence-release-postgresql.cadence-postgres-es7.svc.cluster.local"
port: 5432
dbname: "cadence"
user: "cadence"
password: "changeme-strong"
tls:
enabled: false
sslMode: ""
elasticsearch:
enabled: true
version: "v7"
user: ""
password: ""
protocol: "http"
hosts: "cadence-release-elasticsearch.cadence-postgres-es7.svc.cluster.local"
port: 9200
visibilityIndex: "cadence-visibility-es7"
tls:
enabled: false
kafka: # needed by elasticsearch integration
enabled: true
brokers: "cadence-release-kafka.cadence-postgres-es7.svc.cluster.local"

# Enable Cadence schema jobs
schema:
serverJob:
enabled: true
elasticSearchJob:
enabled: true

# Ensure Cadence uses Elasticsearch for advanced visibility
# Note: "es" is a special keyword for advanced visibility, not the datastore name
dynamicConfig:
values:
system.writeVisibilityStoreName:
- value: "es"
system.readVisibilityStoreName:
- value: "es"

### subcharts values which can be omited if user has their own deployment

# Deploy Postgres within the same release (Bitnami subchart)
postgresql:
enabled: true
image:
registry: docker.io
repository: bitnamilegacy/postgresql
tag: "16.4.0"
pullPolicy: IfNotPresent
auth:
username: cadence
password: "changeme-strong"
database: cadence
primary:
persistence:
enabled: true
size: 8Gi

# Deploy Elasticsearch with single node mode
elasticsearch:
enabled: true
master:
masterOnly: false
replicaCount: 1
resources:
requests:
cpu: 1
memory: 1024Mi
limits:
cpu: 2
memory: 2048Mi
data:
replicaCount: 0
coordinating:
replicaCount: 0
ingest:
replicaCount: 0
sysctlImage:
enabled: false
image:
tag: 7.17.23
repository: bitnamilegacy/elasticsearch

kafka:
enabled: true
image:
registry: docker.io
repository: bitnamilegacy/kafka
tag: "3.8.0"
pullPolicy: IfNotPresent
# KRaft mode configuration (Kafka without ZooKeeper)
kraft:
enabled: true
# Disable ZooKeeper since we're using KRaft
zookeeper:
enabled: false
# Controller and broker configuration for KRaft
controller:
replicaCount: 1
persistence:
enabled: true
size: 8Gi
resources:
requests:
cpu: 500m
memory: 1Gi
limits:
cpu: 1
memory: 2Gi
# GKE Autopilot compatibility
podSecurityContext:
fsGroup: 1001
runAsUser: 1001
containerSecurityContext:
runAsNonRoot: true
allowPrivilegeEscalation: false
broker:
replicaCount: 1
persistence:
enabled: true
size: 8Gi
resources:
requests:
cpu: 500m
memory: 1Gi
limits:
cpu: 1
memory: 2Gi
# GKE Autopilot compatibility
podSecurityContext:
fsGroup: 1001
runAsUser: 1001
containerSecurityContext:
runAsNonRoot: true
allowPrivilegeEscalation: false
# GKE Autopilot compatibility: disable privileged init container
sysctlImage:
enabled: false
# Kafka topic configuration for Cadence visibility
autoCreateTopicsEnable: true
numPartitions: 4
defaultReplicationFactor: 1
# Configure replication factors for internal topics (demo/single-node setup)
offsetsTopicReplicationFactor: 1
transactionStateLogReplicationFactor: 1
transactionStateLogMinIsr: 1
# Provision topics at startup to avoid race conditions
provisioning:
enabled: true
topics:
- name: __consumer_offsets
partitions: 50
replicationFactor: 1
config:
cleanup.policy: compact
compression.type: producer
- name: cadence-visibility
partitions: 4
replicationFactor: 1
- name: cadence-visibility-dlq
partitions: 4
replicationFactor: 1
# Listener configuration
listeners:
client:
protocol: PLAINTEXT
controller:
protocol: PLAINTEXT
interbroker:
protocol: PLAINTEXT
# Service configuration
service:
type: ClusterIP
ports:
client: 9092

# Do NOT deploy Cassandra or MySQL
cassandra:
enabled: false
mysql:
enabled: false
4 changes: 3 additions & 1 deletion charts/cadence/examples/values.postgres.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,11 @@ postgresql:
enabled: true
size: 8Gi

# Do NOT deploy ES, Cassandra or MySQL
# Do NOT deploy ES, Kafka, Cassandra or MySQL
elasticsearch:
enabled: false
kafka:
enabled: false
cassandra:
enabled: false
mysql:
Expand Down
6 changes: 2 additions & 4 deletions charts/cadence/templates/server-configmap.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -219,10 +219,9 @@ data:
{{- end }}
{{- end }}
{{- end }}
{{- if ne .Values.config.persistence.elasticsearch.enabled true }}
{{- if and .Values.config.persistence.visibilityStore (not .Values.config.persistence.elasticsearch.enabled) }}
# Visibility datastore
{{ if .Values.config.persistence.visibilityStore -}}
{{ .Values.config.persistence.visibilityStore | default "visibility" }}:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we need this default visibility

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When using Elasticsearch with Kafka, visibility events flow through Kafka to ES. The SQL visibility datastore is not used. (current config)

In fact I found when BOTH visibilityStore and advancedVisibilityStore are configured, Cadence enters dual-write mode where it tries to write visibility events to BOTH datastores.

I encountered multiple errors when I did this, e.g.
{"level":"warn","msg":"requested visibility mode is not available, falling back to db"}
{"level":"error","msg":"Error writing to visibility: Operation is not supported"}

Through debugging I saw this happening:
First, Cadence tried to write to BOTH SQL and ES.
But, the SQL cadence_visibility database didn't exist (schema job skipped it because ES was enabled).
Writes to the SQL visibility failed with "Operation is not supported",
and visibility was broken

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pretty sure there is no change needed here. I've reverted your change and the plan looks exactly the same. Please revert it.

{{ .Values.config.persistence.visibilityStore }}:
{{- if eq .Values.config.persistence.database.driver "cassandra" }}
nosql:
pluginName: "cassandra"
Expand Down Expand Up @@ -385,7 +384,6 @@ data:
{{- end }}
{{- if .Values.config.persistence.database.sql.tls.serverName }}
serverName: {{ .Values.config.persistence.database.sql.tls.serverName | quote }}
{{- end }}
{{- end }}
{{- end }}
{{- end }}
Expand Down