Отобразить результат шаблонизации отдельного файла

Если вы хотите посмотреть результат рендеринга только для конкретного файла шаблона (например, при отладке одного ресурса) или нескольких файлов, используйте флаг -s, --show-only=[], например:

$ werf render -s .helm/charts/frontend/templates/deployment.yaml
---
# Source: demo-app/charts/frontend/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  annotations:
    meta.helm.sh/release-name: demo-app
    meta.helm.sh/release-namespace: demo-app
...

Вычислить и отобразить все сервисные Values

Иногда нужно понять, какие service values передаются в шаблоны от werf. Для этого используется команда werf helm get-autogenerated-values, например:

$ werf helm get-autogenerated-values
global:
  werf:
    name: demo-app
    version: v2.36.4
werf:
  commit:
    date:
      human: 2025-05-21 14:39:58 +0300 +0300
      unix: 1747827598
    hash: 577ec7a7caf4d5f94d5cf05df5c0fb74f5a8b6ac
  image:
    backend: REPO:TAG
    frontend: REPO:TAG
  is_stub: true
  name: demo-app
  namespace: demo-app
  repo: REPO
  stub_image: REPO:TAG
  tag:
    backend: TAG
    frontend: TAG
  version: v2.36.4

Специальные отладочные функции

Флаг --debug-templates включает расширенный режим отладки Go-шаблонов в werf.

В этом режиме:

  • Часть ошибок становится более подробной, включая дополнительный контекст, который скрыт в обычном режиме.
  • Становятся доступны специальные функции для отладки шаблонов.
  • Появляется возможность вывода отладочной информации в лог без влияния на результат шаблонизации.

Подробный формат ошибок включается при использовании --debug-templates, но отключён в обычном режиме, чтобы пользователь случайно не раскрыл потенциально чувствительные данные (например, секреты или внутренние значения).

Ниже приведены сценарии, в которых эти функции могут быть полезны, а также их поведение в зависимости от режима отладки.

Отобразить произвольную строку в логе

Вы можете вставить сообщения в лог на произвольных этапах шаблонизации с помощью printf_debug. Это удобно для отслеживания значений переменных, выполнения условий и порядка шаблонизации.

  • С --debug-templates: сообщение выводится в лог, не влияет на результат шаблонизации;
  • Без --debug-templates: функция ничего не делает.

Пример:

{{ printf_debug (printf "Current value: %v" .Values.someVar) }}

Отобразить дамп любой структуры в логе

Если нужно увидеть значение переменной, особенно сложной (например, .Values или $), используйте dump_debug.

  • С --debug-templates: структура значения логируется в человекочитаемом виде, не влияет на результат шаблонизации;
  • Без --debug-templates: функция ничего не делает.

Пример:

{{ dump_debug $.Values.werf }}

Отладка функции include

Для отладки функций include, замените их на include_debug и включите режим отладки шаблонов с --debug-templates. Теперь, во время шаблонизации, в логах будет отображаться отладочная информация о каждом вызове include.

  • С --debug-templates: работает как include, но также логирует имя шаблона, его содержимое и результат его шаблонизации;
  • Без --debug-templates: работает как обычный include.

Пример:

{{ include_debug "my-template" . }}

Отладка функции tpl

Для отладки функций tpl, замените их на tpl_debug и включите режим отладки шаблонов с --debug-templates. Теперь, во время шаблонизации, в логах будет отображаться отладочная информация о каждом вызове tpl.

  • С --debug-templates: работает как tpl, но также логирует переданную строку-шаблон и результат шаблонизации;
  • Без --debug-templates: работает как обычный tpl.

Пример:

{{ tpl_debug "{{ .Values.env }}" . }}