我的结构类似于以下示例:
values.yaml
config:
value: "unset"
值-dev.yaml
config:
value: "development"
值-prod.yaml
config:
value: "production"
我需要确保该值是由特定环境设置的,如果我们忘记将其添加到values-*env*.yaml,模板步骤应该会失败。
换句话说,在上面的示例中,在任何环境中都不应该“取消设置”,如果我们创建一个新的 value-**.yaml 文件,其中没有
value: "something"
,它应该在模板化过程中失败。
我在文档中找不到实现此操作的方法
您可以使用流量控制(
if
/else
)和失败功能来验证参数。
考虑以下示例:
apiVersion: v1
kind: ConfigMap
metadata:
name: my-configmap
data:
my-data-key: {{- if regexMatch "^(development|production)$" .Values.config.value }}
{{- .Values.config.value }}-value
{{- else }}
{{- fail "Invalid value for config.value parameter. Valid values are 'development' and 'production'." }}
{{- end }}
config:
value: "unset"
config:
value: "development"
config:
value: "production"
使用默认值 (
helm template
) 输出 config.value=unset
,这是无效的,会引发错误:
Error: execution error at (example-01/templates/serviceaccount.yaml:9:8): Invalid value for config.value parameter. Valid values are 'development' and 'production'.
Use --debug flag to render out invalid YAML
helm template . -f values-prod.yaml
的输出(有效值):
---
# Source: example-01/templates/serviceaccount.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: my-configmap
data:
my-data-key:development-value