Operator

Содержание

Обзор

На основе фреймворка OLM (Operator Lifecycle Manager), OperatorHub предоставляет единый интерфейс для управления установкой, обновлением и жизненным циклом Операторов.
Администраторы могут использовать OperatorHub для установки и управления Операторами, обеспечивая полную автоматизацию жизненного цикла приложений Kubernetes, включая создание, обновления и удаление.

OLM в основном состоит из следующих компонентов и CRD:

  • OLM (olm-operator): Управляет полным жизненным циклом Операторов, включая установку, обновления и обнаружение конфликтов версий.
  • Catalog Operator: Управляет каталогами Операторов и генерирует соответствующие InstallPlans.
  • CatalogSource: CRD с областью видимости namespace, управляющий источником каталога Операторов и предоставляющий метаданные Оператора (например, информацию о версиях, управляемых CRD). Платформа предоставляет 3 стандартных CatalogSource: system, platform и custom. Операторы из system не отображаются в OperatorHub.
  • ClusterServiceVersion (CSV): CRD с областью видимости namespace, описывающий конкретную версию Оператора, включая необходимые ресурсы, CRD и разрешения.
  • Subscription: CRD с областью видимости namespace, описывающий подписанный Оператор, его источник, канал получения и стратегию обновления.
  • InstallPlan: CRD с областью видимости namespace, описывающий фактические операции установки (например, создание Deployments, CRD, RBAC). Оператор будет установлен или обновлён только после утверждения InstallPlan.

Источники Операторов

Для уточнения стратегии жизненного цикла различных Операторов в OperatorHub платформа предоставляет 5 типов источников:


  1. Предоставляется и поддерживается , включая полное управление жизненным циклом, обновления безопасности, техническую поддержку и обязательства по SLA.

  2. Curated
    Отобранные из сообщества с открытым исходным кодом, соответствующие версиям сообщества, без модификаций кода или перекомпиляции. предоставляет рекомендации и обновления безопасности, но не гарантирует SLA или управление жизненным циклом.

  3. Community
    Предоставляются сообществом с открытым исходным кодом, обновляются периодически для обеспечения возможности установки, но функциональная полнота не гарантируется; SLA и поддержка отсутствуют.

  4. Marketplace
    Предоставляются и поддерживаются сторонними поставщиками, сертифицированными . обеспечивает поддержку интеграции с платформой, а поставщик отвечает за основное сопровождение.

  5. Custom
    Разработаны и загружены пользователем для удовлетворения индивидуальных требований.

Подготовка к установке

Перед установкой Оператора необходимо ознакомиться со следующими ключевыми параметрами:

Режим установки

OLM предоставляет три режима установки:

  • Single Namespace
  • Multi Namespace
  • Cluster

Рекомендуется режим Cluster (AllNamespaces). Платформа в будущем будет обновлена до OLM v1, который поддерживает только режим установки AllNamespaces. Поэтому режимы SingleNamespace и MultiNamespace следует избегать.

Канал обновлений

Если Оператор предоставляет несколько каналов обновлений, можно выбрать канал для подписки, например, stable.

Стратегия утверждения

Варианты: Automatic или Manual.

  • Automatic: OLM автоматически обновляет Оператора при выпуске новой версии в выбранном канале.
  • Manual: При появлении новой версии OLM создаёт запрос на обновление, который должен быть вручную утверждён администратором кластера перед выполнением обновления.

Примечание: Операторы от поддерживают только режим Manual; в противном случае установка завершится ошибкой.

Место установки

Рекомендуется создавать отдельный namespace для каждого Оператора.

Если несколько Операторов используют один namespace, их Subscriptions могут быть объединены в один InstallPlan:

  • Если InstallPlan в этом namespace требует ручного утверждения и находится в ожидании, это может блокировать автоматические обновления других Subscriptions, включённых в тот же InstallPlan.

Установка через веб-консоль

  1. Войдите в веб-консоль и переключитесь в режим Administrator.

  2. Перейдите в Marketplace > OperatorHub.

  3. Если статус Absent:

    • Скачайте пакет Оператора из Custom Portal или обратитесь в службу поддержки.
    • Загрузите пакет в целевой кластер с помощью violet (см. CLI).
    • На странице Marketplace > Upload Packages переключитесь на вкладку Operator и подтвердите загрузку.
  4. Если статус Ready, нажмите Install и следуйте руководству пользователя Оператора.

Установка через YAML

Ниже приведены примеры установки Операторов от (только Manual) и из не- источников (Manual или Automatic).

Ручная установка (Manual)

harbor-ce-operator — Оператор от , поддерживающий только Manual утверждение.
В режиме Manual, даже при выпуске новой версии, Оператор не обновится автоматически. Необходимо вручную утвердить обновление, чтобы OLM выполнил его.

1. Проверка доступных версий

(
  echo -e "CHANNEL\tNAME\tVERSION"
  kubectl get packagemanifest harbor-ce-operator -o json | jq -r '
    .status.channels[] |
    .name as $channel |
    .entries[] |
    [$channel, .name, .version] | @tsv
  '
) | column -t -s $'\t'

Пример вывода:

CHANNEL   NAME                         VERSION
harbor-2  harbor-ce-operator.v2.12.11  2.12.11
harbor-2  harbor-ce-operator.v2.12.10  2.12.10
stable    harbor-ce-operator.v2.12.11  2.12.11
stable    harbor-ce-operator.v2.12.10  2.12.10

Пояснения к полям:

  • CHANNEL: имя канала Оператора
  • NAME: имя ресурса CSV
  • VERSION: версия Оператора

