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 выбранной версии. Для подробных инструкций по использованию обращайтесь к документации конкретного плагина.

Просмотр доступных плагинов

Чтобы просмотреть все плагины, предоставляемые платформой:

  1. Перейдите в представление управления платформой.
  2. В левом навигационном меню выберите: Administrator > Marketplace > Cluster Plugin

На этой странице отображаются все доступные плагины с их текущим статусом.

Установка через веб-консоль

Если у плагина статус «absent», выполните следующие шаги для установки:

  1. Скачайте пакет плагина:

    • Перейдите в Custom Portal и скачайте соответствующий пакет плагина.
    • Если у вас нет доступа к Custom Portal, обратитесь в техническую поддержку.
  2. Загрузите пакет на платформу:

    • Используйте инструмент violet для публикации пакета на платформу.
    • Подробные инструкции по использованию инструмента смотрите в разделе CLI.
  3. Проверьте загрузку:

    • Перейдите в Administrator > Marketplace > Upload Packages
    • Переключитесь на вкладку Cluster Plugin
    • Найдите имя загруженного плагина
    • В деталях плагина отобразятся версии загруженного пакета
  4. Установите плагин:

    • Если у плагина статус «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.

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

Чтобы обновить существующий плагин до новой версии:

  1. Загрузите новую версию:

    • Следуйте той же процедуре загрузки новой версии на платформу.
  2. Проверьте новую версию:

    • Перейдите в Administrator > Marketplace > Upload Packages
    • Переключитесь на вкладку Cluster Plugin
    • В деталях плагина отобразится загруженная новая версия
  3. Выполните обновление:

    • Перейдите в Administrator > Clusters > Clusters
    • Кластеры с доступными обновлениями плагинов будут отображать иконку обновления
    • Войдите в детали кластера и переключитесь на вкладку Features
    • Кнопка обновления будет активна в компоненте features
    • Нажмите Upgrade для завершения обновления плагина