Прямо сейчас мы пишем новые главы самоучителя!
Эта страница находится в разработке.

Показать, что уже готово

TODO: аннотации от верфи

Когда вы начинаете самостоятельно разрабатывать приложения для Kubernetes и править helm-чарты — часто вылезают непонятные проблемы и важно научиться их отлаживать.

Чаще всего проблемы связаны со смысловыми опечатками (не написанные блоки конфигурации, неправильные лейблы) и синтаксическими ошибками (неправильные отступы в yaml-файле, неправильная работа с объектами).

Как вообще происходит деплой?

werf (по аналогии с Helm) берет YAML-шаблоны, которые описывают объекты Kubernetes, и генерирует из них общий манифест. Манифест отдается в API Kubernetes, который на его основе вносит все необходимые изменения в кластер.

werf отслеживает, как Kubernetes вносит изменения, и сигнализирует о результатах в реальном времени. Всё это возможно благодаря встроенной в werf библиотеке kubedog. Уже сам Kubernetes занимается выкачиванием нужных образов из Registry и запуском их на нужных серверах с указанными настройками.

Вы в любой момент можете посмотреть, какой вид приняла указанная конфигурация с помощью утилиты kubectl — она выдаёт описание в виде тех же yaml-ов, но с дополнительными атрибутами, описывающими актуальную ситуацию.

В этой главе мы рассмотрим два самых частых приёма:

  • Общий подход к отладке шаблонизатора как такового
  • Отладка http-запросов к приложению

С другими проблемами (невозможность выкатить из-за падающего деплоя, падение приложений или их частей, отсутствие связи между компонентами) вы можете обратиться за помощью в сообщество @werf_ru или к знакомым инженерам поддержки.

Общий подход к отладке шаблонизации

Для отладки шаблонизации есть команда werf render. Примечание: при локальном запуске эти команды могут жаловаться на нехватку данных, которые в ином случае были бы проброшены из CI. Например, на данные о теге собранного образа. Это нормально.

Это позволяет отлаживать сложные конструкции с использованием различных функций helm.

Отрендеренные шаблоны обычно внимательно просматривают на предмет смысловых ошибок и/или используют для того, чтобы найти ошибки в использовании функций.

Приложение задеплоено, но не отвечает

Если вы задеплоили приложение, но оно не отвечает по http на ожидаемом адресе — попробуйте отладить проблему с помощью схемы ниже. Примечание: в случае, если ваш кластер имеет нестандартную конфигурацию, например, имеет другой балансер — сценарий отладки может отличаться.

Для отладки полезно понимать, как идёт запрос и как продиагностировать каждый элемент цепочки.