Вбудовані обʼєкти
Обʼєкти передаються в шаблон з рушія обробки шаблонів. І ваш код може передавати обʼєкти далі (ми побачимо приклади, коли розглянемо оператори 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
.- Доступні поля перелічені в довіднику по Chart
Subcharts
: Надає доступ до області дії (.Values, .Charts, .Releases тощо) субшаблонів з батьківського шаблону. Наприклад,.Subcharts.mySubChart.myValue
, щоб отримати доступ доmyValue
у шаблоніmySubChart
.Files
: Це надає доступ до всіх не-спеціальних файлів у шаблоні. Ви не можете використовувати його для доступу до шаблонів, але можете використовувати його для доступу до інших файлів у шаблоні. Див. розділ Доступ до файлів для отримання додаткової інформації.Files.Get
— це функція для отримання файлу за іменем (.Files.Get config.ini
).Files.GetBytes
— це функція для отримання вмісту файлу у вигляді масиву байтів, а не рядка. Це корисно для таких речей, як образи.Files.Glob
— це функція, яка повертає список файлів, імена яких відповідають заданому шаблону оболонки.Files.Lines
— це функція, яка зчитує файл рядок за рядком. Це корисно для ітерації по кожному рядку у файлі.Files.AsSecrets
— це функція, яка повертає вміст файлів у вигляді Base64-кодованих рядків.Files.AsConfig
— це функція, яка повертає вміст файлів у вигляді YAML map.
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
: Іменований шлях до теки шаблонів поточного шаблону (наприклад,mychart/templates
).
Вбудовані значення завжди починаються з великої літери. Це відповідає угоді про найменування у Go. Коли ви створюєте власні імена, ви можете використовувати угоду, яка підходить вашій команді. Деякі команди, як і багато тих, чиї шаблони ви можете бачити на Artifact Hub, обирають використовувати лише початкові малі літери, щоб відрізнити локальні імена від вбудованих. У цьому посібнику ми дотримуємося цієї угоди.