feat(templater): Add insertTemplate function
Similar to insertFile, but runs the templating against the file before inserting. This is useful for sharing common config between yaml files, e.g. volume mounts in a deployment.yaml and cronjob.yaml, and it's useful to be able to use the `configHash` annotation pattern with a templated configmap.yaml
This commit is contained in:
parent
8abe03de3c
commit
6353ed9d14
2 changed files with 11 additions and 1 deletions
|
@ -72,13 +72,15 @@ right.
|
||||||
|
|
||||||
Some template functions come from Go's standard library and are listed in the
|
Some template functions come from Go's standard library and are listed in the
|
||||||
[Go documentation][]. In addition the functions declared by [sprig][] are
|
[Go documentation][]. In addition the functions declared by [sprig][] are
|
||||||
available in kontemplate, as well as three custom functions:
|
available in kontemplate, as well as five custom functions:
|
||||||
|
|
||||||
* `json`: Encodes any supplied data structure as JSON.
|
* `json`: Encodes any supplied data structure as JSON.
|
||||||
* `gitHEAD`: Retrieves the commit hash at Git `HEAD`.
|
* `gitHEAD`: Retrieves the commit hash at Git `HEAD`.
|
||||||
* `passLookup`: Looks up the supplied key in [pass][].
|
* `passLookup`: Looks up the supplied key in [pass][].
|
||||||
* `insertFile`: Insert the contents of the given file in the resource
|
* `insertFile`: Insert the contents of the given file in the resource
|
||||||
set folder as a string.
|
set folder as a string.
|
||||||
|
* `insertTemplate`: Insert the contents of the given template in the resource
|
||||||
|
set folder as a string.
|
||||||
|
|
||||||
## Examples:
|
## Examples:
|
||||||
|
|
||||||
|
|
|
@ -205,6 +205,14 @@ func templateFuncs(c *context.Context, rs *context.ResourceSet) template.FuncMap
|
||||||
|
|
||||||
return string(data), nil
|
return string(data), nil
|
||||||
}
|
}
|
||||||
|
m["insertTemplate"] = func(file string) (string, error) {
|
||||||
|
data, err := templateFile(c, rs, path.Join(rs.Path, file))
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
return data.Rendered, nil
|
||||||
|
}
|
||||||
m["default"] = func(defaultVal interface{}, varName string) interface{} {
|
m["default"] = func(defaultVal interface{}, varName string) interface{} {
|
||||||
if val, ok := rs.Values[varName]; ok {
|
if val, ok := rs.Values[varName]; ok {
|
||||||
return val
|
return val
|
||||||
|
|
Loading…
Add table
Reference in a new issue