首页 文章

如何使用Helm获取子图表的名称?

提问于
浏览
7

我有一个头盔图表,需要 stable/redis 作为儿童图表 . 父图表需要将redis服务公开为环境变量 .

redis图表包含一个名为 redis.fullname 的模板 . 我如何在我的父图表中引用它?即我在父部署中想要这样的东西,但它不起作用:

kind: Deployment
spec:
  template:
    containers:
        env:
        - name: REDIS_CLUSTER_SERVICE_HOST
          value: {{ template "redis.fullname" . }}

2 回答

  • 0

    模板现在可以在父图和子图之间共享 . 请参阅 - https://github.com/kubernetes/helm/blob/master/docs/chart_template_guide/subcharts_and_globals.md#sharing-templates-with-subcharts

    我看到的问题是:

    如果您的 redis.fullname 模板使用的变量(例如:.Values.commonVariable)在两个图表中具有相同的名称但具有不同的值,那么,在父图表中引用它时,将使用的值将是父图表图表,而不是孩子的 .

    考虑一下:

    {{- define "zookeeper.fullname" -}}
    {{- printf "%s-%s" (.Values.component) (.Values.subcomponent) -}}
    {{- end -}}
    

    虽然我想在 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

  • 1

    您可以在父图表中使用 '{{ .Release.Name }}-redis' . 我有同样的要求 . 这是我的例子,如果你想看看 - > https://github.com/kubernetes/charts/tree/master/incubator/distribution

相关问题