Первый major-релиз addon-operator для Kubernetes — v1.0.0. Стабильные Go-хуки и не только

73f3be28ee1f6197630ae81c85506347

У addon-operator, нашего Open Source-инструмента для работы с дополнениями в Kubernetes, появился долгожданный релиз v1.0.0 (а вскоре и корректирующий v1.0.1). Напомним, что с помощью addon-operator можно управлять модулями к K8s, созданными с использованием другого Open Source-проекта, — shell-operator. Последний же предназначен для того, чтобы просто и быстро создавать Kubernetes-операторы.

Для знакомства с основными возможностями этих инструментов рекомендуем обзорные статьи про addon-operator и shell-operator, , а также текстовую версию видеодоклада »Расширяем и дополняем Kubernetes».

С первым major-релизом в addon-operator появилось немало новых фич. Расскажем о самых важных.

Изменения в addon-operator v1.0

Новые фичи общего характера:

  • Добавлена переменная HELM_IGNORE_RELEASE, чтобы установить addon-operator с помощью Helm в тот же namespace, где будут установлены модули (подробнее см. в #176 и в документации).

  • В конфигурации хука появились параметры executionMinPeriod и executionBurst из shell-operator (подробнее см. в #256).Они задают максимальную частоту выполнения хука, чтобы у него была возможность обрабатывать всплески событий. 

  • Разделены экземпляры клиента Kubernetes для хуков, патчеров и мониторинга ресурсов Helm. У каждого клиента теперь свои настройки throttling (подробнее в документации и в коде), поэтому уменьшение частоты запросов от мониторов Helm-ресурсов не затормаживает события на запуск хуков.

  • Ускорен выкат Helm-релизов модулей благодаря изменениям в механизме auto-healing (#234):

    • Helm 3 стал частью addon-operator. Если в образе нет бинарника Helm, то будет использоваться встроенный Helm. Это ускоряет обработку шаблонов модулей перед их запуском.

    • Монитор Helm-ресурсов запрашивает информацию о ресурсах параллельно и заканчивает свою работу, как только найдёт несуществующий ресурс.

  • Устранена плавающая ошибка при старте подписок хука: добавлено ожидание синхронизированного состояния кэша информеров. Изменение пришло из shell-operator (#326).

  • Кодовая база переведена на Go 1.16.

Около года назад в addon-operator появилась поддержка хуков, написанных на языке Go. В частности, мы воспользовались этим в своей Kubernetes-платформе Deckhouse, модули которой переписали на Go. За минувшее время поддержка Go-хуков дорабатывалась и улучшалась, благодаря чему больше не является экспериментальной (хотя всё ещё нуждается в документации).

В контексте Go-хуков релиз addon-operator 1.0 принёс:

  • Добавлен MetricsCollector для упрощения работы с метриками (#223, #211).

  • Патчи Kubernetes объектов теперь накапливаются через PatchCollector и применяются после работы хука, как и для обычных хуков ​​(#229).

  • Экспериментальная возможность динамических привязок. Теперь во время работы хука можно «переподписаться» на другие объекты, изменив apiVersion и kind, или остановить работу подписки (подробнее см. в #216).

  • Множество улучшений во внутреннем устройстве Go-хуков (#212, #210, #206, #200, #196 и другие).

Изменения в версии 1.0.1, выпущенной сегодня:

  • Сообщения от Kubernetes клиентов и helm3lib перенаправляются в logrus для формирования валидного JSON-лога (#253).

  • Исправлен откат Pending-релизов в helm3lib​ (#254).

Одновременно с релизом addon-operator 1.0 вышло и незначительное обновление shell-operator — 1.0.4. Главным изменением в нем стала аналогичная миграция кодовой базы на Go 1.16.

Развитие проектов

В настоящий момент проекты фактически развиваются вместе с Kubernetes-платформой Deckhouse, будучи её важными компонентами. Новые фичи добавляются по мере появления потребности в них именно в контексте развития платформы. Несмотря на это, оба инструмента популярны и как самостоятельные проекты: shell-operator набрал уже 1400+ звезд на GitHub, addon-operator — 300+. В частности, нам известно об их применении в таких компаниях, как KubeSphere, Confluent и Adobe.

P. S. 

Читайте также в нашем блоге:

© Habrahabr.ru