【发布时间】:2019-01-04 08:52:00
【问题描述】:
我想要做什么
我想在values.yaml 中有一些默认设置和选项,然后是不同实例的哈希映射,将转换为服务和部署,其个别设置会覆盖默认值。
values.yaml
someSetting: TheDefault
deployments:
one:
role: XYZ
two:
role: ABC
someSetting: Overridden
在上述情况下,将有两个部署和服务,one 和 two。 someSetting 的值对于 one 将是 TheDefault,对于 two 将是 Overridden。
actual template yaml
我正在尝试这个 - 构建一个字典 $p,其中包含根范围 Chart 和 Release 对象,然后合并根范围值,然后合并当前部署值在。
{{- range $deploymentKey, $deploymentVal := .Values.deployments }}
{{- $p := dict "deploymentKey" $deploymentKey }}
{{- $_ := set $p "Chart" $.Chart }}
{{- $_ := set $p "Release" $.Release }}
{{- $_ := merge $p $.Values }}
{{- $_ := merge $p . }}
...
{{- end }}
包含Chart 和Release 的原因是,尽管文档说,$.Chart 并不总是可用 - 当我将范围传递给模板并且该模板尝试使用 @987654339 时,它实际上是空的@ 引用根范围。
所以我正在做这样的事情:
name: {{ template "my-app.fullname" $p }}
和
image: {{ $p.image.name }}
错误
问题在于,虽然helm lint 没有返回错误,但helm template .(或试运行)会产生:
Error: rendering template failed: runtime error: invalid memory address or nil pointer dereference
我尝试过的
- 删除每个
merge以尝试缩小崩溃范围 - 它们似乎不会导致崩溃 - 将
$合并到字典中 - 哭泣
- 在 Helm Slack 上提问
- 就 GitHub 问题提问
我的问题..
我该如何解决这个崩溃?
或者,我怎样才能实现我想要的目标?
【问题讨论】:
标签: kubernetes-helm