内置对象
对象是从模板引擎传递到模板中的。您的代码可以传递对象(我们在查看 with 和 range 语句时会看到示例)。甚至有一些方法可以在您的模板内部创建新对象,例如使用我们稍后将看到的 tuple 函数。
对象可以很简单,只有一个值。或者它们可以包含其他对象或函数。例如,Release 对象包含几个对象(如 Release.Name),而 Files 对象有一些函数。
在上一节中,我们使用 {{ .Release.Name }} 将版本的名称插入模板中。Release 是您可以在模板中访问的顶级对象之一。
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。- 可用字段列在 图表指南 中
Subcharts:这使父级可以访问子图表的范围(.Values、.Charts、.Releases 等)。例如.Subcharts.mySubChart.myValue用于访问mySubChart图表中的myValue。Files:这使您可以访问图表中所有非特殊文件。虽然您无法使用它来访问模板,但您可以使用它来访问图表中的其他文件。有关更多信息,请参阅 访问文件 部分。Files.Get是一个按名称获取文件的函数(.Files.Get config.ini)Files.GetBytes是一个函数,用于以字节数组而不是字符串的形式获取文件内容。这对于图像等内容很有用。Files.Glob是一个函数,它返回名称与给定 shell glob 模式匹配的文件列表。Files.Lines是一个逐行读取文件的函数。这对于迭代文件中的每一行很有用。Files.AsSecrets是一个函数,它以 Base 64 编码字符串的形式返回文件主体。Files.AsConfig是一个函数,它以 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 次版本。Capabilities.HelmVersion是包含 Helm 版本详细信息的对象,它与helm version的输出相同。Capabilities.HelmVersion.Version是当前 Helm 版本的语义化版本格式。Capabilities.HelmVersion.GitCommit是 Helm git sha1。Capabilities.HelmVersion.GitTreeState是 Helm git 树的状态。Capabilities.HelmVersion.GoVersion是所用 Go 编译器的版本。
Template:包含有关正在执行的当前模板的信息Template.Name:当前模板的命名空间文件路径(例如mychart/templates/mytemplate.yaml)Template.BasePath:当前图表模板目录的命名空间路径(例如mychart/templates)。
内置值始终以大写字母开头。这符合 Go 的命名约定。当您创建自己的名称时,您可以自由使用适合您的团队的约定。一些团队,例如您可能在 Artifact Hub 上看到其图表的许多团队,选择在名称中仅使用小写字母开头,以区分本地名称和内置名称。在本指南中,我们遵循该约定。