Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/vivid-money/helm-plugin-render-values
Render helm values-files from others
https://github.com/vivid-money/helm-plugin-render-values
helm helm-plugin helm-plugins kubernetes yaml
Last synced: 3 months ago
JSON representation
Render helm values-files from others
- Host: GitHub
- URL: https://github.com/vivid-money/helm-plugin-render-values
- Owner: vivid-money
- License: apache-2.0
- Created: 2021-09-08T08:45:15.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2023-10-23T14:08:35.000Z (over 1 year ago)
- Last Synced: 2024-06-20T11:13:51.663Z (8 months ago)
- Topics: helm, helm-plugin, helm-plugins, kubernetes, yaml
- Language: Go
- Homepage:
- Size: 3.91 MB
- Stars: 10
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# helm-plugin-render-values
The `helm-plugin-render-values` is a Helm downloader plugin that enhances the rendering of templated values.
This plugin is particularly useful when working with third-party charts that don't have the tpl() function for values, but you still want to utilize it.
Feel free to explore the capabilities of this plugin and enjoy a more streamlined and efficient Helm charting experience!
## Install
Use helm CLI to install this plugin:
```
$ helm plugin install https://github.com/vivid-money/helm-plugin-render-values --version 0.2.3
```## Usage
```
helm upgrade name . -f render://templated-values.yaml
```
templated-values.yaml should looks like this
```
## Extra files values imorted from. They must not have templating
importValuesFrom:
- base-values1.yaml
- base-values2.yaml
- services/*/deploy.yaml
- services/*/env/dev.yaml## Extra files with templating to render. They should have templating
extendRenderWith:
- extended-values1.yamlmyapp:
cluster: {{ .Values.clusterName }}
enabled: {{ .Values.enabled }}
{{if .Values.default }}
run: {{ .Values.default }}
{{- end }}
```
### *importValuesFrom*
- The `importValuesFrom` keyword allows you to specify a list of sources for values to render them.
- These files should not contain any templating. Only values for templating!
- If you use `importValuesFrom` with a pattern, the values will be nested under the corresponding folder structure. For example, if you have values in files under the `folder1/folder2` directory, they will be nested under `"folder1"."folder2"` in the rendered values.
- The values specified in `importValuesFrom` will be merged, and if there are conflicting keys, the last imported value will override the first one.### *extendRenderWith*
- The `extendRenderWith` section specifies a list of files with templating to render. These files can contain templating logic. In the example, values are extended from extended-values1.yaml### Self values rendering
If neither `importValuesFrom` nor `extendRenderWith` is specified in the file, the values will be taken from the same file, and the file itself will be used for template rendering.- Since this file renders values based on its own values, templating will only work with a single level of nesting. For example, if we define param1: value1, we can use it for param2: {{ .Values.param1 }}, but we cannot use param2 to generate the next value.
- The plugin doesn't know about `.Release` values!
- Another limitation is that you cannot use string values with `{{ xxx }}` in the main file that should not be rendered (e.g., passing strings with templating for Prometheus rules).
Example:
`helm upgrade releasename -f render://test-values.yaml`
```test-values.yaml
env: dev
namespace: release-{{.Value.env}}
hostname: service-{{.Value.env}}.domain.com
```
## Notesv0.2.3
- update go to 1.20
- add test for glob import files
- fix glob import filesv0.2.2
- update go to 1.19
- added tests
- update READMEv0.2.1
- importValuesFrom now can been set with files patternv0.2.0
- add "extendRenderWith" key to include those files to output render
- fix mergeKeys funcv0.1.3
- fixed all from previous(0.1.2) note
- could use "self" in importValuesFrom***
## Development
Run tests
`go test ./tests/ -v`