Чаще всего мы, как Gо-разработчики, пишем всевозможные микросервисы. И уже давно все привыкли, что управляет ими некий монстр под названием Kubernetes. Он автоматически переподнимет наш упавший под, поможет скалировать сервис и многое другое. А что кубер не делает автоматически, то по старинке делается ручками.
Однако существуют операторы, которые позволяют автоматизировать буквально что угодно.
А что сегодня используется для написания операторов? В подавляющем большинстве случаев это будет kubebuilder или operator-sdk, и оба используют библиотеку kubernetes-sigs/controller-runtime как основу.
Доклад посвящен обзору внутреннего устройства библиотеки controller-runtime, пониманию тонкостей функционирования отдельных её частей и их влиянию на разработку Kubernetes-операторов. Знание внутренних механизмов позволит иначе взглянуть на вопросы оптимизации производительности и повышения надежности операторов, построенных на базе CR.
В рамках доклада расскажу про:
* компоненты controller-runtime — Manager, Controller, Reconciler, Client и другие, их связь и внутреннее устройство;
* жизненный цикл контроллера, механизм доставки уведомлений и др.;
* подводные камни и грабли, которые могут встретиться при разработке операторов, варианты их обхода и способы оптимизации.