【发布时间】:2017-08-07 00:14:45
【问题描述】:
我有一个 k8s 资源的通用模板,我想将它扩展 n 次(如果你好奇,我可以创建一个 mongo 集群的 n 个成员,并且他们正在使用 statefulset 资源,以便每个成员都有一个稳定的网络名称)。
显然我每次循环都需要不同的值。我正在循环由 Sprig“直到”函数生成的一系列索引。但是循环的 $index 没有在“。”中设置。命名空间。所以我无法在我的 _helpers.tpl 文件中引用我定义的模板中的当前迭代。
这是一个带有完整 k8s 资源 yaml 的示例模板(我是其中大部分的缩写):
{{- define "mytest" -}}
---
apiVersion: apps/v1beta1
kind: StatefulSet
abbreviated...
containers:
- name: mongod-$index
abbreviated...
{{- end -}}
来电者:
{{ range $index, $e := until .Values.mongod_count }}
{{include "mytest" .}}
{{ end}}
我刚刚得到:未定义的变量“$index”
我也尝试过使用块,例如在我的(调用者)模板中:
{{ $foo := "somevalue" }}
{{ define "my_extra_labels" }} bla {{ .Values.test }}_{{$foo}}{{end}}
{{ template "mytest" . }}
这在我的 _helpers.tpl 中
{{/* Test stuff */}}
{{- define "mytest" -}}
hello: world_how_are_{{ block "my_extra_labels" . }}{{ end }}
{{- end -}}
变量 $foo 未在“define”主体中定义。
这个模板作用域感觉非常受限制,以至于我现在看不出如何使用它来解决我当前的情况。
有没有办法将变量推入“。”命名空间?如果是这样(我的手指交叉)有没有办法以某种方式合并命名空间,以便我仍然可以访问 .Values 和 .Chart 变量?
【问题讨论】:
标签: kubernetes-helm