Helm 中 fullnameOverride 和 nameOverride 有什么区别?

Rad*_*ad4 9 kubernetes-helm

我可以在 Helm 图表中找到 fullnameOverride 和 nameOverride。请通过示例帮助澄清这两者之间的区别。

Dav*_*aze 17

nameOverride替换Chart.yaml文件中图表的名称,当它用于构造 Kubernetes 对象名称时。 fullnameOverride完全替换生成的名称。

这些来自Helm 为新图表提供的模板。模板中的一个典型对象被命名为

name: {{ include "<CHARTNAME>.fullname" . }}
Run Code Online (Sandbox Code Playgroud)

如果您使用具有此名称的部署安装图表,并且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 }}
Run Code Online (Sandbox Code Playgroud)

因此,如果fullnameOverride提供,则完全替换模板中的其余逻辑。否则,名称由发布名称和图表名称构成,其中nameOverride覆盖图表名称。

  • 感觉这试图涵盖所有可能的用例,对于大多数部署来说变成了不必要的混乱复杂化。 (8认同)