Перейти до основного вмісту
Версія: 3.22.0

Файли значень

У попередньому розділі ми розглянули вбудовані обʼєкти, які пропонують шаблони 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

На цьому етапі ми розглянули кілька вбудованих обʼєктів і використали їх для вставки інформації в шаблон. Тепер ми розглянемо інший аспект шаблонного механізму: функції та конвеєри.