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 типов источников:
-
Предоставляется и поддерживается , включая полное управление жизненным циклом, обновления безопасности, техническую поддержку и обязательства по SLA.
-
Curated
Отобранные из сообщества с открытым исходным кодом, соответствующие версиям сообщества, без модификаций кода или перекомпиляции. предоставляет рекомендации и обновления безопасности, но не гарантирует SLA или управление жизненным циклом.
-
Community
Предоставляются сообществом с открытым исходным кодом, обновляются периодически для обеспечения возможности установки, но функциональная полнота не гарантируется; SLA и поддержка отсутствуют.
-
Marketplace
Предоставляются и поддерживаются сторонними поставщиками, сертифицированными . обеспечивает поддержку интеграции с платформой, а поставщик отвечает за основное сопровождение.
-
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.
Установка через веб-консоль
-
Войдите в веб-консоль и переключитесь в режим Administrator.
-
Перейдите в Marketplace > OperatorHub.
-
Если статус Absent:
- Скачайте пакет Оператора из Custom Portal или обратитесь в службу поддержки.
- Загрузите пакет в целевой кластер с помощью
violet
(см. CLI).
- На странице Marketplace > Upload Packages переключитесь на вкладку Operator и подтвердите загрузку.
-
Если статус 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}'
Пример вывода:
Это означает, что 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}'
Пример вывода:
Это означает, что 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
Установка прошла успешно.
Процесс обновления
-
Загрузите новую версию Оператора.
-
Обновления выполняются согласно стратегии, настроенной в Subscription:
Примечание: Пакетные обновления поддерживаются только для Операторов от .