Я обнаружил, что лучший способ сослаться на имя службы - это переопределить шаблон, который они используют. Однако при этом есть некоторые предостережения.
- Подграфик и ваша диаграмма будут иметь разные контексты, поэтому они, скорее всего, будут отображать шаблон по-разному.
- Некоторые вещи доступны только в дополнительной диаграмме.
Большинство диаграмм имеют шаблон, аналогичный приведенному ниже в файле _helpers.tpl.
{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "newchart.fullname" -}}
{{- if .Values.fullnameOverride }}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- $name := default .Chart.Name .Values.nameOverride }}
{{- if contains $name .Release.Name }}
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
{{- end }}
{{- end }}
{{- end }}
Подграфик имеет .Values
отличное от вашей диаграммы. Мы исправим это при рендеринге этого шаблона, создав контекст, похожий на контекст вложенных диаграмм.
Вместо того, чтобы вызывать его с .
контекстом, мы создаем новый контекст, заменяя .Values
вложенными диаграммами .Values
.
{{ template "newchart.fullname" (set (deepCopy .) "Values" .Values.newchart }}
Мы используем deepCopy, поэтому мы фактически не меняем .
контекст, а создаем новый для использования.
Подграфик имеет доступ к своим собственным .Chart
значениям, которые мы не можем воспроизвести. В этом случае нам придется жестко закодировать значение .Chart.Name
в шаблоне. Здесь мы можем просто заменить его названием диаграммы newchart
.
Как только мы это сделаем, и nameOverride
, и fullnameOverride
на подграфике будут работать без необходимости вручную изменять что-либо в файлах шаблонов.
person
Kristinn Björgvin Árdal
schedule
15.05.2020