Tools 菜单配置

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

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

当安装 MLflow Operator 插件时,它会根据 operator 配置自动创建 MLflow Tools 菜单的 ConfigMap。以下手动示例仅用于自定义集成或故障排查。

WARNING

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

添加 Tools 菜单项

你可以通过创建符合所需格式的 ConfigMap,向 Tools 菜单添加一个新条目。

示例(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

    在上面的示例中,如果某个菜单项将 tags 定义为 kubeflow,则 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