kubernetes 具有所需功能舵或操作器

kkih6yb8  于 2023-10-17  发布在  Kubernetes
关注(0)|答案(1)|浏览(93)

我必须根据某些条件检查强制值。
My values.yaml 如下

id: 3
test:
 id: 2
 test1:
  id: 1

在我的模板中,我需要检查id是否存在于.Values.test.test1.id中,并分配该值。如果不回退到.Values.test.id,最后回退到.Values.id。但是id必须是强制性的,我需要使用所需的函数。
我的模板如下

{{- if .Values.test.test1.id }}
<assign> {{ .Values.test.test1.id }}
{{- else }}
{{- $id := .Values.test.id }}
{{- $id2 := .Values.id }}
<assign> <need to check required with or of $id $id2> </assign>
{{- end }}

我知道这可以用一个elseififelse之间来解决。但是我需要对许多id重复同样的逻辑。
实现这一目标的最佳途径是什么?

fdx2calv

fdx2calv1#

它似乎非常适合coalesce函数,
获取一个值列表并返回第一个非空值。

  • 来源:https://helm.sh/docs/chart_template_guide/function_list/#coalesce*

当没有定义testtest.test1字典时,您还需要使用default函数来转换大小写。
所有这些加在一起,给出:

{{- $test := .Values.test | default dict -}}
{{- $test1 := $test.test1 | default dict -}}
{{- $id := required "Please provide an ID" (
  coalesce $test1.id $test.id .Values.id
) -}}
id: {{ $id }}

以下是测试用例和结果:

  • 给出:
id: 1

当 * 值.yaml* 是

id: 3
test:
  id: 2
  test1:
    id: 1
  • 给出:
id: 2

当 * 值.yaml* 是

id: 3
test:
  id: 2
  • 给出:
id: 3

当 * 值.yaml* 是

id: 3
  • values.yaml 为空文件时给出:
Error: execution error at (demo/templates/test.yaml:3:11): 
  Please provide an ID

相关问题