• Русский
  • 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. Скачайте пакет плагина:

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

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

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

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

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

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

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

      • Выполните тот же процесс загрузки новой версии на платформу.
      • После завершения загрузки подождите примерно 10–15 минут, чтобы платформа синхронизировала информацию о новой версии.
    2. Проверьте новую версию:

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

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