Deckhouse Kubernetes Platform (DKP) может работать как со встроенными модулями (идут в составе DKP), так и с модулями, которые можно получить из источника модулей. В этом разделе описано, как создать и запустить в кластере собственный модуль с использованием источника модулей.

Существуют три основных этапа жизни модуля:

  • Разработка: создание кода модуля и его структуры в Git-репозитории. В разделе Структура модуля описывается, какие компоненты существуют и в каких директориях находятся.
  • Сборка и публикация: создание артефакта модуля и загрузка его в container registry. В разделе Сборка и публикация разбирается, где хранятся образы в registry и какие образы доступны.
  • Запуск в кластере: установка модуля в кластер DKP, его включение, настройка и проверка, что он работает правильно. В разделе Запуск в кластере разбирается, как запустить настроенный модуль в кластере.

Требования

Для разработки модулей DKP вам понадобятся следующие инструменты:

  • git — система контроля версий;
  • sed — редактор потоков;
  • yq — CLI-утилита для обработки данных в форматах JSON, YAML и XML;
  • jq — CLI-утилита для обработки данных в форматах JSON, YAML и XML;
  • werf — (не обязательно) CLI-утилита для сборки образов. Она понадобится, если вы хотите собрать артефакты модуля локально;
  • crane — (не обязательно) CLI-утилита для работы с container registry. Может понадобиться при отладке.

Container registry, в котором хранятся артефакты модуля, должен поддерживать вложенную структуру репозиториев. Можно использовать такие registry, как Docker Registry v2 или Harbor.

Прежде чем начать

Чтобы понять принципы, по которым работают модули DKP, ознакомьтесь с addon-operator и shell-operator.

  • Прочитайте документацию операторов о концепции хуков, например, что такое конфигурация хука и какие функции она предоставляет. С помощью конфигурации настраиваются данные, которые будут доступны из хука.
  • Ознакомьтесь с информацией о биндингах. Биндинги — это события, при которых срабатывает хук. Биндинги указываются в конфигурации хука. Хук может сработать не только из-за событий в Kubernetes, а также, например, по расписанию или перед запуском модуля.

    Хук позволяет сохранять значения в памяти и использовать их позже при рендеринге шаблонов Helm. Об этой особенности и цикле работы модуля рекомендуем прочитать в документации Hooks and Helm values.

  • Ознакомьтесь с концепцией снэпшотов. С помощью снэпшотов можно реализовать подход reconciliation loop, более эффективный, чем подписка на события.

    Этим способом в DKP реализована поддержка всех существующих хуков внутренних модулей.

  • Кроме того, хуки можно использовать вместо экспортера Prometheus. Хуки могут предоставлять метрики, которые DKP будет экспортировать. Ознакомьтесь с информацией о метриках.

Вопросы по документации

В разделе Разработка и отладка собрана информация о том, какие инструменты можно применять при разработке модуля, и о подходах к поиску ошибок в работе модуля.

Присоединяйтесь к сообществу, где вам обязательно помогут ответить на появившиеся вопросы.