<.Chart.name>: 无法评估类型接口 {} 中的字段名称
<.Chart.name>: can't evaluate field name in type interface {}
部署图表时出现以下错误:
<.Chart.name>: 无法评估类型接口中的字段名称 {}
这是初学者的错误,字段以大写开头,即使 Chart.yaml 字段以小写开头。与 Chart.Version 和所有其他字段相同。
对于 java 开发人员来说非常奇怪。
根据official helm documentation there are terms Predefined Values and Built-in Objects
The built-in values always begin with a capital letter. This is in
keeping with Go’s naming convention. When you create your own names,
you are free to use a convention that suits your team
强制大写的内置值列表
Release
:此对象描述版本本身。它里面有几个对象:
Release.Name
: 发布名称
Release.Namespace
:要释放到的命名空间(如果清单没有覆盖)
Release.IsUpgrade
:如果当前操作是升级或回滚,则设置为true
。
Release.IsInstall
:如果当前操作是安装,则设置为 true
。
Release.Revision
:此版本的修订号。在安装时,这是 1,并且随着每次升级和回滚而递增。
Release.Service
:呈现当前模板的服务。在 Helm 上,这始终是 Helm
.
Values
:从 values.yaml
文件和用户提供的文件传递到模板的值。默认情况下,Values
为空。
Chart
:Chart.yaml
文件的内容。 Chart.yaml
中的任何数据都可以在此处访问。例如 {{ .Chart.Name }}-{{ .Chart.Version }}
将打印出 mychart-0.1.0
。
- 可用字段列在 Charts Guide
Files
:这提供了对图表中所有非特殊文件的访问。虽然您不能使用它来访问模板,但您可以使用它来访问图表中的其他文件。有关更多信息,请参阅 访问文件 部分。
Files.Get
是按名称获取文件的函数 (.Files.Get config.ini
)
Files.GetBytes
是一个将文件内容作为字节数组而不是字符串获取的函数。这对于图像之类的东西很有用。
Files.Glob
是一个 returns 名称与给定 shell glob 模式匹配的文件列表的函数。
Files.Lines
是一个逐行读取文件的函数。这对于遍历文件中的每一行很有用。
Files.AsSecrets
是一个returns文件主体为Base 64编码字符串的函数。
Files.AsConfig
是一个 returns 将主体文件作为 YAML 映射的函数。
Capabilities
:这提供了有关 Kubernetes 集群支持哪些功能的信息。
Capabilities.APIVersions
是一组版本。
Capabilities.APIVersions.Has $version
指示版本(例如,batch/v1
)或资源(例如,apps/v1/Deployment
)是否在集群上可用。
Capabilities.KubeVersion
和 Capabilities.KubeVersion.Version
是 Kubernetes 版本。
Capabilities.KubeVersion.Major
是 Kubernetes 主要版本。
Capabilities.KubeVersion.Minor
是 Kubernetes 次要版本。
Template
:包含当前正在执行的模板的信息
Name
:当前模板的命名空间文件路径(例如mychart/templates/mytemplate.yaml
)
BasePath
:当前图表模板目录的命名空间路径(例如mychart/templates
)。
小例子:
apiVersion: v1
kind: Service
metadata:
name: {{ template "fullname" . }}
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
spec:
type: {{ .Values.service.type }}
ports:
- port: {{ .Values.service.externalPort }}
targetPort: {{ .Values.service.internalPort }}
protocol: TCP
name: {{ .Values.service.name }}
selector:
app: {{ template "fullname" . }}
再一次 - 随意使用任何其他手动定义的小写值。
希望对你有帮助
部署图表时出现以下错误: <.Chart.name>: 无法评估类型接口中的字段名称 {}
这是初学者的错误,字段以大写开头,即使 Chart.yaml 字段以小写开头。与 Chart.Version 和所有其他字段相同。
对于 java 开发人员来说非常奇怪。
根据official helm documentation there are terms Predefined Values and Built-in Objects
The built-in values always begin with a capital letter. This is in keeping with Go’s naming convention. When you create your own names, you are free to use a convention that suits your team
强制大写的内置值列表
Release
:此对象描述版本本身。它里面有几个对象:Release.Name
: 发布名称Release.Namespace
:要释放到的命名空间(如果清单没有覆盖)Release.IsUpgrade
:如果当前操作是升级或回滚,则设置为true
。Release.IsInstall
:如果当前操作是安装,则设置为true
。Release.Revision
:此版本的修订号。在安装时,这是 1,并且随着每次升级和回滚而递增。Release.Service
:呈现当前模板的服务。在 Helm 上,这始终是Helm
.
Values
:从values.yaml
文件和用户提供的文件传递到模板的值。默认情况下,Values
为空。Chart
:Chart.yaml
文件的内容。Chart.yaml
中的任何数据都可以在此处访问。例如{{ .Chart.Name }}-{{ .Chart.Version }}
将打印出mychart-0.1.0
。- 可用字段列在 Charts Guide
Files
:这提供了对图表中所有非特殊文件的访问。虽然您不能使用它来访问模板,但您可以使用它来访问图表中的其他文件。有关更多信息,请参阅 访问文件 部分。Files.Get
是按名称获取文件的函数 (.Files.Get config.ini
)Files.GetBytes
是一个将文件内容作为字节数组而不是字符串获取的函数。这对于图像之类的东西很有用。Files.Glob
是一个 returns 名称与给定 shell glob 模式匹配的文件列表的函数。Files.Lines
是一个逐行读取文件的函数。这对于遍历文件中的每一行很有用。Files.AsSecrets
是一个returns文件主体为Base 64编码字符串的函数。Files.AsConfig
是一个 returns 将主体文件作为 YAML 映射的函数。
Capabilities
:这提供了有关 Kubernetes 集群支持哪些功能的信息。Capabilities.APIVersions
是一组版本。Capabilities.APIVersions.Has $version
指示版本(例如,batch/v1
)或资源(例如,apps/v1/Deployment
)是否在集群上可用。Capabilities.KubeVersion
和Capabilities.KubeVersion.Version
是 Kubernetes 版本。Capabilities.KubeVersion.Major
是 Kubernetes 主要版本。Capabilities.KubeVersion.Minor
是 Kubernetes 次要版本。
Template
:包含当前正在执行的模板的信息Name
:当前模板的命名空间文件路径(例如mychart/templates/mytemplate.yaml
)BasePath
:当前图表模板目录的命名空间路径(例如mychart/templates
)。
小例子:
apiVersion: v1
kind: Service
metadata:
name: {{ template "fullname" . }}
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
spec:
type: {{ .Values.service.type }}
ports:
- port: {{ .Values.service.externalPort }}
targetPort: {{ .Values.service.internalPort }}
protocol: TCP
name: {{ .Values.service.name }}
selector:
app: {{ template "fullname" . }}
再一次 - 随意使用任何其他手动定义的小写值。 希望对你有帮助