Kubernetes 在Helm chart YAML中,如何在一次调用中包含多行属性?
我希望能够从Kubernetes 在Helm chart YAML中,如何在一次调用中包含多行属性?,kubernetes,yaml,kubernetes-helm,Kubernetes,Yaml,Kubernetes Helm,我希望能够从values.yaml属性中获取多个子属性,并将它们全部放在模板中的属性下。例如: 值。yaml 选择器: propA:valueA 建议B:价值B propC:valueC /templates/deployment.yaml #…省略。。。 规格: 选择器: 火柴标签: #这是伪代码 {{includeal.Values.selectors | nindent6} 然后这将导致K8s获得以下yaml: #…省略。。。 规格: 选择器: 火柴标签: propA:valueA 建
values.yaml
属性中获取多个子属性,并将它们全部放在模板中的属性下。例如:
值。yaml
选择器:
propA:valueA
建议B:价值B
propC:valueC
/templates/deployment.yaml
#…省略。。。
规格:
选择器:
火柴标签:
#这是伪代码
{{includeal.Values.selectors | nindent6}
然后这将导致K8s获得以下yaml:
#…省略。。。
规格:
选择器:
火柴标签:
propA:valueA
建议B:价值B
propC:valueC
我怎么能做那样的事呢?事实证明这并不是非常简单。这取决于(据我所知)下面是什么类型的东西 简单名称:值对 您可以使用
range
函数,该函数的作用非常类似于每个循环的一个函数。
{{-range$name,$labelValue:=.Values.labels}
{{$name}}:{{$labelValue}
{{-end}
多个级别的嵌套属性
如果您有一个嵌套的多级属性,那么我能找到的唯一方法就是将其转换为yaml。你需要非常小心缩进。它做了两件事:
values.yaml的示例
env变量:
-名称:MYSQL\u ROOT\u密码
价值来源:
secretKeyRef:
姓名:db creds
密钥:db pass
第一种有效方式:
spec:
容器:
-图像:{{.Values.image.name}:{{.Values.image.tag}
imagePullPolicy:{{.Values.image.pullPolicy}}
env:{{toYaml.Values.envVariables | nindent12}
这将导致:
spec:
容器:
-图像:{{.Values.image.name}:{{.Values.image.tag}
imagePullPolicy:{{.Values.image.pullPolicy}}
环境:
-名称:MYSQL\u ROOT\u密码
价值来源:
secretKeyRef:
姓名:db creds
密钥:db pass
第二种有效方式:
spec:
容器:
-图像:{{.Values.image.name}:{{.Values.image.tag}
imagePullPolicy:{{.Values.image.pullPolicy}}
环境:
{{toYaml.Values.envVariables | nindent12}
注意它是左对齐的。这将导致在env:
之后出现一个空行,但将有正确的缩进
无效方式:
spec:
容器:
-图像:{{.Values.image.name}:{{.Values.image.tag}
imagePullPolicy:{{.Values.image.pullPolicy}}
环境:
{{toYaml.Values.envVariables | nindent12}
有了以上内容,就没有办法获得正确的缩进,因为只有第一行会有额外的缩进,而其他行不会。事实证明,这并不是非常简单。这取决于(据我所知)下面是什么类型的东西
简单名称:值对
您可以使用range
函数,该函数的作用非常类似于每个循环的一个函数。
{{-range$name,$labelValue:=.Values.labels}
{{$name}}:{{$labelValue}
{{-end}
多个级别的嵌套属性
如果您有一个嵌套的多级属性,那么我能找到的唯一方法就是将其转换为yaml。你需要非常小心缩进。它做了两件事:
它以一个新行开始(一个完整的空行)
您添加的任何缩进都将出现在每一行的前面
如果你开始缩进你的模板,这将包括在内
来自values.yaml的示例
env变量:
-名称:MYSQL\u ROOT\u密码
价值来源:
secretKeyRef:
姓名:db creds
密钥:db pass
第一种有效方式:
spec:
容器:
-图像:{{.Values.image.name}:{{.Values.image.tag}
imagePullPolicy:{{.Values.image.pullPolicy}}
env:{{toYaml.Values.envVariables | nindent12}
这将导致:
spec:
容器:
-图像:{{.Values.image.name}:{{.Values.image.tag}
imagePullPolicy:{{.Values.image.pullPolicy}}
环境:
-名称:MYSQL\u ROOT\u密码
价值来源:
secretKeyRef:
姓名:db creds
密钥:db pass
第二种有效方式:
spec:
容器:
-图像:{{.Values.image.name}:{{.Values.image.tag}
imagePullPolicy:{{.Values.image.pullPolicy}}
环境:
{{toYaml.Values.envVariables | nindent12}
注意它是左对齐的。这将导致在env:
之后出现一个空行,但将有正确的缩进
无效方式:
spec:
容器:
-图像:{{.Values.image.name}:{{.Values.image.tag}
imagePullPolicy:{{.Values.image.pullPolicy}}
环境:
{{toYaml.Values.envVariables | nindent12}
使用上述方法,无法获得正确的缩进,因为只有第一行会有额外的缩进,而其他行不会