У 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.
Читайте также в нашем блоге: