Cluster Plugin
Содержание
Overview
Плагин кластера — это инструмент для расширения функциональности платформы. Каждый плагин управляется через три CRD на уровне кластера: ModulePlugin, ModuleConfig и ModuleInfo.
- ModulePlugin: Определяет основную информацию о плагине кластера.
- ModuleConfig: Определяет информацию о версии плагина. Каждый ModulePlugin может соответствовать одному или нескольким ModuleConfig.
- ModuleInfo: Записывает информацию об установленной версии плагина и его статусе.
Плагины кластера поддерживают динамическую конфигурацию форм. Динамические формы — это простые UI-формы, предоставляющие настраиваемые параметры конфигурации или комбинации параметров для плагинов. Например, при установке Log Collector можно выбрать плагин хранения логов ElasticSearch или ClickHouse через динамическую форму. Определение динамической формы находится в поле .spec.config ModuleConfig; если плагин не требует динамической формы, это поле пустое.
Плагины публикуются с помощью инструмента violet. Обратите внимание:
- Плагины можно публиковать только в глобальный кластер, но устанавливать их можно как в глобальном, так и в рабочем кластере в зависимости от конфигурации.
- В одном кластере плагин может быть установлен только один раз.
- После успешной публикации платформа автоматически создаст соответствующие ModulePlugin и ModuleConfig в глобальном кластере — ручные изменения не требуются.
- Создание ресурса ModuleInfo устанавливает плагин и позволяет выбрать версию, целевой кластер и параметры динамической формы. Определение динамической формы смотрите в ModuleConfig выбранной версии. Для подробных инструкций по использованию обращайтесь к документации конкретного плагина.
Просмотр доступных плагинов
Чтобы просмотреть все плагины, предоставляемые платформой:
- Перейдите в представление управления платформой.
- Нажмите в левом меню: Administrator > Marketplace > Cluster Plugin
На этой странице отображаются все доступные плагины с их текущим статусом.
Установка через веб-консоль
Если у плагина статус "absent", выполните следующие шаги для установки:
-
Скачайте пакет плагина:
- Зайдите в Customer Portal и скачайте соответствующий пакет плагина.
- Если у вас нет доступа к Customer Portal, обратитесь в техническую поддержку.
-
Загрузите пакет на платформу:
- Используйте инструмент
violet для публикации пакета на платформе.
- Подробные инструкции по использованию инструмента смотрите в разделе CLI.
-
Проверьте загрузку:
- Перейдите в Administrator > Marketplace > Upload Packages
- Переключитесь на вкладку Cluster Plugin
- Найдите имя загруженного плагина
- В деталях плагина отобразятся версии загруженного пакета
-
Установите плагин:
- Если плагин имеет статус "ready", нажмите Install
- Некоторые плагины требуют параметров установки; смотрите документацию конкретного плагина
- Плагины без параметров установки начнут установку сразу после нажатия Install
Установка через YAML
Метод установки зависит от типа плагина:
- Non-config plugin: Не требует дополнительных параметров; установка простая.
- Config plugin: Требует заполнения параметров конфигурации; подробности в документации плагина.
INFO
Установка через YAML всегда должна выполняться в глобальном кластере.
Хотя сам плагин может быть нацелен либо на глобальный, либо на рабочий кластер (в зависимости от настроек affinity в ModuleConfig), ресурс ModuleInfo можно создавать только в глобальном кластере.
Ниже приведены примеры установки через YAML.
non-config
Пример: Web Terminal
1. Проверка доступных версий
Убедитесь, что плагин опубликован, проверив наличие ресурсов ModulePlugin и ModuleConfig в глобальном кластере:
# kubectl get moduleplugins web-cli
NAME AGE
web-cli 4d20h
# kubectl get moduleconfigs -l cpaas.io/module-name=web-cli
NAME AGE
web-cli-v4.0.4 4d21h
Это означает, что ModulePlugin web-cli существует в глобальном кластере, и опубликована версия v4.0.4.
Проверьте ModuleConfig для версии v4.0.4:
# kubectl get moduleconfigs web-cli-v4.0.4 -oyaml
apiVersion: cluster.alauda.io/v1alpha1
kind: ModuleConfig
metadata:
...
name: web-cli-v4.0.4
spec:
affinity:
clusterAffinity:
matchLabels:
is-global: "true"
version: v4.0.4
config: {}
...
.spec.affinity определяет affinity кластера, указывая, что web-cli можно устанавливать только в глобальном кластере. .spec.config пустое, значит плагин не требует конфигурации и может быть установлен напрямую.
2. Создание ModuleInfo
Создайте ресурс ModuleInfo в глобальном кластере для установки плагина без параметров конфигурации:
apiVersion: cluster.alauda.io/v1alpha1
kind: ModuleInfo
metadata:
labels:
cpaas.io/cluster-name: global
cpaas.io/module-name: web-cli
cpaas.io/module-type: plugin
name: global-temporary-name
spec:
config: {}
version: v4.0.4
Объяснение полей:
-
name: Временное имя плагина кластера. Платформа переименует его после создания на основе содержимого в формате <cluster-name>-<hash содержимого>, например global-ee98c9991ea1464aaa8054bdacbab313.
-
label cpaas.io/cluster-name: Указывает целевой кластер для установки плагина. Если конфликтует с affinity из ModuleConfig, установка завершится ошибкой.
Важно: Эта метка не меняет, где применяется YAML — YAML всё равно должен применяться в глобальном кластере.
-
label cpaas.io/module-name: Имя плагина, должно совпадать с ресурсом ModulePlugin.
-
label cpaas.io/module-type: Фиксированное поле, должно быть plugin; отсутствие приведёт к ошибке установки.
-
.spec.config: Если соответствующий ModuleConfig пуст, это поле можно оставить пустым.
-
.spec.version: Указывает версию плагина для установки, должна совпадать с .spec.version в ModuleConfig.
3. Проверка установки
Поскольку имя ModuleInfo меняется после создания, найдите ресурс по метке в глобальном кластере, чтобы проверить статус и версию плагина:
kubectl get moduleinfo -l cpaas.io/module-name=web-cli
NAME CLUSTER MODULE DISPLAY_NAME STATUS TARGET_VERSION CURRENT_VERSION NEW_VERSION
global-ee98c9991ea1464aaa8054bdacbab313 global web-cli web-cli Running v4.0.4 v4.0.4 v4.0.4
Объяснение полей:
NAME: Имя ресурса ModuleInfo
CLUSTER: Кластер, в котором установлен плагин
MODULE: Имя плагина
DISPLAY_NAME: Отображаемое имя плагина
STATUS: Статус установки; Running означает успешную установку и работу
TARGET_VERSION: Целевая версия для установки
CURRENT_VERSION: Версия до установки
NEW_VERSION: Последняя доступная версия для установки
with-config
Пример: GPU Device Plugin
1. Проверка доступных версий
Убедитесь, что плагин опубликован, проверив наличие ModulePlugin и ModuleConfig в глобальном кластере:
# kubectl get moduleplugins gpu-device-plugin
NAME AGE
gpu-device-plugin 4d23h
# kubectl get moduleconfigs -l cpaas.io/module-name=gpu-device-plugin
NAME AGE
gpu-device-plugin-v4.0.15 4d23h
Это означает, что ModulePlugin gpu-device-plugin существует в глобальном кластере, и опубликована версия v4.0.15.
Проверьте ModuleConfig для версии v4.0.15:
# kubectl get moduleconfigs gpu-device-plugin-v4.0.15 -oyaml
apiVersion: cluster.alauda.io/v1alpha1
kind: ModuleConfig
metadata:
...
name: gpu-device-plugin-v4.0.15
spec:
affinity:
clusterAffinity:
matchExpressions:
- key: cpaas.io/os-linux
operator: Exists
matchLabels:
cpaas.io/arch-amd64: "true"
config:
custom:
mps_enable: false
pgpu_enable: false
vgpu_enable: false
version: v4.0.15
...
Примечания:
- Этот плагин можно устанавливать только в кластерах с ОС Linux и архитектурой amd64.
- Динамическая форма содержит три переключателя драйверов устройств:
custom.mps_enable, custom.pgpu_enable и custom.vgpu_enable. Только при значении true соответствующий драйвер будет установлен.
2. Создание ModuleInfo
Создайте ресурс ModuleInfo в глобальном кластере для установки плагина, заполнив параметры динамической формы по необходимости (например, включив драйверы pgpu и vgpu):
apiVersion: cluster.alauda.io/v1alpha1
kind: ModuleInfo
metadata:
labels:
cpaas.io/cluster-name: business
cpaas.io/module-name: gpu-device-plugin
cpaas.io/module-type: plugin
name: business-temporary-name
spec:
config:
custom:
mps_enable: false
pgpu_enable: true
vgpu_enable: true
version: v4.0.15
Объяснение полей такое же, как для non-config. Подробности конфигурации смотрите в документации плагина.
3. Проверка установки
Найдите ModuleInfo по метке в глобальном кластере, чтобы проверить статус и версию:
# kubectl get moduleinfo -l cpaas.io/module-name=gpu-device-plugin
NAME CLUSTER MODULE DISPLAY_NAME STATUS TARGET_VERSION CURRENT_VERSION NEW_VERSION
business-7ebb241b4f77471235e57dd1ec7fbd0d business gpu-device-plugin gpu-device-plugin Running v4.0.15 v4.0.15 v4.0.15
Объяснение полей такое же, как для non-config.
Процесс обновления
Чтобы обновить существующий плагин до новой версии:
-
Загрузите новую версию:
- Выполните тот же процесс загрузки новой версии на платформу.
-
Проверьте новую версию:
- Перейдите в Administrator > Marketplace > Upload Packages
- Переключитесь на вкладку Cluster Plugin
- В деталях плагина отобразится недавно загруженная версия
-
Выполните обновление:
- Перейдите в Administrator > Clusters > Clusters
- Кластеры с доступными для обновления плагинами будут отображать иконку обновления
- Зайдите в детали кластера и переключитесь на вкладку Features
- Кнопка обновления будет активна в компоненте features
- Нажмите Upgrade для завершения обновления плагина