• Русский
  • Cluster Plugin

    Обзор

    Плагин кластера — это инструмент для расширения функциональности платформы. Каждый плагин управляется через три 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 Plugins

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

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

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

    Значения жизненного цикла плагина кластера

    На странице Cluster Plugins используется метка cpaas.io/lifecycle-type для указания способа поддержки и обновления плагина кластера. Если метка отсутствует, плагин считается Agnostic.

    В этом контексте Core означает, что плагин следует циклу выпуска и обновления ACP Core вместе с версией дистрибутива кластера.

    На странице списка Cluster Plugins есть колонка Life cycle и фильтр Life cycle, позволяющие быстро определить тип каждого плагина.

    Life cycleОписаниеПуть обновления
    CoreПлагин следует циклу выпуска и обновления ACP Core вместе с версией дистрибутива кластера и не поддерживает отдельное обновление.Обновите кластер для обновления плагина.
    AlignedПлагин следует потоку выпуска ACP, но может обновляться отдельно при публикации новой версии плагина.Обновите плагин со страницы списка или страницы деталей Cluster Plugins.
    AgnosticПлагин выпускается независимо от ACP.Обновите плагин со страницы списка или страницы деталей Cluster Plugins.

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

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

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

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

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

      • Перейдите в Administrator > Marketplace > Cluster Plugins
      • Выберите целевой кластер
      • Просмотрите плагин на странице списка или откройте страницу деталей плагина
    4. Выполните обновление:

      • Если плагин использует жизненный цикл Aligned или Agnostic, запустите отдельное обновление со страницы списка или страницы деталей
      • Платформа обновит установленный плагин до новой опубликованной версии
    5. Обработка плагинов Core:

      • Плагины Core не поддерживают отдельное обновление
      • При обнаружении новой версии на странице деталей плагина появится напоминание об обновлении кластера

    Примечание: Upgrade изменяет установленную версию плагина. Update остаётся специфичным действием плагина для изменения конфигурации или выполнения логики обновления, определённой плагином.