Во время разработки шаблонов helm-чартов зачастую полезно выполнять проверку корректности синтаксиса перед выполнением процесса деплоя.
werf содержит два инструмента для выполнения этой задачи:
Рендеринг
Во время рендеринга шаблонов 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-образов и другие параметры.