kubernetes Helm使用--set命令添加值并在使用模板时扩展给定图表

mrwjdhj3  于 2022-12-03  发布在  Kubernetes
关注(0)|答案(1)|浏览(374)

结构是这样的:

chart.yaml
values.yaml
templates/
|__deploymentconfig.yaml

用法:helm install demo --dry-run --debug -f values.yaml
我喜欢做的是,在模板填充了yaml之后,在helm install上用--set命令添加一个environment variable
类似以下的虚拟命令(不起作用):
helm install demo ... -f values.yaml --set ???env[0].name=MyEnvVar
生成的部署配置应如下所示:

kind: Deployment
...
spec:
  template:
    spec:
      containers:
        env:
          - name: MyEnvVar
            value: Hello

我需要在install命令的**???**部分设置什么,才能在清单的部署部分获得所需的变量?

unftdfkk

unftdfkk1#

您在评论中澄清:
我想添加一个环境变量,但不涉及Helm代码(仅在CLI上使用--set
您不能使用helm install --set进行模板代码中没有描述的任何更改。

env:
  - name: SOME_VARIABLE
    value: {{ .Values.someValue | default "foo" }}

那么您可以使用helm install --set someValue=bar来更改一个特定的环境值,但是您的图表本身无法提供其他环境变量,而且--set本身无法更改这一点。
原因:无测试代码进入生产。
您仍然可以允许自定义图表而不违反此规则。
第一次
或者,您可以提供一组开放式的扩展环境变量,并期望它通常为空

env:
{{- with .Values.extraEnvironment }}
{{ toYaml . | indent 2 }}
{{- end }}

与此对应的helm install --set语法可能比较复杂,但您可以编写一个单独的部署时值YAML文件,以便用helm install -f注入。
原则上,您可以使用post rendering对已部署的YAML进行任意更改,这可能包括添加环境变量。尽管这是一种复杂的方法,但它会使您处于这样一种情况:您已经对标准部署中的某些内容进行了修改;这对于许多需要来说可能是不足够可再现的。

相关问题