我正在使用helm install
命令安装头盔图表。我有values.yaml
,它需要用户输入一些信息。 values.yaml
中的键之一是 action ,该键只能采用三个预定义的值(例如, action1 , action2 和 action3 )作为输入。除此之外的其他任何值都是无效的。
当用户在values.yaml
中向操作字段提供值并触发helm install
命令时,我需要检查的第一件事是 action 键是否具有有效值与否。如果 action 值无效,我希望发布失败并显示正确的错误消息。
例如:如果用户给出了action: action4
,则此操作无效,并且释放应该失败,因为.Values.action
只能是 action1 , action2 或 action3 。
我如何实现此用例,并且考虑到头盔结构,哪个文件最适合处理此验证?
答案 0 :(得分:3)
我能够通过以下更改实现用例。 在_helpers.tpl
中添加了以下代码{{- define "actionValidate" -}}
{{ $action := .Values.actions }}
{{- if or (eq $action "action1") (eq $action "action2") (eq $action "action3") -}}
true
{{- end -}}
{{- end -}}
从.tpl文件中调用此函数,如下所示:-
{{ include "actionValidate" . | required "Action value is incorrect. The valid values are 'action1', 'action2', 'action3' " }}
答案 1 :(得分:1)
Helm使用Go模板,因此您可以添加一些自定义技巧。阅读以下资源:https://github.com/helm/helm/blob/master/docs/charts_tips_and_tricks.md。您可以检查一些已经提供的功能是否足以满足您的需求,例如required
。
答案 2 :(得分:0)
有了HelmV3,现在有了一种更简单的方法。只需指定包含您的值的schema。
例如:
title: Values
type: object
properties:
action:
description: Some action
type: string
pattern: "^(action1|action2|action3)$"
答案 3 :(得分:0)
没有足够的代表发表评论。但是,为了响应@Saurabh,您现在必须 YAML 注释掉函数调用。否则,Go Template 将遇到来自调用文件中间存在的随机 true
值的无效返回类型运行时错误。
示例
# validation.yaml
---
#{{ include "actionValidate" . | required "Action value is incorrect. The valid values are 'action1', 'action2', 'action3' " }}