Операторы — это программные расширения для Kubernetes, которые используют Custom Resources, чтобы управлять приложениями (или их компонентами). Операторы следуют принципам Kubernetes, в особенности, принципу цикла управления.
Паттерн "Оператор" пытается воспроизвести основную цель оператора — человека, который управляет сервисом (или их группой). Поскольку операторы поддерживают приложения и сервисы и знакомы с их спецификой, у них есть глубокое понимание того, как приложения должны работать, как их разворачивать и как решать возникающие с ними проблемы.
Зачастую инженеры, использующие Kubernetes, автоматизируют повторяющиеся задачи. Паттерн "Оператор" дает возможность писать код для автоматизации специфических задач, когда это не получается сделать средствами самого Kubernetes.
Kubernetes создан для автоматизации: из коробки вы получаете множество встроенной автоматизации. Вы можете использовать Kubernetes, чтобы автоматизировать развертывание и запуск приложений, но кроме того, можно доработать Kubernetes собственными автоматизациями.
Паттерн "Оператор" позволяет расширить возможности кластера, не меняя код Kubernetes; достаточно привязать контроллеры к вашим ресурсам. Операторы — это клиенты Kubernetes API, которые выполняют роль контроллеров для Custom Resources.
Ниже приведены примеры задач, которые вы можете автоматизировать с помощью операторов:
Как именно может выглядеть оператор? Рассмотрим на примере:
Чтобы развернуть оператор в кластере, обычно создают Custom Resource Definition и соответствующий контроллер. Как правило, контроллер запускается как обычное контейнеризованное приложение, то есть, вне управляющего слоя; например, его можно запустить как деплоймент.
Когда оператор развернут, вы можете им пользоваться, добавляя, изменяя или удаляя те сущности, которыми он управляет. В примере с оператором, ранее развернутым как деплоймент, вы можете выполнить команды:
kubectl get SampleDB # найдем ранее настроенную базу данных
kubectl edit SampleDB/example-database # вручную изменим ее настройки
…И все готово: оператор позаботится о том, чтобы применить изменения; в то же время он продолжит поддерживать работу уже запущенного приложения.
Если в существующей экосистеме еще нет оператора, который делает то, что вам нужно, вы можете написать свой собственный.
Вы можете реализовать оператор (контроллер, если быть точнее) на любом языке или в любой среде, которые могут быть клиентами Kubernetes API.
Вы можете использовать библиотеки и инструменты ниже, чтобы написать свой Cloud Native-оператор.
Объекты этой страницы ссылаются на сторонние продукты или проекты, реализующие функциональность, которая требуется Kubernetes. Авторы Kubernetes не несут ответственность за эти сторонние продукты или проекты. Подробнее читайте в инструкциях по сайту CNCF.
Перед тем, как предлагать изменения, которые добавят новую стороннюю ссылку, необходимо прочитать руководство по контенту.