2. Подтверждение catalogSource

kubectl get packagemanifests harbor-ce-operator -ojsonpath='{.status.catalogSource}'

Пример вывода:

platform

Это означает, что harbor-ce-operator взят из catalogSource platform.

3. Создание namespace

kubectl create namespace harbor-ce-operator

4. Создание Subscription

apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
  annotations:
    cpaas.io/target-namespaces: ""
  name: harbor-ce-operator-subs
  namespace: harbor-ce-operator
spec:
  channel: stable
  installPlanApproval: Manual
  name: harbor-ce-operator
  source: platform
  sourceNamespace: cpaas-system
  startingCSV: harbor-ce-operator.v2.12.11

Пояснения к полям:

  • annotation cpaas.io/target-namespaces: рекомендуется оставить пустым; пустое значение означает установку на весь кластер.
  • .metadata.name: имя Subscription (должно соответствовать DNS, максимум 253 символа).
  • .metadata.namespace: namespace, в котором будет установлен Оператор.
  • .spec.channel: канал подписки Оператора.
  • .spec.installPlanApproval: стратегия утверждения (Manual или Automatic). Здесь Manual требует ручного утверждения установки/обновления.
  • .spec.source: catalogSource Оператора.
  • .spec.sourceNamespace: должно быть установлено в cpaas-system, так как все catalogSource, предоставляемые платформой, находятся в этом namespace.
  • .spec.startingCSV: указывает версию для установки при Manual утверждении; если пусто, по умолчанию устанавливается последняя версия в канале. Для Automatic не требуется.

5. Проверка статуса Subscription

kubectl -n harbor-ce-operator get subscriptions harbor-ce-operator-subs -o yaml

Основные поля вывода:

  • .status.state: UpgradePending — Оператор ожидает установки или обновления.
  • Condition InstallPlanPending = True: ожидает ручного утверждения.
  • .status.currentCSV: текущий подписанный CSV.
  • .status.installPlanRef: связанный InstallPlan, который должен быть утверждён перед установкой.

6. Утверждение InstallPlan

kubectl -n harbor-ce-operator get installplan \
  "$(kubectl -n harbor-ce-operator get subscriptions harbor-ce-operator-subs -o jsonpath='{.status.installPlanRef.name}')"

Пример вывода:

NAME            CSV                           APPROVAL   APPROVED
install-27t29   harbor-ce-operator.v2.12.11   Manual     false

Утвердить вручную:

PLAN="$(kubectl -n harbor-ce-operator get subscription harbor-ce-operator-subs -o jsonpath='{.status.installPlanRef.name}')"
kubectl -n harbor-ce-operator patch installplan "$PLAN" --type=json -p='[{"op": "replace", "path": "/spec/approved", "value": true}]'

Дождитесь создания CSV; статус изменится на Succeeded:

kubectl -n harbor-ce-operator get csv

Пример вывода:

NAME                          DISPLAY                  VERSION   REPLACES                      PHASE
harbor-ce-operator.v2.12.11   Alauda Build of Harbor   2.12.11   harbor-ce-operator.v2.12.10   Succeeded

Пояснения к полям:

  • NAME: имя установленного CSV
  • DISPLAY: отображаемое имя Оператора
  • VERSION: версия Оператора
  • REPLACES: CSV, заменённый при обновлении
  • PHASE: статус установки (Succeeded — успешно)

Автоматическая установка (Automatic)

clickhouse-operator — Оператор из не- источника, у которого стратегия утверждения может быть Automatic.
В режиме Automatic Оператор обновляется автоматически при выпуске новой версии без ручного утверждения.

1. Проверка доступных версий

(
  echo -e "CHANNEL\tNAME\tVERSION"
  kubectl get packagemanifest clickhouse-operator -o json | jq -r '
    .status.channels[] |
    .name as $channel |
    .entries[] |
    [$channel, .name, .version] | @tsv
  '
) | column -t -s $'\t'

Пример вывода:

CHANNEL   NAME                           VERSION
stable    clickhouse-operator.v0.18.2    0.18.2

2. Подтверждение catalogSource

kubectl get packagemanifests clickhouse-operator -ojsonpath='{.status.catalogSource}'

Пример вывода:

community-operators

Это означает, что clickhouse-operator взят из catalogSource community-operators.

3. Создание namespace

kubectl create namespace clickhouse-operator

4. Создание Subscription

apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
  annotations:
    cpaas.io/target-namespaces: ""
  name: clickhouse-operator-subs
  namespace: clickhouse-operator
spec:
  channel: stable
  installPlanApproval: Automatic
  name: clickhouse-operator
  source: community-operators
  sourceNamespace: openshift-marketplace

Пояснения к полям такие же, как в Manual.

5. Проверка статуса Subscription

kubectl -n clickhouse-operator get subscriptions clickhouse-operator -oyaml

6. Проверка CSV

kubectl -n clickhouse-operator get csv

Пример вывода:

NAME                           DISPLAY                VERSION   PHASE
clickhouse-operator.v0.18.2    ClickHouse Operator    0.18.2    Succeeded

Установка прошла успешно.

Процесс обновления

  1. Загрузите новую версию Оператора.

  2. Обновления выполняются согласно стратегии, настроенной в Subscription:

    • Автоматическое обновление: обновляется автоматически после загрузки.

    • Ручное обновление:

      • Пакетное обновление: выполняется на странице Platform Management > Cluster Management > Cluster > Features.
      • Индивидуальное обновление: вручную утверждайте запросы на обновление в OperatorHub.

Примечание: Пакетные обновления поддерживаются только для Операторов от .