TRG 5.01 - Helm Chart requirements
Status | Created | Post-History |
---|---|---|
Update | 29-Feb-2024 | restructuring and rewording |
Active | 10-Nov-2022 | Initial 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
andappVersion
in theChart.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
.