当前位置: 首页 > 面试题库 >

Helm _helpers.tpl:在其他模板定义中调用已定义的模板

家弘业
2023-03-14
问题内容

Helm允许在Kubernetes的资源文件中使用Go模板。

_helpers.tpl通常使用一个名为的文件通过以下语法定义Go模板助手:

{{- define "yourFnName" -}}
{{- printf "%s-%s" .Values.name .Values.version | trunc 63 -}}
{{- end -}}

然后可以在*.yaml资源文件中使用它,如下所示:

{{ template "yourFnName" . }}

问题

如何在其他帮助程序定义中使用定义的帮助程序?

例如,如果我有一个用于应用程序名称的助手,并想在定义入口主机名的助手的定义中使用该助手,该怎么办?

我尝试了几种其他方式来调用其他定义中的帮助器。鉴于此基本辅助功能:

{{- define "host" -}}
{{- printf "%.example.com" <Somehow get result of "name" helper here> -}}
{{- end -}}

我尝试了以下方法:

{{- printf "%.example.com" {{ template "name" . }} -}}
{{- printf "%.example.com" {{- template "name" . -}} -}}
{{- printf "%.example.com" ( template "name" . ) -}}
{{- printf "%.example.com" template "name" . -}}
# Separator
{{- $name := {{ template "environment" . }} -}}
{{- printf "%.example.com" $name -}}
# Separator
{{- $name := template "environment" . -}}
{{- printf "%.example.com" $name -}}
# Separator
{{- $name := environment -}}
{{- printf "%.example.com" $name -}}

有可能做到这一点吗?如果是这样,怎么办?


问题答案:

您应该使用嵌套模板定义。

在您的特定情况下是:

{{- define "host" -}}
{{ template "name" . }}.example.com
{{- end -}}


 类似资料:
  • 在 cmf中模板就是一个 html 文件,可分为前台模板文件和后台模板文件; 前台模板位于 themes 目录下,后台模板位于 admin/themes 目录下,前后台都是多主题机制的,可以分开设置不同的主题; 前台默认模板是 simplebootx,以后也可能会换,我们先以这个为例; 这是前台模板的结构;应用之间彼此分开,Portal目录下就对应的是application/Portal应用的模板

  • 正如我们已经描述过的,模板可以使用在数据模型中定义的变量。 在数据模型之外,模板本身也可以定义变量来使用。 这些临时变量可以使用FTL指令来创建和替换。请注意每一次的 模板执行 工作都维护它自己的私有变量, 同时来渲染页面。变量的初始值是空,当模板执行工作结束这些变量便被销毁了。 可以访问一个在模板里定义的变量,就像是访问数据模型根root上的变量一样。 这个变量比定义在数据模型中的同名参数有更高

  • 从MinDoc v0.13及以上版本开始支持自定义模板(仅Markdown编辑器)。 创建自定义模板 用户可在编辑项目时将编辑器内的内容报错为模板: 点击保存按钮右侧的公文包按钮会弹出保存为模板的界面: 填写模板名称点击立即保存即可。 全局模板是指,在其他项目中可用,目前仅支持管理员保存全局模板,非管理员及时选中了全局,保存时也是仅项目内可用。 使用自定义模板 点击编辑器上的模板按钮可以显示选择模

  • 问题内容: 我有一个使用Bootstrap中的标记的表单,如下所示: 这里有很多样板代码,我想简化为一个新的指令-form-input,如下所示: 产生: 我通过一个简单的模板完成了很多工作。 但是,当我开始添加更多高级功能时,我就陷入了困境。 如何在模板中支持默认值? 我想在指令中将“ type”参数公开为可选属性,例如: 但是,如果未指定任何内容,则默认为。我该如何支持? 如何根据属性的存在/

  • “模板”在E立方中是一个非常重要的概念,简单来说,“模板”就是表单的样式 + 各种规则。        在各企事业单位中,信息的载体主要就是各种表单,这些表单的样式和要求在不同行业、不同单位之间的差别是很大的,在这种情况下,即使有很多宣称是行业通用的软件,也还是不能完全满足各个单位的实际需要,也就是说你要么只能使用其中的部分功能,要么就要将就软件的要求来改变自己的表单格式,我想这两种选择都不是你的

  • 以下模板部署: https://gist.github.com/rnkhouse/aea0a8fd395da37b19466348b919d620 错误: “部署失败,状态代码为400,消息:部署模板验证失败:'模板中未定义资源'Microsoft.Network/virtualNetworks/mtes dev VNET'。请参阅。”https://aka.ms/arm-template有关用法