Understanding helm

See also the official helm documentation. This page is meant to explain a few concepts directly relevant when installing wire-server helm charts.

Overriding helm configuration settings

Default values

Default values are under a specific chart’s values.yaml file, e.g. for the chart named cassandra-ephemeral, this file: charts/cassandra-ephemeral/values.yaml. When you install or upgrade a chart, with e.g.:

helm upgrade --install my-cassandra wire/cassandra-ephemeral

Then the default values from above are used.

Overriding

Overriding parts of the yaml configuration can be achieved by passing -f path/to/override-file.yaml when installing or upgrading a helm chart, like this:

Create file my-file.yaml:

cassandra-ephemeral:
  resources:
    requests:
      cpu: "2"

Now you can install that chart with a custom value (using 2 cpu cores):

helm upgrade --install my-cassandra wire/cassandra-ephemeral -f my-values.yaml

Sub charts

If a chart uses sub charts, there can be overrides in the parent chart’s values.yaml file, if namespaced to the sub chart. Example: if chart parent includes chart child, and child’s values.yaml has a default value foo: bar, and the parent chart’s values.yaml has a value

child:
  foo: baz

then the value that will be used for foo by default is baz when you install the parent chart.

Note that if you helm install parent but wish to override values for child, you need to pass them as above, indented underneath child: as above.

Multiple overrides

If -f <filename> is used multiple times, the last file wins in case keys exist multiple times (there is no merge performed between multiple files passed to -f). This can lead to unexpected results. If you use multiple files with -f, ensure they don’t overlap.