Всім привіт! Я знову на зв’язку і хочу повідомити вам радісну новину - 2 частина циклу статей про оператори k8s ресурсів вже написана і ви почнете її читати через декілька секунд. Ті, хто потрапив відразу на 2 частину - пропоную вам ознайомитись з першою частиною, а там, взагалі-то, є мій план, якого я намагаюсь притримуватись 😄

Від себе хочу сказати, що тему цю я обрав не випадково. Звичайно, вона пов’язана з моєю роботою, але насправді, це про щось більше, ніж просто розробку. Останній рік набирає популярності напрям Platform Engineering, що являє собою проєктування та розробку внутрішньої системи компанії для швидкого управління інфраструктурою в клаудах без особливих DevOps знань (Internal Developer Platform).

Я вважаю, що роки через 2-3 ринок потребуватиме таких вузько-направлених спеціалістів, тому придивіться до цього напряму.

Вступ

У першій частині ми розглянули теоретичні аспекти роботи з операторами Kubernetes та зрозуміли їх важливість у сучасній розробці. Тепер настав час перейти до практичної частини та створити власний оператор, використовуючи Operator SDK та мову програмування Go. Давайте разом, крок за кроком пройдемо процес розробки, починаючи від налаштування середовища розробки до фінального розгортання нашого оператора в кластері. Особливої уваги для другорядних дій не буде. Я очікую, що ви маєте певний бекграунд в Go і взагалі в практичній розробці.

Особливу увагу приділимо створенню Custom Resource Definition (CRD) та імплементації контролера, який буде відслідковувати та реагувати на зміни наших користувацьких ресурсів. В процесі розробки розглянемо основні патерни та найкращі практики, які використовуються при створенні операторів. Також, ми детально розберемо структуру проєкту та основні компоненти, які необхідні для успішної роботи оператора. Навчимося правильно обробляти події в кластері та реагувати на них відповідним чином.

Окремо розглянемо питання тестування нашого оператора та налагодження його роботи в 3й частині цього циклу.

Важливим аспектом буде розгляд механізмів обробки помилок та відновлення після збоїв. Наприкінці, обговоримо можливі сценарії використання створеного оператора та перспективи його подальшого розвитку. Весь процес буде супроводжуватися практичними прикладами та їх детальними поясненнями. Цей практичний досвід допоможе вам краще зрозуміти внутрішню роботу операторів Kubernetes та підготує до створення власних рішень для автоматизації управління ресурсами в кластері.

Ресурси для практики

Увесь код, що стосується практичної частини можна знайти на нашому GitHub:

https://github.com/uagolang/k8s-operator

Отже, давайте, нарешті, спробуємо усе це на практиці. Для початку, давайте визначимось із задачами, які ставляться нам для того, щоб вирішити їх за допомогою CRD контролера.

Приклад: Автоматизація управління Valkey (Open-Source Redis) в Kubernetes

Можливо хтось не знає, але Redis став платним. Valkey - його open-source аналог.

Проблема

У багатьох компаніях розробники стикаються з проблемою ручного налаштування інфраструктури при розгортанні нових середовищ розробки або тестування. Уявімо, що ми працюємо в такій компанії і нам поставили задачу автоматизувати цей процес. Виходячи з нашої задачі, зазвичай виникають такі проблеми: