Перейти к основному содержимому
Версия: 3.19.0

Встроенные объекты

Объекты передаются в шаблон движком шаблонов. Ваш код может передавать объекты дальше (мы увидим примеры при рассмотрении операторов 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, предпочитают использовать только строчные буквы в начале имён, чтобы отличать локальные имена от встроенных. В этом руководстве мы следуем этому соглашению.