Release values inheritance #726
Vince-Chenal
started this conversation in
Ideas
Replies: 2 comments 8 replies
-
|
@Vince-Chenal Hey! Thanks a lot for this detailed write-up. It did help me understand the context of this feature request. To be sure, could you clarify this to be about adding a way to pass inputs to a release values template file |
Beta Was this translation helpful? Give feedback.
7 replies
-
|
In my opinion. it makes helmfile become more complex. |
Beta Was this translation helpful? Give feedback.
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Context
Hello,
We have started experimenting with helmfile in our company and intend to use it on a fairly large scale, and we think that for some of our more complex use cases, we have found a possible usability improvement to reduce duplication.
It appears others have also expressed a similar need (here or here) in the past, and we’d like to know if our approach makes sense for helmfile and ensure that we have a full understanding of the impact of our proposed changes.
Problem
We understand that today the layering mechanism allows for reusing previously defined values.
Example:
Some of our more complex use cases require many layers, which makes the corresponding helmfiles quite verbose and unwieldy. We therefore would like your opinion on the proposed improvement, which we believe to be fairly intuitive and concise.
Proposition
While generating the temporary values files (here) it would be feasible to load the rendered yamls in memory (in RenderedValues) so that we can inherit the "previously defined values".
More complex example:
helmfile.yaml
defaults.yaml
production-values.yaml
common.yaml.gotmpl
common-production.yaml.gotmpl
values.yaml.gotmpl
The goal here is to have some defaults that define the common way for building the application URL and allow overriding it on a per-environment logic. We could generalize this logic per project, per env, per region...
Here's what we would get depending on the environment:
dev:
production:
Implementation
We have provided a demonstration implementation in this PR (we don’t expect it to be mergeable as-is) and we’d be happy to discuss some more about it.
If it makes sense, a similar could be also be used for the
environmentsblocks.Beta Was this translation helpful? Give feedback.
All reactions