我有一个头盔图表,需要 stable/redis
作为儿童图表 . 父图表需要将redis服务公开为环境变量 .
redis图表包含一个名为 redis.fullname
的模板 . 我如何在我的父图表中引用它?即我在父部署中想要这样的东西,但它不起作用:
kind: Deployment
spec:
template:
containers:
env:
- name: REDIS_CLUSTER_SERVICE_HOST
value: {{ template "redis.fullname" . }}
2 回答
模板现在可以在父图和子图之间共享 . 请参阅 - https://github.com/kubernetes/helm/blob/master/docs/chart_template_guide/subcharts_and_globals.md#sharing-templates-with-subcharts
我看到的问题是:
如果您的
redis.fullname
模板使用的变量(例如:.Values.commonVariable)在两个图表中具有相同的名称但具有不同的值,那么,在父图表中引用它时,将使用的值将是父图表图表,而不是孩子的 .考虑一下:
虽然我想在
kafka
(父)图表中引用我的zookeeper.fullname
. 但.Values.component
和.Values.subcomponent
将用于kafka而不是用于案例中的zookeeper(子图),这完全破坏了这个想法 .在这个特定情况下的出路将是使用Jainish Shah 's answer. But if this is not the case, please don' t跟随那个答案 . 这破坏了模板的想法 . 如果您以任何方式更改子图中的模板功能,则还需要修改父图表中的值
{{ .Release.Name }}-redis
. 这不是模板化的 .上述问题的链接 - https://github.com/kubernetes/helm/issues/4314
您可以在父图表中使用
'{{ .Release.Name }}-redis'
. 我有同样的要求 . 这是我的例子,如果你想看看 - > https://github.com/kubernetes/charts/tree/master/incubator/distribution