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», выполните следующие шаги для установки:
-
Скачайте пакет плагина:
- Перейдите в Custom Portal и скачайте соответствующий пакет плагина.
- Если у вас нет доступа к Custom Portal, обратитесь в техническую поддержку.
-
Загрузите пакет на платформу:
- Используйте инструмент
violet
для публикации пакета на платформу.
- Подробные инструкции по использованию инструмента смотрите в разделе CLI.
-
Проверьте загрузку:
- Перейдите в Administrator > Marketplace > Upload Packages
- Переключитесь на вкладку Cluster Plugin
- Найдите имя загруженного плагина
- В деталях плагина отобразятся версии загруженного пакета
-
Установите плагин:
- Если у плагина статус «ready», нажмите Install
- Некоторые плагины требуют параметров установки; смотрите документацию конкретного плагина
- Плагины без параметров установки начнут установку сразу после нажатия Install
Установка через YAML
Метод установки зависит от типа плагина:
- Non-config plugin: Не требует дополнительных параметров, установка простая.
- Config plugin: Требует заполнения параметров конфигурации; подробности смотрите в документации плагина.
Ниже приведены примеры установки через 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
определяет аффинити кластера, указывая, что 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 of content>
, например, global-ee98c9991ea1464aaa8054bdacbab313
.
label cpaas.io/cluster-name
: Указывает кластер, в который должен быть установлен плагин. Если конфликтует с аффинити ModuleInfo, установка не удастся.
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 для завершения обновления плагина