如何根据values.yaml中的输入使头盔释放失败

时间:2019-04-02 15:36:26

标签: kubernetes kubernetes-helm

我正在使用helm install命令安装头盔图表。我有values.yaml,它需要用户输入一些信息。 values.yaml中的键之一是 action ,该键只能采用三个预定义的值(例如, action1 action2 action3 )作为输入。除此之外的其他任何值都是无效的。

当用户在values.yaml中向操作字段提供值并触发helm install命令时,我需要检查的第一件事是 action 键是否具有有效值与否。如果 action 值无效,我希望发布失败并显示正确的错误消息。

例如:如果用户给出了action: action4,则此操作无效,并且释放应该失败,因为.Values.action只能是 action1 action2 action3

我如何实现此用例,并且考虑到头盔结构,哪个文件最适合处理此验证?

4 个答案:

答案 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' " }}