Cluster Plugin

目录

Overview

集群插件是用于扩展平台功能的工具。每个插件通过三个集群级别的 CRD 进行管理:ModulePluginModuleConfigModuleInfo

  • ModulePlugin:定义集群插件的基本信息。
  • ModuleConfig:定义插件的版本信息。每个 ModulePlugin 可以对应一个或多个 ModuleConfig。
  • ModuleInfo:记录已安装插件的版本和状态信息。

集群插件支持动态表单配置。动态表单是简单的 UI 表单,提供插件的可定制配置选项或参数组合。例如,安装 日志采集器时,可以通过动态表单选择日志存储插件为 ElasticSearch 或 ClickHouse。动态表单定义位于 ModuleConfig 的 .spec.config 字段;如果插件不需要动态表单,该字段为空。

插件通过 violet 工具发布。注意:

  • 插件只能发布到 global cluster,但可根据配置安装到 global cluster 或 workload cluster。
  • 同一集群内,插件只能安装一次。
  • 发布成功后,平台会自动在 global cluster 创建对应的 ModulePlugin 和 ModuleConfig,无需手动修改。
  • 创建 ModuleInfo 资源即可安装插件,并可选择版本、目标集群及动态表单参数。动态表单定义参考所选版本的 ModuleConfig。更多使用说明请参考插件相关文档。

查看可用插件

查看平台提供的所有插件:

  1. 进入平台管理视图。
  2. 点击左侧导航菜单:Administrator > Marketplace > Cluster Plugin

该页面列出所有可用插件及其当前状态。

通过 Web 控制台安装

若插件状态显示为“absent”,请按以下步骤安装:

  1. 下载插件包:

    • 访问 Custom Portal 下载对应插件包。
    • 若无访问权限,请联系技术支持。
  2. 上传插件包到平台:

    • 使用 violet 工具将包发布到平台。
    • 详细使用说明请参考 CLI
  3. 验证上传:

    • 进入 Administrator > Marketplace > Upload Packages
    • 切换到 Cluster Plugin 标签页
    • 找到已上传的插件名称
    • 插件详情会显示上传包的版本信息
  4. 安装插件:

    • 若插件状态为“ready”,点击 Install
    • 部分插件需要填写安装参数,详见插件文档
    • 无安装参数的插件点击安装后即开始安装

通过 YAML 安装

安装方式根据插件类型不同:

  • 非配置插件:无需额外参数,安装简单。
  • 配置插件:需填写配置参数,详见插件文档。

以下示例展示基于 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 已发布。

查看 v4.0.4 版本的 ModuleConfig:

# 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 只能安装在 global cluster。.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>-<内容哈希>,如 global-ee98c9991ea1464aaa8054bdacbab313
  • label cpaas.io/cluster-name:指定插件安装的集群,若与 ModuleInfo 的 affinity 冲突,安装失败。
  • label cpaas.io/module-name:插件名称,必须与 ModulePlugin 资源匹配。
  • label cpaas.io/module-type:固定字段,必须为 plugin,缺失该字段安装失败。
  • .spec.config:对应 ModuleConfig 为空时,该字段可留空。
  • .spec.version:指定安装的插件版本,必须与 ModuleConfig 的 .spec.version 匹配。

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 已发布。

查看 v4.0.15 版本的 ModuleConfig:

# 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_enablecustom.pgpu_enablecustom.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 标签页
    • 功能组件下的升级按钮会被激活
    • 点击 Upgrade 完成插件升级操作