Вбудовані обʼєкти
Обʼєкти передаються в шаблон з рушія обробки шаблонів. І ваш код може передавати обʼєкти далі (ми побачимо приклади, коли розглянемо оператори 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, обирають використовувати лише початкові малі літери, щоб відрізнити локальні імена від вбудованих. У цьому посібнику ми дотримуємося цієї угоди.