Виправлення помилок у шаблонах
Виправлення помилок у шаблонах може бути складним, оскільки відрендерені шаблони надсилаються на сервер 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