kubernetes - 以编程方式覆盖 Helm 子图中的值

标签 kubernetes kubernetes-helm

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

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

加长版:我想将ElasticStack与Logstash,Kibana,Elasticsearch一起部署,并且我想对Kibana和Elasticsearch使用正式的 Helm 模板。

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

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"

并在模板制作时覆盖子图表值?

最佳答案

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

https://github.com/helm/helm/issues/2492

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

关于kubernetes - 以编程方式覆盖 Helm 子图中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57457785/

相关文章:

kubernetes - 如何使用 Kubernetes 中的负载均衡器服务公开多个端口

kubernetes - 如何将多个 Secrets 中的所有值传递给 Kubernetes 中的 env 变量?

kubernetes - ETCD 向 Prometheus 认证数据

apache-kafka - 如何在 Kubernetes 中向外部公开 StatefulSet 的 headless Kafka 服务

kubernetes - Helm 图表之间的依赖关系是否应该反射(reflect)微服务之间的依赖关系?

kubernetes - kubectl无法连接到Google Container Engine

kubernetes - 如何在Kubernetes仪表板中限制 namespace

kubernetes - CI/CD的 Helm chart 版本

kubernetes - 如何通过环境变量设置 Helm Helm 柄 namespace ?

kubernetes - 在 helm 中的两个图表之间共享配置图