【问题标题】:kubernetes template rendering doesn't work second timekubernetes 模板渲染第二次不起作用
【发布时间】:2022-01-24 23:50:27
【问题描述】:

我有两个文件“install-charts.sh”和“MANIFEST”,它们从相同/通用的命名模板“input-generator.getReleasesByInstallSequence”中填写数据。它接受两个值的 aary,其中第一个值是顶级值,第二个是当前模板化的元素并返回一个列表。

This takes an array of two values:
- top-level values
- current element being templated
Returns releaseBatches
*/}}
{{- define "input-generator.getReleasesByInstallSequence" -}}
{{- $top := index . 0 -}}
{{- $element := index . 1 -}}
{{- $releaseBatches := list }}

此模板返回一个列表,其中包含一些图表详细信息,供 install-charts.sh 和 MANIFEST 文件使用。这就是我保存退货清单的方式

  {{- $releaseBatches := get ((include "input-generator.getReleasesByInstallSequence" (tuple $ $element)) | fromYaml) "releaseBatches" }}

install-charts 和 MANIFEST 在 python 脚本中都是 yaml.safe_load(fileName)。

问题是两个渲染没有一起发生。我的意思是无论是 install-charts.sh 还是 MANIFEST 中的任何人都可以得到正确的数据,而其他人什么都得不到。注意:代码很好,并提供所需的任何数据。问题是在每个文件中执行上述模板代码时,它没有向两个文件提供数据。我浪费了两天时间,但找不到任何关于此的内容。

我尝试了什么 我尝试制作两个模板,但名称不同但签名和参数相同,然后也是上述相同的问题。

【问题讨论】:

  • 使用的是哪个helm 版本?
  • helm3 版本

标签: kubernetes kubernetes-helm helm-templates


【解决方案1】:

解决方案非常简单。我花了一些时间才知道。是deepCopy 完成了这项工作。可以搜索 Python 的deepCopy,在 kubernetes 模板函数中是一样的。所以最终的解决方案就变成了

{{- define "input-generator.getReleasesByInstallSequence" -}}
{{- $top := deepCopy (index . 0) -}}
{{- $element := index . 1 -}}
{{- $releaseBatches := list }}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-12
    • 2018-01-23
    • 2017-04-02
    • 1970-01-01
    • 2019-06-04
    • 2022-08-02
    • 2019-03-04
    • 1970-01-01
    相关资源
    最近更新 更多