ThalesGroup/helm-spray

Multiple values files in the umbrella chart

Closed this issue · 1 comments

An umbrella chart gathers the various micro-services of a solution into a unit of deployment. Each micro-services has its own (sub-)chart, with its own set of default values (i.e. the values.yaml file located in each micro-service chart) for the parameters that can be set by the Dev team: this fits very well with the micro-services architecture pattern where micro-services decoupling is a key point.

The umbrella chart is built by Ops for the solution, and the topology of the solution may lead to set additional micro-services parameters, or to overwrite values already set at micro-service level by the Dev. This is done in the default values file of the umbrella chart (i.e. the values.yaml file located in the umbrella chart directory), but having a single file for that is not very convenient, for the following reasons:

  • The more micro-services you have in the solution, the bigger this file is. This leads to a file that is difficult to read and to maintain, as it should be re-built at each individual micro-service delivery, using diffs or by concatenating several files within a single big one (risk of human errors).
  • Having a single file breaks the "decoupling" principle of a micro-service architecture as all data for all micro-services shall be gathered within a single file while it could still be isolated (aka decoupled) per micro-services.

It would consequently be good that several values files may be located within the solution chart directory, ideally/for example one for each micro-service.
Then, as Helm anyway only allows reading a single values.yaml file, an "include" mechanism may be defined so that this values.yaml file would include the other ones at specific part of the global values.yaml file.
Doing this, the micro-services keep decoupled, the solution's values can be managed properly at the granularity of a micro-service, and the solutions' values.yaml file just gathers all data.

Solved by #21