Встроенные объекты
Объекты передаются в шаблон движком шаблонов. Ваш код может передавать объекты дальше (мы увидим примеры при рассмотрении операторов 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для доступа кmyValueв чартеmySubChart.Files: Обеспечивает доступ ко всем неспециальным файлам в чарте. Хотя вы не можете использовать его для доступа к шаблонам, вы можете использовать его для доступа к другим файлам в чарте. Подробнее см. в разделе Доступ к файлам.Files.Get— функция для получения файла по имени (.Files.Get config.ini)Files.GetBytes— функция для получения содержимого файла в виде массива байтов вместо строки. Это полезно для таких вещей, как изображения.Files.Glob— функция, возвращающая список файлов, имена которых соответствуют заданному шаблону 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 в формате semver.Capabilities.HelmVersion.GitCommit— git sha1 Helm.Capabilities.HelmVersion.GitTreeState— состояние git-дерева Helm.Capabilities.HelmVersion.GoVersion— версия использованного компилятора Go.
Template: Содержит информацию о текущем выполняемом шаблонеTemplate.Name: Путь к текущему шаблону с указанием пространства имён (например,mychart/templates/mytemplate.yaml)Template.BasePath: Путь к директории templates текущего чарта с указанием пространства имён (например,mychart/templates).
Имена встроенных значений всегда начинаются с заглавной буквы. Это соответствует соглашению об именовании Go. При создании собственных имён вы можете использовать любое соглашение, которое подходит вашей команде. Некоторые команды, в том числе многие авторы чартов на Artifact Hub, предпочитают использовать только строчные буквы в начале имён, чтобы отличать локальные имена от встроенных. В этом руководстве мы следуем этому соглашению.