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 содержимого>
, например, 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 для завершения обновления плагина