Helm values.yaml全局部分中值的最佳做法

时间:2019-12-26 10:02:55

标签: kubernetes kubernetes-helm

values.yaml的全局部分中包括子图的安装是最佳实践。例子..

根级别values.yaml

global:
  foo: bar

  subchartA:
    enable: true

或最佳做法是如图所示将子图移出全局部分。

global:
  foo: bar

subchartA:
  enable: true

请简要说明原因。谢谢

1 个答案:

答案 0 :(得分:2)

子图表配置设置必须位于global:块之外的顶层。

在样式级别,每个图表都应可独立安装,无论是否用作子图表。像stable/mysql图表之类的例子就是一个合理的例子:您可以手动helm install mysql stable/mysql --set mysqlPassword=...,而无需提及global。这意味着,当您将其包含为依赖项时,其设置必须位于values.yaml文件中子图的键下。

在机械层面上,运行子图表时,subchartA设置会提升为.Values,然后将原始global:与之合并(请参阅{{3} }。因此子图本身需要了解差异

{{/* Option 1 */}}
{{ .Values.global.subchartA.enabled }}

{{/* Option 2 (within subchartA) */}}
{{ .Values.enabled }}

,并且在顶层,您需要使用与随附图表兼容的表格。

(如果浏览Subcharts and Globals,您会发现global很少使用; rabbitmq允许您声明global.imagePullSecrets,但是很接近它。)