以编程方式覆盖掌舵子图中的值

时间:2019-08-12 08:23:20

标签: kubernetes kubernetes-helm

我搜索了几个小时,但找不到解决我问题的方法。

简短版本:可以在模板制作时添加新的.Value属性吗?

长版:我想用Logstash,Kibana,Elasticsearch部署ElasticStack,并且要对Kibana和Elasticsearch使用正式的头盔模板。

我的想法是用3个子图表创建一个新的图表(elk)。

elk
    charts
        elasticsearch (official helm template)
            values.yaml
        kibana (official helm template)
            values.yaml
        logstash
            values.yaml
    templates
    values.yaml

我的问题是顶级values.yaml

中相同属性的多重声明

我的elk/values.yaml如下所示

elasticsearch:
  clusterName: "elasticsearchtest"
  imageTag: "7.3.0"
  replicas: 3
  minimumMasterNodes: 2
  volumeClaimTemplate:
    storageClassName: gp2-resize

kibana:
  elasticsearchHosts: "http://elasticsearchtest-master:9200"
  imageTag: "7.3.0"


logstash:
  elasticsearchHosts: "http://elasticsearchtest-master:9200"
  imageTag: "7.3.0"

如果要更改clustername或指定imagetag,请注意重新排列。用这种方式覆盖子图的值确实很不好。

可以像这样创建顶级values.yaml

clusterName: "elasticsearchtest"
imageTag: "7.3.0"

并在模板化时覆盖子图的值?

1 个答案:

答案 0 :(得分:2)

如果您不打算使用外部工具(例如Ytt),则无法将values.yaml模板化

the vue docs

但是,如果可以在子图中更改values.yaml,则可以将其分配给全局变量,并在父Helm图表中对其进行一次定义。