Во время разработки шаблонов helm-чартов зачастую полезно выполнять проверку корректности синтаксиса перед выполнением процесса деплоя.

werf содержит два инструмента для выполнения этой задачи:

  1. Рендеринг шаблонов
  2. Линтер шаблонов

Рендеринг

Во время рендеринга шаблонов werf возвращает содержимое всех manifest-файлов шаблона выполняя в том числе и все Go-шаблоны.

Для получения отрендеренного manifest-файла шаблона необходимо использовать команду werf helm render. Этой команде можно передавать все те-же параметры что и команде werf deploy, в том числе передавать дополнительные переменные, адрес репозитория Docker-образов и другие параметры.

Рендеринг помогает при отладке проблем деплоя связанных с ошибками в шаблонах, YAML-формате, описании объектов Kubernetes и т.д..

Линтер

Линтер выполняет проверку чарта на различные проблемы, например:

  • Ошибки в Go-шаблонах;
  • Ошибки в YAML-синтаксисе;
  • Ошибки в синтаксисе объектов Kubernetes: не корректный тип объекта, отсутствующие параметры, поля, и т.д.;
  • Логические ошибки в описании объектов Kubernetes (скоро): отсутствующие label у ресурсов, ошибочные имена у связанных ресурсов, проверка apiVersion объекта на корректность, и т.д.;
  • Возможные проблемы безопасности (скоро).

Для запуска линтера необходимо выполнить команду werf helm lint. Ее можно выполнять как локально, так и в рамках pipeline CI/CD систем в качестве автоматического теста чарта на ошибки. Этой команде можно передавать все те-же параметры что и команде werf deploy, в том числе передавать дополнительные переменные, адрес репозитория Docker-образов и другие параметры.