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