Файли значень
У попередньому розділі ми розглянули вбудовані обʼєкти, які пропонують шаблони Helm. Один з вбудованих обʼєктів — це Values
. Цей обʼєкт надає доступ до значень, переданих у шаблон. Його вміст походить з кількох джерел:
- Файл
values.yaml
у шаблоні - Якщо це субшаблон, файл
values.yaml
батьківського шаблону - Файл значень передається в
helm install
абоhelm upgrade
з прапорцем-f
(helm install -f myvals.yaml ./mychart
) - Окремі параметри передаються з
--set
(наприклад,helm install --set foo=bar ./mychart
)
Наведений вище список розташований у порядку специфічності: values.yaml
є стандартним, яке може бути перевизначене файлом values.yaml
батьківського шаблону, який, своєю чергою, може бути перевизначений файлом значень, наданим користувачем, який, своєю чергою, може бути перевизначений параметрами --set
.
Файли значень — це прості YAML-файли. Відредагуємо mychart/values.yaml
, а потім відредагуємо наш шаблон ConfigMap.
Видаливши стандартні значення у values.yaml
, ми встановимо лише один параметр:
favoriteDrink: coffee
Тепер ми можемо використовувати його всередині шаблону:
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-configmap
data:
myvalue: "Hello World"
drink: {{ .Values.favoriteDrink }}
Зверніть увагу, що в останньому рядку ми отримуємо доступ до favoriteDrink
як до атрибута Values
: {{ .Values.favoriteDrink }}
.
Подивімося, як це відобразиться.
$ helm install geared-marsupi ./mychart --dry-run --debug
install.go:158: [debug] Original chart version: ""
install.go:175: [debug] CHART PATH: /home/bagratte/src/playground/mychart
NAME: geared-marsupi
LAST DEPLOYED: Wed Feb 19 23:21:13 2020
NAMESPACE: default
STATUS: pending-install
REVISION: 1
TEST SUITE: None
USER-SUPPLIED VALUES:
{}
COMPUTED VALUES:
favoriteDrink: coffee
HOOKS:
MANIFEST:
---
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: geared-marsupi-configmap
data:
myvalue: "Hello World"
drink: coffee
Оскільки favoriteDrink
встановлено в стандартне значення у файлі values.yaml
як coffee
, це значення відображається в шаблоні. Ми можемо легко перевизначити його, додавши прапорець --set
у наш виклик helm install
:
$ helm install solid-vulture ./mychart --dry-run --debug --set favoriteDrink=slurm
install.go:158: [debug] Original chart version: ""
install.go:175: [debug] CHART PATH: /home/bagratte/src/playground/mychart
NAME: solid-vulture
LAST DEPLOYED: Wed Feb 19 23:25:54 2020
NAMESPACE: default
STATUS: pending-install
REVISION: 1
TEST SUITE: None
USER-SUPPLIED VALUES:
favoriteDrink: slurm
COMPUTED VALUES:
favoriteDrink: slurm
HOOKS:
MANIFEST:
---
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: solid-vulture-configmap
data:
myvalue: "Hello World"
drink: slurm
Оскільки --set
має вищий пріоритет, ніж файл values.yaml
, наш шаблон генерує drink: slurm
.
Файли значень також можуть містити більш структурований контент. Наприклад, ми могли б створити розділ favorite
у нашому файлі values.yaml
, а потім додати туди кілька ключів:
favorite:
drink: coffee
food: pizza
Тепер нам потрібно трохи змінити шаблон:
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-configmap
data:
myvalue: "Hello World"
drink: {{ .Values.favorite.drink }}
food: {{ .Values.favorite.food }}
Хоча структурування даних таким чином є можливим, рекомендується тримати дерева значень пласкими, надаючи перевагу рівній структурі. Коли ми розглядатимемо призначення значень субшаблонам, ми побачимо, як значення називаються, використовуючи структуру дерева.
Видалення стандартного ключа
Якщо вам потрібно видалити ключ зі стандартних значень, ви можете перевизначити значення ключа як null
, у цьому випадку Helm видалить ключ з злиття перевизначених значень.
Наприклад, стабільний шаблон Drupal дозволяє налаштовувати перевірку життєздатності (liveness probe) у випадку, якщо ви налаштовуєте власний образ. Ось стандартні значення:
livenessProbe:
httpGet:
path: /user/login
port: http
initialDelaySeconds: 120
Якщо ви спробуєте перевизначити обробник livenessProbe на exec
замість httpGet
, використовуючи --set livenessProbe.exec.command=[cat,docroot/CHANGELOG.txt]
, Helm обʼєднає стандартні ключі разом з перевизначеними, що дасть нам наступний YAML:
livenessProbe:
httpGet:
path: /user/login
port: http
exec:
command:
- cat
- docroot/CHANGELOG.txt
initialDelaySeconds: 120
Однак Kubernetes тоді видасть помилку, оскільки не можна оголошувати більше одного обробника livenessProbe. Щоб це обійти, ви можете інструктувати Helm видалити livenessProbe.httpGet
, встановивши його значення в null:
helm install stable/drupal --set image=my-registry/drupal:0.1.0 --set livenessProbe.exec.command=[cat,docroot/CHANGELOG.txt] --set livenessProbe.httpGet=null
На цьому етапі ми розглянули кілька вбудованих обʼєктів і використали їх для вставки інформації в шаблон. Тепер ми розглянемо інший аспект шаблонного механізму: функції та конвеєри.