Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Операторы в кластерах Red Hat OpenShift де-факто являются стандартом для расширения функций и возможностей кластера.
Приложения и промежуточное ПО упакованы как операторы и доступны на OperatorHub. Хотя большинство операторов можно установить за несколько кликов, для некоторых, более сложных операторов, требуется более глубокое понимание инфраструктуры. Это похоже на воду для кухонного слива, большинству людей просто достаточно знать, что она есть; тем не менее, знание того, что находится там внутри, в водопроводе, необходимо для решения проблем и исправления ошибок, когда что-то работает не так, как ожидалось.
Эта статья пытается объяснить основные объекты и процессы, составляющие операторов и структуру операторов. Содержание этой статьи разделено на расширение OperatorHub и развертывание Оператора.
Расширение OperatorHub
OperatorHub заполняется из содержимого в OperatorSource и CatalogSources. Большинство новых источников теперь используют формат CatalogSource. Я объясню разницу между CatalogSource и OperatorSource и то, как они работают, в последующих статьях:
Эти источники можно посмотреть в веб-консоли в разделе Administration → Cluster Settings → Global Configuration → OperatorHub → Sources. Ниже приведен снимок экрана этого меню:
Источник каталога состоит из не исполняемого (non-executable) образа контейнера. Образ контейнера содержит файл, который действует как каталог PackageManifests, который можно установить. Когда CatalogSource определен, OpenShift создает задание для загрузки образа каталога, получения отдельного PackageManifest и создания объектов в OpenShift. Каждый объект PackageManifest представляет собой плитку, которую вы можете увидеть в меню Operators> OperatorHub веб-консоли OpenShift:
Каждый из объектов PackageManifest содержит уникальное определение того, как добавлять операторов, включая следующее:
Channels: Путь для установки и обновления пакета оператора.
Cluster Service Version: определение пакета для конкретной версии оператора, CSV-файлы позволяют оператору, который подписывается на канал, динамически развиваться (обновляться).
Custom Resource Definition: часть CSV, определяющая структуру настраиваемого ресурса, которым будет управлять оператор.
Container images: образы, которые будут загружены при установке этого CSV-файла.
Развертывание оператора
Когда вы выбираете установку Operator из OperatorHub, вы создаете объект подписки. Он подписывается на канал в PackageManifest. Понятие подписки допускает автоматическое обновление (как определено в поле installPlanApproval) при обновлении CSV в PackageManifest:
CSV из канала создается и генерирует installPlan, который содержит список ресурсов, которые должны быть созданы для этого оператора. Подписка также определяет Custom Resource Definition, которым управляет этот оператор. После успешной установки (фаза CSV становится успешной из-за команды oc get csv), это означает, что оператор установлен:
После установки оператора у вас есть Deployment с pod’ом, в котором запущен процесс контроллера оператора. Контроллер оператора запускает цикл, который отслеживает Custom Resources в своем пространстве имен (или во всех пространствах имен, как определено методом установки). При создании Custom Resources он может выполнять дополнительные задачи, например создавать дополнительные ресурсы в кластере.
На приведенном выше рисунке запускается создание кластера хранилища контейнеров OpenShift на основе содержимого настраиваемого ресурса StorageCluster.