Как получить имя дочерней диаграммы с помощью Helm?

У меня есть диаграмма штурвала, которая требует stable/redis в качестве дочерней диаграммы. Родительская диаграмма должна предоставлять сервис Redis как переменную среды.

Диаграмма Redis включает шаблон под названием redis.fullname. Как я могу сослаться на это в родительской диаграмме? Т.е. Я хочу что-то подобное в моем родительском развертывании, но это не работает:

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

person jbrown    schedule 08.12.2017    source источник
comment
Думаю, у меня очень похожая проблема. Вопрос здесь: stackoverflow.com/questions/47757968/ - посмотрите обновление под вопросом, вот как я сейчас занимаюсь (я перезаписываю определение шаблона под-диаграммы с именем, которое я знаю)   -  person wemu    schedule 13.12.2017


Ответы (3)


Вы можете использовать '{{ .Release.Name }}-redis' в родительской диаграмме. У меня было такое же требование. Это мой пример на случай, если вы хотите взглянуть -> https://github.com/kubernetes/charts/tree/master/incubator/distribution

person Jainish Shah    schedule 05.07.2018
comment
Это разрушает идею создания шаблонов. Пожалуйста, обратитесь к моему ответу. - person Akash; 06.07.2018

Шаблоны теперь доступны для родительских и дочерних диаграмм. Обратитесь к этому - 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 -}}

Хотя я хочу, чтобы на мой zookeeper.fullname ссылалась kafka (родительская) диаграмма. Но .Values.component и .Values.subcomponent будут использоваться для kafka, а не для zookeeper (подсхема) в этом случае, что полностью разрушает идею.

Выходом в данном конкретном случае будет использование ответа джайниш-шаха. Но если это не так, пожалуйста, не следуйте этому ответу. Это разрушает идею создания шаблонов. Если каким-либо образом вам необходимо изменить функцию шаблона в поддиаграмме, вам также потребуется изменить значение {{ .Release.Name }}-redis в родительской диаграмме. Это не шаблон.

Ссылка на вышеупомянутую проблему - https://github.com/kubernetes/helm/issues/4314 < / а>

person Akash    schedule 05.07.2018

Улучшив ответ Акаша, вы можете попытаться сымитировать правильный объем. Это также работает только в том случае, если вы знаете, какие переменные использует подшаблон, но может быть немного более стабильным:

{{ template "redis.fullname" (dict "Values" $.Values.redis "Chart" (dict "Name" "redis") "Release" $.Release) }}
person dpoetzsch    schedule 18.12.2020