Простое создание Kubernetes-операторов с shell-operator: прогресс проекта за год



Kubernetes-операторы — удобный механизм для расширения возможностей этой контейнерной платформы, по праву снискавший широкое признание в среде инженеров эксплуатации и им сочувствующих. О том, как они устроены и работают, мы рассказывали в уже далёком 2017-м. А в апреле прошлого года мы представили Open Source-проект shell-operator, который значительно упростил процесс создания Kubernetes-операторов.

Для этого был разработан фреймворк, позволяющий запускать произвольные скрипты (на Bash, Python и т.п.) в случае наступления определённых событий в K8s-кластере.

За минувшее время shell-operator обрёл свою пользовательскую базу (см. подробности в конце статьи) и, конечно, новые возможности. По случаю недавнего релиза v1.0.0-beta.11 (о бета-статусе см. дальше) мы решили рассказать о том, к чему проект пришёл за время своего существования, с момента анонса первой публичной версии.

Об устройстве и назначении


Но начнем с краткого пояснения, как работает shell-operator и для чего в принципе он может понадобиться.

Shell-operator запускается в pod’е Kubernetes-кластера. Он представлен там как:

Хуки:

Таким образом, shell-operator — это прослойка между событиями в Kubernetes API и скриптами для их обработки.

image

Зачем вообще был создан shell-operator? Операторы — это стандарт для «правильной автоматизации» в рамках Kubernetes, однако их полноценная разработка (на Go с привлечением соответствующего SDK) не так проста. Наличие такого простого фреймворка, как shell-operator, значительно снижает порог вхождения в эту область, позволяя быстро и эффективно решать небольшие эксплуатационные задачи* внутри кластера. И, что не менее важно, делать это правильным путём.

О каких задачах идёт речь? Готовые примеры использования shell-operator можно найти в репозитории проекта. У нас же, в компании «Флант», мы его применяем как библиотеку (да, так тоже можно было!). Он стал основой для addon-operator, управляющего дополнительными компонентами в Kubernetes.

NB: Анонс этого Open Source-проекта (addon-operator) можно найти здесь. А в докладе «Расширяем и дополняем Kubernetes» мы подробно рассказывали о причинах его появления, взаимосвязи с shell-operator и принципах функционирования.

Теперь — о главных изменениях, представленных в shell-operator за последний год.

Основные новшества


В первых версиях shell-operator для хука был доступен только один объект — тот, который связан с событием от кластера. Развитие хуков, используемых в рамках addon-operator, привело к тому, что хук подписывался на изменение объекта, но вызывал kubectl чтобы получить актуальный список других объектов. Чтобы убрать лишние вызовы kubectl и тем самым ускорить работу хуков, реализовано несколько возможностей получить доступ к актуальным спискам объектов:


Другие значительные нововведения:

Менее значимые изменения



Статус и планы


Проект shell-operator всё ещё официально имеет статус бета-версии. Несмотря на это, как уже отмечалось выше, мы весьма интенсивно используем его как основу для addon-operator — инструмента, который постоянно эксплуатируется во множестве (100+) K8s-кластеров.

Для стабильного релиза shell-operator как публичного проекта мы планируем (как минимум):


Признание сообществом


За прошедшее время мы увидели явный интерес сообщества к shell-operator:


Также рады сообщить, что на грядущей виртуальной конференции KubeCon + CloudNativeCon Europe 2020, что пройдет в августе, будет наш доклад, посвящённый shell-operator. Подробности по нему — на сайте мероприятия.

Спасибо за интерес к shell-operator! Если у вас появились вопросы — задавайте их здесь в комментариях или в tg-канале @kubeoperator.

P.S.


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

@diafour
10.07.2020 16:08 UTC
Первоисточник