Kubernetes 如何使用Helm获得子图表的名称?
我有一个需要Kubernetes 如何使用Helm获得子图表的名称?,kubernetes,kubernetes-helm,Kubernetes,Kubernetes Helm,我有一个需要stable/redis作为子图表的掌舵图。父图表需要将redis服务作为环境变量公开 redis图表包括一个名为redis.fullname的模板。我如何在我的家长表中引用此项?也就是说,我希望在父部署中使用类似的内容,但它不起作用: kind: Deployment spec: template: containers: env: - name: REDIS_CLUSTER_SERVICE_HOST value: {
stable/redis
作为子图表的掌舵图。父图表需要将redis服务作为环境变量公开
redis图表包括一个名为redis.fullname
的模板。我如何在我的家长表中引用此项?也就是说,我希望在父部署中使用类似的内容,但它不起作用:
kind: Deployment
spec:
template:
containers:
env:
- name: REDIS_CLUSTER_SERVICE_HOST
value: {{ template "redis.fullname" . }}
您可以在父图表中使用
'{{.Release.Name}}-redis'
。我也有同样的要求。这是我的示例,如果您想查看->模板现在可以在父图表和子图表之间共享。
请参阅—
我看到的问题是:
如果您的redis.fullname
模板使用的变量(例如:.Values.commonVariable)在两个图表中具有相同的名称但具有不同的值,则在父图表中引用该变量时,将使用的值将是父图表的值,而不是子图表的值
考虑这一点:
{{- define "zookeeper.fullname" -}}
{{- printf "%s-%s" (.Values.component) (.Values.subcomponent) -}}
{{- end -}}
尽管我希望我的zookeeper.fullname
在kafka
(父)图表中被引用。但是.Values.component
和.Values.subcomponent
将用于卡夫卡,而不是本案中的zookeeper(subchart),这完全破坏了这个想法
在这一具体案例中,解决办法将是使用贾尼什·沙阿的答案。但如果不是这样,请不要遵循这个答案。这破坏了模板化的想法。如果您应该以任何方式更改子图表中的模板函数,您还需要修改父图表中的值{{.Release.Name}}-redis
。这不是模板
上述问题的链接-改进Akash的答案,您可以尝试模拟正确的范围。仅当您知道子模板使用的变量时,此操作才有效,但可能会更稳定一些:
{{ template "redis.fullname" (dict "Values" $.Values.redis "Chart" (dict "Name" "redis") "Release" $.Release) }}
我想我也有类似的问题。问题在这里:-看看问题下面的更新,这就是我目前处理的方式(我用我知道的名称覆盖子图表的模板定义),这破坏了模板化的想法。请参考我的答案。