Skip to main content

TRG 5.01 - Helm Chart requirements

StatusCreatedPost-History
Update29-Feb-2024restructuring and rewording
Active10-Nov-2022Initial release

Why

Eclipse Tractus-X consists of many independent and dependent components and products. While previously software was installed through installers like setup.exe or linux packages, in the cloud native world with kubernetes, the alignment options on how to setup is limited.

One versatile and well known industry standard are helm charts.

Description

All Eclipse Tractus-X components must be installable via Helm and meet following requirements. The product's Helm chart has to meet all of these criteria!

  • Helm chart must be released.
  • Appropriate versioning strategy must be used for version and appVersion in the Chart.yaml file
  • The released Helm chart must not contain any environment specific values-xyz.yaml files
  • Helm chart must be configurable via the values.yaml file by using proper default values/placeholders. See more details here.
  • Default values file must not contain references to any secret engine services (e.g.: Hashicorp Vault)
  • Helm chart must be deployable to any environment without overwriting default values with a simple helm install command
  • If there is an Ingress resource present, it can be turned off, and it is disabled by default
  • Helm Chart dependencies have to be declared in the Chart.yaml file

Released Helm Charts

Eclipse Tractus-X components can only be used and bundled with other components of Tractus-X if there is a version of the component with reliable content. This can only be achieved by creating a release of your Helm chart.

We recommend to use GitHub Chart Releaser Action.

Versioning

Versioning is essential when it comes to releasing Helm charts. In an ideal world your chart version (defined in version inside Chart.yaml) matches the application version (defined in appVersion inside Chart.yaml) which the Helm chart will deploy. This makes it for users easier to get an idea what will be installed in which version. Please refer also to TRG 5.03 - Version strategy.

To achieve a proper versioning of your Helm chart keep in mind, that it shall not contain version information that could change outside the Helm chart, e.g. container image tags (-> don't use container image tag latest).

The values.yaml File

The values.yaml file is essential for Helm charts. The file must contain all values the chart is expecting and there must be no other values files except of values.yaml file. Released Helm charts must contain only values.yaml file. More rules and best practices for the file can be found here.

Dependencies

If a Helm chart has dependencies to other Helm charts, e.g. PostgreSQL, these dependencies must be specified in the Chart.yaml file. Do not use outdated requirements.yaml.