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

Виправлення помилок у шаблонах

Виправлення помилок у шаблонах може бути складним, оскільки відрендерені шаблони надсилаються на сервер API Kubernetes, який може відхиляти YAML-файли з інших причин, окрім форматування.

Є кілька команд, які можуть допомогти в процесі налагодження:

  • helm lint є вашим основним інструментом для перевірки того, чи ваш чарт відповідає найкращим практикам.
  • helm template --debug дозволяє тестувати рендеринг шаблонів чарту локально.
  • helm install --dry-run --debug також рендерить ваш чарт локально без його встановлення, але також перевіряє, чи конфліктують ресурси вже з запущеними на кластері. Налаштування --dry-run=server додатково виконає будь-які lookup у вашому чарті на сервері.
  • helm get manifest: Це хороший спосіб побачити, які шаблони встановлені на сервері.

Коли ваш YAML не проходить перевірку, але ви хочете побачити, що було згенеровано, простий спосіб отримати YAML — закоментувати проблемний розділ у шаблоні, а потім повторно запустити helm install --dry-run --debug:

apiVersion: v2
# деяка: проблемна секція
# {{ .Values.foo | quote }}

Вищенаведене буде відрендерене і повернуто з коментарями, що дозволяє швидко переглядати згенерований контент без помилок парсингу YAML:

apiVersion: v2
# деяка: проблемна секція
# "bar"

Це забезпечує швидкий спосіб перегляду згенерованого контенту без блокування помилками парсингу YAML.

Налагодження функції lookup​

Функція lookup запитує ресурси Kubernetes під час рендерингу шаблону. Коли lookup повертає порожній результат, буває складно зʼясувати чому. Щоб бачити діагностичні повідомлення, увімкніть режим налагодження:

helm install --debug myrelease ./mychart

З увімкненим журналюванням налагодження Helm записує в журнал apiVersion, kind, namespace та імʼя, коли lookup повертає порожній результат:

  • "lookup: resource not found" — Конкретний ресурс не знайдено в кластері (для пошуку одного обʼєкта, як-от lookup "v1" "ConfigMap" "default" "my-config")
  • "lookup: resource list not found" — Жоден ресурс не відповів запиту (для пошуку списків, як-от lookup "v1" "ConfigMap" "default" "")

Часті причини, чому lookup може повертати порожній результат:

  • Ресурс не існує в кластері
  • Дозволи RBAC перешкоджають доступу до ресурсу
  • Запуск helm template без доступу до кластера (використовуйте --dry-run=server, щоб підключитися)
  • Невірні параметри apiVersion, kind, namespace або name