Добавить в корзинуПозвонить
Найти в Дзене
Машинное обучение

Kroc - небольшой, но очень показательный проект для тех, кто хочет понять Kubernetes Operators не по слайдам, а по коду

Идея простая: вы описываете CRD Kroc, указываете, за какими объектами в Kubernetes нужно следить, и задаёте шаблон ресурса, который должен быть создан на основе найденного объекта. Например, оператор может смотреть за Deployment, брать из него нужные поля и автоматически создавать связанные Pod, Service, ConfigMap или другие Kubernetes-объекты. Внутри используется Go и Kubebuilder. Самое интересное - реактивная модель. Если исходный объект изменился, производные ресурсы пересоздаются. Если кто-то вручную удалил созданный объект, оператор создаст его снова, чтобы вернуть кластер в нужное состояние. По сути, это хороший минимальный пример того, как работает operator pattern в Kubernetes: наблюдаем за состоянием сравниваем с желаемым создаём или пересоздаём ресурсы держим систему синхронизированной Архитектура тоже полезная для разбора: проект разделяет логику на несколько контроллеров. Один отвечает за CRD и конфигурацию, второй наблюдает за внешними Kubernetes-объектами, третий

Kroc - небольшой, но очень показательный проект для тех, кто хочет понять Kubernetes Operators не по слайдам, а по коду.

Идея простая: вы описываете CRD Kroc, указываете, за какими объектами в Kubernetes нужно следить, и задаёте шаблон ресурса, который должен быть создан на основе найденного объекта.

Например, оператор может смотреть за Deployment, брать из него нужные поля и автоматически создавать связанные Pod, Service, ConfigMap или другие Kubernetes-объекты.

Внутри используется Go и Kubebuilder.

Самое интересное - реактивная модель.

Если исходный объект изменился, производные ресурсы пересоздаются.

Если кто-то вручную удалил созданный объект, оператор создаст его снова, чтобы вернуть кластер в нужное состояние.

По сути, это хороший минимальный пример того, как работает operator pattern в Kubernetes:

наблюдаем за состоянием

сравниваем с желаемым

создаём или пересоздаём ресурсы

держим систему синхронизированной

Архитектура тоже полезная для разбора: проект разделяет логику на несколько контроллеров.

Один отвечает за CRD и конфигурацию, второй наблюдает за внешними Kubernetes-объектами, третий создаёт производные ресурсы из шаблонов.

Для новичков в Kubernetes Operators это намного понятнее, чем сразу лезть в большие production-операторы.

Kroc хорошо показывает базовую механику: CRD, reconcile loop, watch, template rendering и управление жизненным циклом дочерних объектов.

https://github.com/pawelcit/kroc