Всем привет!
В сети не всегда просто найти хорошую статью про написание собственных Kubernetes Operators/Controllers. Особенно, если интересует не «общая картинка», а какие-то частности.
В статье Автор разбирает разницу между конструкциями
for(), owns() и get() при регистрации controller через SetupWithManager.Для этого рассматривается пример:
🍭 Создается Custom Resource
🍭 Controller узнает об этом и создает pod (
nginx:latest), присваивает ему label – foo:bar
🍭 Controller должен гарантировать наличие указанных label. Т.е. add/update/delete не должны «срабатывать»Далее расписывается логика реконсиляции controller’a. Наглядно описывается как можно это реализовать не делая еще один Controller, который бы смотрел за каждым pod и его labels – как раз тот самый
owns().В завершении – описание функции
watches(), которая лежит в основе for() и owns(). В статье много примеров и кода для собственного воспроизведения примера. P.S. Про awesome подборку написания Kubernetes Operators мы писали тут.