MaiBot/helm-chart
zhangxinhui02 56fd6f8ae8
docs: 为helm chart的默认插件自动安装系统撰写文档
2025-11-01 01:36:38 +08:00
..
adapter-cm-generator feat: 部署后自动重启core容器,重载配置 2025-10-31 17:57:11 +08:00
files feat: 为helm chart编写脚本,用于默认插件更新后或麦麦首次启动时为用户自动安装默认插件到存储卷中 2025-11-01 00:54:59 +08:00
templates feat: 为helm chart编写脚本,用于默认插件更新后或麦麦首次启动时为用户自动安装默认插件到存储卷中 2025-11-01 00:54:59 +08:00
.gitignore refactor: 调整helm chart目录结构 2025-10-31 10:42:45 +08:00
.gitlab-ci.yml update: 更新主仓库地址 2025-10-31 14:35:16 +08:00
.helmignore 自动化Helm Chart打包和发布流程 2025-08-21 13:13:12 +08:00
Chart.yaml fix: 修正helm chart的版本号为beta 2025-10-31 11:06:07 +08:00
README.md docs: 为helm chart的默认插件自动安装系统撰写文档 2025-11-01 01:36:38 +08:00
values.yaml docs: 移除helm chart中无用的构建CI信息 2025-11-01 00:57:11 +08:00

README.md

MaiBot Helm Chart

这是麦麦的Helm Chart可以方便地将麦麦部署在Kubernetes集群中。

当前Helm Chart对应的麦麦版本可以在Chart.yaml中查看appVersion项。

详细部署文档:Kubernetes 部署

可用的Helm Chart版本列表

Helm Chart版本 对应的MaiBot版本
0.11.0-beta 0.11.0-beta
0.10.3-beta 0.10.3-beta
0.10.0-alpha.0 0.10.0-alpha

TL; DR

helm install maimai \
    oci://reg.mikumikumi.xyz/maibot/maibot \
    --namespace bot \
    --version <MAIBOT_VERSION> \
    --values maibot.yaml

Values项说明

values.yaml分为几个大部分。

  1. EULA & PRIVACY: 用户必须同意这里的协议才能成功部署麦麦。

  2. adapter: 麦麦的Adapter的部署配置。

  3. core: 麦麦本体的部署配置。

  4. statistics_dashboard: 麦麦的运行统计看板部署配置。

    麦麦每隔一段时间会自动输出html格式的运行统计报告此统计报告可以部署为看板。

    出于隐私考虑,默认禁用。

  5. napcat: Napcat的部署配置。

    考虑到复用外部Napcat实例的情况Napcat部署已被解耦。用户可选是否要部署Napcat。

    默认会捆绑部署Napcat。

  6. sqlite_web: sqlite-web的部署配置。

    通过sqlite-web可以在网页上操作麦麦的数据库方便调试。不部署对麦麦的运行无影响。

    此服务如果暴露在公网会十分危险,默认不会部署。

  7. config: 这里填写麦麦各部分组件的运行配置文件。

    这里填写的配置文件需要严格遵守yaml文件的缩进格式。

    • adapter_config: 对应adapter的config.toml

      此配置文件中对于hostport的配置会被上面adapter.service中的配置覆盖,因此不需要改动。

    • core_model_config: 对应core的model_config.toml

    • core_bot_config: 对应core的bot_config.toml

部署说明

使用此Helm Chart的一些注意事项。

修改麦麦配置

麦麦的配置文件会通过ConfigMap资源注入各个组件内。

对于通过Helm Chart部署的麦麦如果需要修改配置不应该直接修改这些ConfigMap否则下次Helm更新可能会覆盖掉所有配置。

最佳实践是重新配置Helm Chart的values然后通过helm upgrade更新实例。

动态生成的ConfigMap

adapter的ConfigMap是每次部署/更新Helm安装实例时动态生成的。

动态生成的原因:

  • core服务的DNS名称是动态的无法在adapter服务的配置文件中提前确定。
  • 一些与k8s现有资源冲突的配置需要被重置。

因此首次部署时ConfigMap的生成会需要一些时间部分Pod会无法启动等待几分钟即可。

运行统计看板与core的挂载冲突

如果启用了运行统计看板那么statistics_dashboard会与core共同挂载statistics_dashboard存储卷用于同步html文件。

如果k8s集群有多个节点且statistics_dashboard与core未调度到同一节点那么就需要statistics_dashboard的PVC访问模式具备ReadWriteMany访问模式。

不是所有存储卷的底层存储都支持ReadWriteMany访问模式。

如果你的存储底层无法支持ReadWriteMany访问模式,你可以通过nodeSelector配置将statistics_dashboard与core调度到同一节点来避免问题。

如果启用了sqlite-web,那么上述问题也同样适用于sqlite-webcore,需要注意。

麦麦的默认插件

麦麦的core容器提供了一些默认插件,以提升使用体验。但是插件目录存储在存储卷中,容器启动时挂载的存储卷会完全覆盖掉容器的默认插件目录,导致默认插件无法加载,也难以被用户感知。

为了解决这一问题此Helm Chart中为core容器引入了初始化容器。此初始化容器用于为用户自动安装默认插件到存储卷中。可以选择启用(默认启用)。

初始化容器使用与core主容器相同的镜像,且用后即销毁,因此不会消耗额外的带宽和存储成本。

触发插件安装的条件

  • 首次部署时(此时没有任何插件处于安装状态)
  • 默认插件更新(即默认插件内容发生变化)

安装状态识别能力

初始化容器会记录安装过的默认插件,不会重复安装。为了实现这一点,初始化容器会将安装状态写入/MaiMBot/data/plugins/.installed-setup-plugins文件中。

基于上述状态识别能力,如果用户不需要某个插件,可以将其删除。由于此插件已自动安装过(记录在状态文件中),即使插件本体不存在也不会再次安装(除非插件更新)。

插件更新

一旦在镜像中检测到新版本插件(即插件内容不同),初始化容器即会用新插件覆盖旧插件。

考虑到旧插件中可能存在用户自定义配置,因此旧插件在被覆盖前会备份到/MaiMBot/data/plugins-backup目录中,并以时间归档。

因此在升级麦麦后,请注意观察初始容器的日志并重新配置插件。