kubernetes 覆盖Helm中的子图表中的值

3j86kqsm  于 2023-10-17  发布在  Kubernetes
关注(0)|答案(2)|浏览(135)

我使用nginx-ingress控制器作为子图,我想覆盖子图中的controller.service.nodePorts.http。我试了几种方法,似乎都不起作用。这是我尝试过的

  • 在helm install命令期间使用--set controller.service.nodePorts.http=32080
  • 在图表的值中声明此路径。yaml

我还查看了Helm文档,以覆盖子图表值,但似乎都不起作用。
我可能错过了什么?感谢您的评分

wmvff8tz

wmvff8tz1#

覆盖子图表的值时,需要将这些配置嵌套在子图表的名称下。例如在values.yaml中:

mysubchart:
  x: y

在你的例子中,如果你将nginx控制器图表导入为nginx-controller,你可以将它添加到主图表中:

nginx-controller:
  controller:
    service:
      nodePorts:
        http: "32080"

此主题在Helm文档中的以下部分中介绍:https://github.com/helm/helm/blob/master/docs/chart_template_guide/subcharts_and_globals.md#overriding-values-of-a-child-chart

vsmadaxz

vsmadaxz2#

这可能与原来的情况不同,但仍然可能对面临类似问题的人有所帮助。这可能是指定值的问题。
在我的例子中,我有一个子图表“subchartName”,它的值是“{{ .Values.subchartName.path }}"。该值在子图值中定义为:

subchartName:
  path: 123

因此,在父图表values.yaml中,值应指定为:

subchartName:
  subchartName:
    path: 321

Helm template . -f parent-values.yaml将给予预期的结果。

相关问题