@Giovanni Bassi 的回答仅适用于掌舵。该include
函数在helm
此处定义。
结合indent
来自sprig
@tmirks 的答案,你会得到:
func renderTemplate(templatePath string, vars interface{}, out io.Writer) error {
t := template.New(filepath.Base(templatePath))
var funcMap template.FuncMap = map[string]interface{}{}
// copied from: https://github.com/helm/helm/blob/8648ccf5d35d682dcd5f7a9c2082f0aaf071e817/pkg/engine/engine.go#L147-L154
funcMap["include"] = func(name string, data interface{}) (string, error) {
buf := bytes.NewBuffer(nil)
if err := t.ExecuteTemplate(buf, name, data); err != nil {
return "", err
}
return buf.String(), nil
}
t, err := t.Funcs(sprig.TxtFuncMap()).Funcs(funcMap).ParseFiles(templatePath)
if err != nil {
return err
}
err = t.Execute(out, &vars)
if err != nil {
return err
}
return nil
}
然后
{{ include "pod" | indent 4 }}