工具菜单配置

本文档介绍如何向左侧导航栏的 Tools 部分添加自定义工具链接,例如集成 MLFlow

从 AML 1.3 开始,工具菜单不再通过手动编辑 kube-public/centraldashboard-config 来维护,而是采用 自动发现机制:系统扫描所有带有标签 aml.cpaas.io/centralMenuItem: "true"ConfigMap 资源,并自动合并它们以生成工具菜单配置。

WARNING

请勿手动编辑 kube-public/centraldashboard-config。任何手动修改都会在升级或重启时被还原。

添加工具菜单项

您可以通过创建符合要求格式的 ConfigMap 来添加新的工具菜单项。

示例(MLFlow):

apiVersion: v1
kind: ConfigMap
metadata:
  name: aml-mlflow-menu-config
  namespace: kubeflow
  labels:
    aml.cpaas.io/centralMenuItem: "true"
data:
  menu: |-
    - link: "https://192.168.128.11/clusters/g1-c1-x86/mlflow/"
      parentUid: advanced
      title: MLFlow
      titleI18N:
        en: MLFlow
      tags: [kubeflow]
      order: 200040

字段说明

  • link:点击菜单项时打开的 URL

  • parentUid:必须设置为 advanced,表示将该项挂载到 Tools 菜单下

  • title / titleI18N:菜单项显示名称,支持国际化

  • tags:安装 Alauda AI 时,系统会将多个 ConfigMap 聚合成一个 ConfigMap。在聚合过程中,系统会自动向合并后的配置中添加 aml-feature-tags 字段。默认情况下,该字段包含内置标签,如 addoncoredatasetspretraintune-modelsworkbench

    在上述示例中,如果菜单项定义了 tagskubeflow,则 aml-feature-tags 也会包含该 kubeflow 条目。 左侧导航的聚合机制采用 白名单 设计。例如,执行以下命令后,页面上只会显示 tags 包含 kubeflow 的导航项:

    kubectl annotate configmap aml-centraldashboard-config -n kube-public aml.cpaas.io/centralTagsFilter="kubeflow" --overwrite

    所有不匹配 kubeflow 的标签在过滤时会被判定为 false,因此不会显示在导航中。

  • order:菜单排序值,数值越小越靠前

结果

  • 创建 ConfigMap 后,其内容会自动合并到 centraldashboard-configdata 部分,例如:

    apiVersion: v1
    data:
      aml-feature-tags: |-
        {
          "addon": true,
          "core": true,
          "datasets": true,
          "kubeflow": true,
          "pretrain": true,
          "tune-models": true,
          "workbench": true
        }
      links: |-
        {
          "menuLinks": [
            {
              "type": "item",
              "link": "/model-repo/model",
              "i18nKey": "nav_model_repo",
              "text": "模型仓库",
              "en": "Model Repository",
              "icon": "model-repo"
            },
            {
              "type": "item",
              "link": "/model-repo/service-manage",
              "i18nKey": "nav_infer_svc",
              "text": "推理服务",
              "en": "Inference Service",
              "icon": "service-manage"
            },
            {
              "type": "item",
              "link": "workbench",
              "i18nKey": "workbench",
              "text": "Workbench",
              "en": "Workbench",
              "icon": "sitemap"
            },
            {
              "type": "item",
              "link": "",
              "i18nKey": "nav_observe",
              "text": "可观测",
              "en": "Observe",
              "icon": "observe",
              "children": [
                {
                  "type": "item",
                  "link": "monitor",
                  "i18nKey": "nav_monitor",
                  "text": "监控面板",
                  "en": "Monitor",
                  "icon": ""
                }
              ]
            },
            {
              "type": "item",
              "link": "/model-repo/dataset",
              "i18nKey": "nav_dataset",
              "text": "数据集",
              "en": "Dataset",
              "icon": "data-set"
            },
            {
              "type": "item",
              "link": "",
              "i18nKey": "nav_model_optimization",
              "text": "模型优化",
              "en": "Model Optimization",
              "icon": "model-repo",
              "children": [
                {
                  "type": "item",
                  "link": "/model-repo/training",
                  "i18nKey": "nav_pre_train",
                  "text": "预训练",
                  "en": "PreTraining",
                  "icon": ""
                },
                {
                  "type": "item",
                  "link": "/model-repo/task-template",
                  "i18nKey": "nav_task_temp",
                  "text": "任务模板",
                  "en": "Task Template",
                  "icon": ""
                },
                {
                  "type": "item",
                  "link": "/model-repo/fine-tuning",
                  "i18nKey": "nav_fine_tuning",
                  "text": "模型微调",
                  "en": "Fine-Tuning",
                  "icon": ""
                }
              ]
            },
            {
              "type": "item",
              "link": "",
              "i18nKey": "tool",
              "text": "工具",
              "en": "Tools",
              "icon": "advanced",
              "children": [
                {
                  "type": "item",
                  "link": "https://192.168.128.11/clusters/g1-c1-x86/mlflow/",
                  "i18nKey": "",
                  "text": "MLFlow",
                  "en": "MLFlow",
                  "icon": ""
                }
              ]
            }
          ]
        }
    kind: ConfigMap
    metadata:
      name: centraldashboard-config
      namespace: kube-public
  • 对应的菜单项会出现在左侧导航的 Tools

  • 菜单项右侧会显示一个箭头图标,表示该项为外部页面

  • 点击菜单项会在新页面打开 link 字段指定的 URL