• Русский
  • Operator

    Содержание

    Обзор

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

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

    • OLM (olm-operator): Управляет полным жизненным циклом Операторов, включая установку, обновления и обнаружение конфликтов версий.
    • Catalog Operator: Управляет каталогами Операторов и генерирует соответствующие InstallPlan.
    • 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:

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

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

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

    INFO

    В отличие от плагинов кластера (которые всегда должны устанавливаться в глобальный кластер при использовании YAML), Операторы устанавливаются в целевой кластер, где они должны работать. Убедитесь, что вы подключены к нужному кластеру перед выполнением YAML-манифестов.

    Ручной режим

    harbor-ce-operator — оператор от , поддерживающий только 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 означает успешную установку)

    Автоматический режим

    clickhouse-operator — оператор из источника, не относящегося к , и его стратегия одобрения может быть установлена в 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}'

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

    platform

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

    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: platform
      sourceNamespace: cpaas-system

    Пояснения к полям такие же, как в разделе Ручной режим.

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

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

    6. Проверка CSV

    kubectl -n clickhouse-operator get csv

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

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

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

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

    Процесс обновления начинается с загрузки новой версии Оператора.

    После завершения загрузки подождите примерно 10–15 минут, чтобы платформа синхронизировала информацию о новой версии.

    После завершения синхронизации обновления выполняются согласно стратегии, настроенной в Subscription:

    • Если стратегия одобрения Оператора установлена в Automatic, обновление происходит автоматически.

    • Если стратегия установлена в Manual, запрос на обновление должен быть одобрен вручную. Можно выбрать один из следующих способов обновления:

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

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