问题描述
我可以在Helm图表中同时找到fullnameOverride和nameOverride。请举例说明这两者之间的区别。
解决方法
使用
nameOverride
替换Chart.yaml
文件中图表的名称时,该名称用于构造Kubernetes对象名称。 fullnameOverride
完全替换了生成的名称。
这些来自the template provided by Helm for new charts。模板中的一个典型对象名为
name: {{ include "<CHARTNAME>.fullname" . }}
如果使用具有此名称的部署来安装图表,并且Chart.yaml
文件在其中指定name: chart-name
...
-
helm install release-name .
,部署将命名为release-name-chart-name
-
helm install release-name . --set nameOverride=name-override
,部署将命名为release-name-name-override
-
helm install release-name . --set fullnameOverride=fullname-override
,部署将命名为fullname-override
生成的...fullname
模板是(仍然从上面的链接中省略了一个代码分支)
{{- define "<CHARTNAME>.fullname" -}}
{{- if .Values.fullnameOverride }}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- $name := default .Chart.Name .Values.nameOverride }}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
{{- end }}
{{- end }}
因此,如果提供了fullnameOverride
,则它将完全替换模板中其余的逻辑。否则,将根据发行版名称和图表名称来构造名称,其中nameOverride
会覆盖图表名称。