在头盔版本2.14.1

时间:2020-09-20 03:48:24

标签: kubernetes kubernetes-helm helmfile

我正在使用头盔版本2.14.1。我已经为应用程序创建了头盔图表,该应用程序将由用户部署以在kubernetes集群上测试其代码。我想为用户名值添加标签,以便我可以按用户检索部署(按用户标签进行部署)。是否有一种方法像在Java中使用System.getProperty("user.name")一样,将系统用户名包含在头盔图表中。我的掌舵模板是这样的:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ include "common.fullname" . }}--{{ Release.name }}
  labels:
    application: {{ include "common.name" . }}
    branch: "{{ Release.name }}"
    username: "{{ System.user.name }}"   # need to fetch the logged in user from system here
spec:
...

是否有实现此目的的标准方法?还是我可以允许用户在使用helm installhelm template命令的同时从命令行在其中输入用户名?

编辑: 尽管--set对我来说可以为图表设置值,但我还需要在依赖项中设置相同的值。像这样:

values.yaml

username: "" 

dependency1:
 username: {{ .Values.username }} 

dependency2:
 username: {{ .Values.username }}

...

当然,以上实现不起作用。我也需要在依赖项中引用设置值

2 个答案:

答案 0 :(得分:1)

这是基于评论的社区Wiki答案,并发布以提高可见性。随意扩展它。

您可以将helm template命令与--set选项一起使用:

--set stringArray              set values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2)
--set-file stringArray         set values from respective files specified via the command line (can specify multiple or separate values with commas: key1=path1,key2=path2)
--set-string stringArray       set STRING values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2)

在将值传递到图表的其他方法中,--set参数的优先级最高。这意味着默认情况下,值来自values.yaml,可以由父图表的values.yaml覆盖,而后者又可以由用户提供的值文件覆盖,而文件又可以由{ {1}}个参数。

您可以在official docs中查看更多详细信息和示例。

答案 1 :(得分:0)

我已经解决了这个问题。感谢@MichaelAlbers和@WytrzymałyWiktor的帮助。因此解决方法如下。

helm template path/to/chart --set global.username=username

然后在所有模板中将此值称为{{ .Values.global.username }}。这同样适用于任何依赖关系图。