尝试评估丢失的嵌套键时,Helm图表失败,并显示"nil指针评估接口{}" [英] Helm chart fails with "nil pointer evaluating interface {}" when trying to evaluate a missing nested key

查看:0
本文介绍了尝试评估丢失的嵌套键时,Helm图表失败,并显示"nil指针评估接口{}"的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在编写一个Helm 3库图表,并希望使用默认值创建一个YAML。但是,当尝试为不存在的嵌套键设置默认值时,Helm失败,并显示以下错误消息:

nil pointer evaluating interface {}

假设我的Kubernetes对象中有以下代码片段:

{{- if eq (.Values.deployment.scale.type | default "static") "static" }}
  replicas: {{ default "3" .Values.deployment.scale.replicas }}
{{- end }}

如果定义了.Values.deployment.scale,则即使未定义.Values.deployment.scale.replicas,模板的渲染效果也会很好,replicas的值将为3。

但是,如果没有定义其中一个父键,Helm将失败,并显示上述错误消息。例如,如果values.yaml如下:

# values.yaml
deployment:
  not_scale: {}

呈现将失败,错误为:nil pointer evaluating interface {}.scale

如何为嵌套键设置默认值,即使其父键未定义?

推荐答案

我决定通过逐步评估层次结构并在键不存在时使用default dict分配一个空映射来解决这个问题。它既可以工作,而且看起来更好。

示例:

{{ $deployment := default dict .Values.deployment }}
{{ $scale      := default dict $deployment.scale }}
{{- if eq ($scale.type | default "static") "static" }}
  replicas: {{ default "3" $scale.replicas }}
{{- end }}

这篇关于尝试评估丢失的嵌套键时,Helm图表失败,并显示"nil指针评估接口{}"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