Helm 必须覆盖 yaml 文件的值

问题描述 投票:0回答:1

我的结构类似于以下示例:

values.yaml

config:
  value: "unset"

值-dev.yaml

config:
  value: "development"

值-prod.yaml

config:
  value: "production"

我需要确保该值是由特定环境设置的,如果我们忘记将其添加到values-*env*.yaml,模板步骤应该会失败。

换句话说,在上面的示例中,在任何环境中都不应该“取消设置”,如果我们创建一个新的 value-**.yaml 文件,其中没有

value: "something"
,它应该在模板化过程中失败。

我在文档中找不到实现此操作的方法

openshift kubernetes-helm
1个回答
0
投票

您可以使用流量控制

if
/
else
)和失败功能来验证参数。

考虑以下示例:

configMap.yaml

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 }}

values.yaml

config:
  value: "unset"

值-dev.yaml

config:
  value: "development"

值-prod.yaml

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
© www.soinside.com 2019 - 2024. All rights reserved.