You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/reference/announcements-release-notes/890/890-announcements.md
+41-1Lines changed: 41 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -333,6 +333,46 @@ To learn more, see the [8.9.0-alpha1 release notes](/reference/announcements-rel
333
333
</div>
334
334
<divclassName="release-announcement-content">
335
335
336
+
#### Helm chart: `extraConfiguration` format changed from map to ordered list
337
+
338
+
The `<componentName>.extraConfiguration` Helm value has changed from a **map** (key-value pairs) to an **ordered list** of `file`/`content` entries. This ensures configuration entries are always applied in the order you define them, since maps in Go templates do not guarantee iteration order.
339
+
340
+
The old map format is **not supported** in Camunda 8.9. If you upgrade without converting to the new list format, Helm will fail during template rendering.
341
+
342
+
**Before (8.8 — map):**
343
+
344
+
```yaml
345
+
identity:
346
+
extraConfiguration:
347
+
custom-logging.yaml: |
348
+
logging:
349
+
level:
350
+
ROOT: DEBUG
351
+
```
352
+
353
+
**After (8.9 — ordered list):**
354
+
355
+
```yaml
356
+
identity:
357
+
extraConfiguration:
358
+
- file: custom-logging.yaml
359
+
content: |
360
+
logging:
361
+
level:
362
+
ROOT: DEBUG
363
+
```
364
+
365
+
See [Migrate extraConfiguration from 8.8 to 8.9](/self-managed/deployment/helm/configure/application-configs.md#migrate-extraconfiguration-from-88-to-89) for detailed migration steps.
#### Elasticsearch subchart no longer enabled by default
337
377
338
378
Previously, the Elasticsearch subchart was enabled by default. To use OpenSearch, you would need to disable Elasticsearch and enable OpenSearch.
@@ -512,7 +552,7 @@ To learn more, see the [8.9.0-alpha2 release notes](/reference/announcements-rel
512
552
513
553
Camunda 8.9 adds support for H2, MariaDB, and MySQL as relational databases for Web Modeler.
514
554
515
-
This enhancement aligns Web Modeler’s database configuration with the Orchestration cluster, ensuring consistent setup and improved integration across environments.
555
+
This enhancement aligns Web Modeler's database configuration with the Orchestration cluster, ensuring consistent setup and improved integration across environments.
516
556
517
557
:::info
518
558
To learn more, see the [8.9.0-alpha1 release notes](/reference/announcements-release-notes/890/890-release-notes.md#web-modeler-rdbms-support-h2-mariadb-mysql).
description: "Learn how to configure individual Camunda components in Helm charts."
6
6
---
7
7
8
-
This page explains how to configure Camunda components in Helm charts. You can define options in `values.yaml` and provide custom files for additional configuration.
8
+
This page explains how to configure Camunda components in Helm charts.
9
+
10
+
For most use cases, use `<componentName>.extraConfiguration` to add or override properties while keeping the chart-provided defaults. Use `<componentName>.configuration` only when you intentionally want to replace the entire default application configuration file.
11
+
12
+
For the complete list of configuration options per component, see the [Self-Managed Components documentation](../../../components/orchestration-cluster/overview.md) (this is where each component documents its supported application configuration).
9
13
10
14
## Prerequisites
11
15
@@ -17,22 +21,70 @@ This page explains how to configure Camunda components in Helm charts. You can d
|`<componentName>.configuration`| string | Full application configuration content (for example, the contents of `application.yaml`). |
23
-
|`<componentName>.extraConfiguration`| list| Additional configuration entries. Each entry has a `file` (filename) and `content` (file contents). Behavior depends on the component — see [how it works per component](#how-extraConfiguration-works-per-component).|
|`<componentName>.extraConfiguration`| list|**Recommended:** Additional configuration entries layered on top of the default configuration. Each entry has a `file` (filename) and `content` (file contents). See [how it works per component](#how-extraconfiguration-works-per-component).|
27
+
|`<componentName>.configuration`| string |**Advanced:** Full application configuration file content (for example, the full contents of `application.yaml`). Using this **replaces** the component's default application configuration. |
24
28
25
29
### Configuration options
26
30
27
31
Two Helm values are available for component configuration:
28
32
29
-
-`<componentName>.configuration`
30
33
-`<componentName>.extraConfiguration`
34
+
-`<componentName>.configuration`
35
+
36
+
:::tip Which should I use?
37
+
38
+
- Use `<componentName>.extraConfiguration`. It keeps the chart-provided defaults intact and lets you add/override only the keys you need.
39
+
- Use `<componentName>.configuration` only if you intentionally want to take full control of the application's configuration file. It **overwrites** the default config and can affect startup behavior and upgrades.
40
+
:::
41
+
42
+
#### componentName.extraConfiguration
43
+
44
+
Use `<componentName>.extraConfiguration` to add or override configuration **without replacing** the component's default configuration. This option accepts an **ordered list** of entries, where each entry specifies a `file` name and its `content`. Entries are processed in order, so **later entries override earlier ones** for duplicate keys — mimicking Spring Boot's `spring.config.import` semantics.
45
+
46
+
:::info Recommended default
47
+
Start with `<componentName>.extraConfiguration` whenever possible. It is safer for upgrades because the Helm chart can continue to evolve its defaults while you only maintain the deltas you actually care about.
48
+
:::
49
+
50
+
```yaml
51
+
identity:
52
+
extraConfiguration:
53
+
- file: logging-debug.yaml
54
+
content: |
55
+
logging:
56
+
level:
57
+
ROOT: DEBUG
58
+
io.camunda.identity: DEBUG
59
+
- file: logging-production.yaml
60
+
content: |
61
+
logging:
62
+
level:
63
+
ROOT: INFO
64
+
io.camunda.identity: INFO
65
+
```
66
+
67
+
In this example, `logging-production.yaml` is applied after `logging-debug.yaml`, so the final effective log level is `INFO` (last writer wins).
68
+
69
+
:::note Why an ordered list?
70
+
Previous versions of the Helm chart used a map (key-value pairs) for `extraConfiguration`. Maps in Go (and Helm) do not guarantee iteration order. Since configuration layering is order-dependent, `extraConfiguration` now uses an array to ensure entries are always applied in the order you define them.
71
+
:::
31
72
32
73
#### componentName.configuration
33
74
34
75
Use `<componentName>.configuration` to define an application configuration file directly in `values.yaml`.
35
76
77
+
:::caution Advanced option (overwrites defaults)
78
+
When you set `<componentName>.configuration`, the Helm chart renders **your content as the entire application configuration file** for that component.
79
+
80
+
This means:
81
+
82
+
- You are responsible for including any settings that the chart normally provides by default.
83
+
- During upgrades, configuration format or default changes may require you to update your configuration before the component can start.
84
+
85
+
Prefer `<componentName>.extraConfiguration` unless you specifically need to replace the full file.
86
+
:::
87
+
36
88
For example, `application.yaml`:
37
89
38
90
```yaml
@@ -60,36 +112,14 @@ orchestration:
60
112
number-of-replicas: "1"
61
113
```
62
114
63
-
#### componentName.extraConfiguration
64
-
65
-
Use `<componentName>.extraConfiguration` to provide additional configuration overrides. This option accepts an **ordered list** of entries, where each entry specifies a `file` name and its `content`. Entries are processed in order, so **later entries override earlier ones** for duplicate keys — mimicking Spring Boot's `spring.config.import` semantics.
66
-
67
-
```yaml
68
-
identity:
69
-
extraConfiguration:
70
-
- file: logging-debug.yaml
71
-
content: |
72
-
logging:
73
-
level:
74
-
ROOT: DEBUG
75
-
io.camunda.identity: DEBUG
76
-
- file: logging-production.yaml
77
-
content: |
78
-
logging:
79
-
level:
80
-
ROOT: INFO
81
-
io.camunda.identity: INFO
82
-
```
83
-
84
-
In this example, `logging-production.yaml` is applied after `logging-debug.yaml`, so the final effective log level is `INFO` (last writer wins).
115
+
### Default properties
85
116
86
-
:::note Why an ordered list?
87
-
Previous versions of the Helm chart used a map (key-value pairs) for `extraConfiguration`. Maps in Go (and Helm) do not guarantee iteration order. Since configuration layering is order-dependent, `extraConfiguration` now uses an array to ensure entries are always applied in the order you define them.
88
-
:::
117
+
The `helm template` command can show you the application's default configuration as rendered by the chart.
89
118
90
-
### Default properties
119
+
- Use this output as a **reference** to discover the right keys and defaults.
120
+
- Only copy the full content into `<componentName>.configuration` if you intentionally want to **replace** the default config (advanced).
91
121
92
-
The `helm template` command generates the application's default configuration. Keep the original `values.yaml` unchanged and maintain a separate file with your custom settings. For details, see [Creating your own values files](self-managed/deployment/helm/chart-parameters.md#creating-your-own-values-files). To generate the default configuration, replace `<your-release-name>` with your release name and run:
122
+
Keep the original `values.yaml` unchanged and maintain a separate file with your custom settings. For details, see [Creating your own values files](self-managed/deployment/helm/chart-parameters.md#creating-your-own-values-files). To generate the default configuration, replace `<your-release-name>` with your release name and run:
The `--show-only` flag prints the `configmap`. Copy the `application.yml` content and place it under the appropriate `<component>.configuration` key in `values.yaml`.
131
+
The `--show-only` flag prints the `configmap`.
132
+
133
+
- If you are using `<componentName>.extraConfiguration`, use the rendered `application.yml` to identify the correct keys and then add only the overrides you need.
134
+
- If you are using `<componentName>.configuration`, copy the full `application.yml` content, modify it, and place it under the appropriate `<component>.configuration` key in `values.yaml`.
102
135
103
136
### How extraConfiguration works per component
104
137
@@ -168,7 +201,7 @@ camunda:
168
201
`console.overrideConfiguration`is the old way of overriding the default application configuration for Console. It has been deprecated. Please convert to using `console.extraConfiguration`.
169
202
:::
170
203
171
-
#### Customer Configuration Loading
204
+
#### Custom configuration loading
172
205
173
206
**Applies to:** Optimize
174
207
@@ -393,7 +426,35 @@ zeebe:
393
426
394
427
### Step 5: Add the configuration to `values.yaml`
395
428
396
-
Finally, place the updated configuration under `zeebe.configuration` in `values.yaml`:
429
+
Prefer adding the new settings via `zeebe.extraConfiguration` so you only maintain the keys you changed and keep the chart-provided defaults.
If you intentionally want to fully control Zeebe's `application.yml`, place the full configuration under `zeebe.configuration`.
455
+
456
+
This replaces the chart's default configuration and may require updates during upgrades.
457
+
:::
397
458
398
459
```yaml
399
460
zeebe:
@@ -424,7 +485,6 @@ zeebe:
424
485
# - technicalProcess
425
486
# variableNameInclusionStartWith:
426
487
# - businessTotal
427
-
prefix: "zeebe-record"
428
488
gateway:
429
489
enable: true
430
490
network:
@@ -511,16 +571,126 @@ Here, the bucket name is set twice. The environment variable `zeebetest1` overri
511
571
512
572
### Limitations
513
573
514
-
Customizing the `configuration` option will replace the entire contents of the configuration file. During upgrades, if the `configuration` option remains and if there are any application-level breaking changes to the configuration file format, this may cause the application component to crash.
574
+
Setting the `configuration` option replaces the entire contents of the application's configuration file. During upgrades, if the `configuration` option remains and there are breaking changes to the configuration file format or required defaults, this can prevent the component from starting.
515
575
516
-
- The `configuration` option replaces the entire configuration file. During upgrades, if the file format changes, the component may fail to start until the configuration is updated.
576
+
- Use `extraConfiguration` by default so you only maintain a small set of overrides.
577
+
- The `configuration` option is an advanced override: if the file format or defaults change, the component may fail to start until you update your full configuration.
517
578
- Forgetting to wrap multiline values with (`|`) in Helm can cause parse errors.
518
579
- Mixing `env` and `configuration` for the same property without realizing precedence can lead to unexpected results.
519
580
581
+
## Migrate extraConfiguration from 8.8 to 8.9
582
+
583
+
In Camunda 8.8 and earlier, `<componentName>.extraConfiguration` was a **map** where each key was a filename and each value was the file content:
584
+
585
+
```yaml
586
+
# 8.8 format (map)
587
+
identity:
588
+
extraConfiguration:
589
+
custom-logging.yaml: |
590
+
logging:
591
+
level:
592
+
ROOT: DEBUG
593
+
io.camunda.identity: DEBUG
594
+
custom-cache.yaml: |
595
+
spring:
596
+
cache:
597
+
type: caffeine
598
+
```
599
+
600
+
Starting with Camunda 8.9, `<componentName>.extraConfiguration` is an **ordered list** of entries, where each entry has a `file` (filename) and `content` (file contents):
601
+
602
+
```yaml
603
+
# 8.9 format (ordered list)
604
+
identity:
605
+
extraConfiguration:
606
+
- file: custom-logging.yaml
607
+
content: |
608
+
logging:
609
+
level:
610
+
ROOT: DEBUG
611
+
io.camunda.identity: DEBUG
612
+
- file: custom-cache.yaml
613
+
content: |
614
+
spring:
615
+
cache:
616
+
type: caffeine
617
+
```
618
+
619
+
### Why this changed
620
+
621
+
Maps in Go templates (used by Helm) do not guarantee iteration order. Since configuration layering is order-dependent — later entries override earlier ones for the same keys — the map format could produce unpredictable results. The ordered list format ensures entries are always applied in the sequence you define them.
622
+
623
+
### Migration steps
624
+
625
+
For every component where you use `extraConfiguration`, convert each map entry to a list entry:
626
+
627
+
1. **Identify all components** in your `values.yaml` that use `extraConfiguration` (for example, `identity`, `orchestration`, `connectors`, `optimize`, `console`, `webModeler`).
628
+
629
+
2. **Convert each map entry to a list entry.** For every key-value pair in the old map, create a list item with `file:` set to the former key and `content:` set to the former value.
630
+
631
+
**Before (8.8):**
632
+
633
+
```yaml
634
+
orchestration:
635
+
extraConfiguration:
636
+
backup-s3.yaml: |
637
+
zeebe:
638
+
broker:
639
+
data:
640
+
backup:
641
+
store: "S3"
642
+
s3:
643
+
bucketName: "my-bucket"
644
+
custom-threads.yaml: |
645
+
zeebe:
646
+
broker:
647
+
threads:
648
+
cpuThreadCount: "4"
649
+
```
650
+
651
+
**After (8.9):**
652
+
653
+
```yaml
654
+
orchestration:
655
+
extraConfiguration:
656
+
- file: backup-s3.yaml
657
+
content: |
658
+
zeebe:
659
+
broker:
660
+
data:
661
+
backup:
662
+
store: "S3"
663
+
s3:
664
+
bucketName: "my-bucket"
665
+
- file: custom-threads.yaml
666
+
content: |
667
+
zeebe:
668
+
broker:
669
+
threads:
670
+
cpuThreadCount: "4"
671
+
```
672
+
673
+
3. **Order entries intentionally.** If two entries set the same configuration key, the **last entry in the list wins**. Arrange entries so that your highest-priority overrides appear last.
674
+
675
+
4. **Validate your configuration** before upgrading by running `helm template` with your updated values file and verifying the rendered ConfigMaps:
5. **Proceed with the upgrade** using the updated values file. See the [8.8 to 8.9 upgrade guide](/self-managed/upgrade/helm/880-to-890.md) for additional steps.
684
+
685
+
:::caution
686
+
The old map format is **not supported** in Camunda 8.9. If you upgrade without converting to the list format, Helm will fail during template rendering.
687
+
:::
688
+
520
689
## References
521
690
522
691
For more details on where to find configuration options for specific components, see the following pages:
0 commit comments