MaiBot/helm-chart/README.md

5.2 KiB
Raw Blame History

MaiBot Helm Chart

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

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

详细部署文档:Kubernetes 部署

可用的Helm Chart版本列表

Helm Chart版本 对应的MaiBot版本 Commit SHA
0.11.6-beta 0.11.6-beta 0bfff0457e
0.11.5-beta 0.11.5-beta ad2df62700
0.11.3-beta 0.11.3-beta cd6dc18f54
0.11.2-beta 0.11.2-beta d3c8cea00d
0.11.1-beta 0.11.1-beta 94e079a340
0.11.0-beta 0.11.0-beta 16059532d8
0.10.3-beta 0.10.3-beta 7618937cd4
0.10.0-alpha.0 0.10.0-alpha 4efebed10a

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. pre_processor: 部署之前的预处理Job的配置。

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

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

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

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

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

  6. napcat: Napcat的部署配置。

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

    默认会捆绑部署Napcat。

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

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

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

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

    这里填写的配置仅会在初次部署时或用户指定时覆盖实际配置文件且需要严格遵守yaml文件的缩进格式。

    • override_*_config: 指定本次部署/升级是否用以下配置覆盖实际配置文件。默认不覆盖。

    • adapter_config: 对应adapter的config.toml

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

    • core_model_config: 对应core的model_config.toml

    • core_bot_config: 对应core的bot_config.toml

部署说明

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

麦麦的配置

要修改麦麦的配置最好的方法是通过WebUI来操作。此处的配置只会在初次部署时或者指定覆盖时注入到MaiBot中。

0.11.6-beta之前的版本将配置存储于k8s的ConfigMap资源中。随着版本迭代MaiBot对配置文件的操作复杂性增加k8s的适配复杂度也同步增加且WebUI可以直接修改配置文件因此自0.11.6-beta版本开始各组件的配置不再存储于k8s的ConfigMap中而是直接存储于存储卷的实际文件中。

从旧版本升级的用户旧的ConfigMap的配置会自动迁移到新的存储卷的配置文件中。

部署时自动重置的配置

adapter的配置中的napcat_servermaibot_serverhostport字段,会在每次部署/更新Helm安装实例时被自动重置。

自动重置的原因:

  • core的Service的DNS名称是动态的由安装实例名拼接无法在adapter的配置文件中提前确定。
  • 为了使adapter监听所有地址以及保持Helm Chart中配置的端口号需要在adapter的配置文件中覆盖这些配置。

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

跨节点PVC挂载问题

MaiBot的一些组件会挂载同一PVC这主要是为了同步数据或修改配置。

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

不是所有存储控制器都支持ReadWriteMany访问模式。

如果你的存储控制器无法支持ReadWriteMany访问模式,你可以通过nodeSelector配置将彼此之间共享相同PVC的Pod调度到同一节点来避免问题。

会共享PVC的组件列表

  • coreadapter:共享adapter-config,用于为core的WebUI提供修改adapter的配置文件的能力。
  • corestatistics-dashboard:共享statistics-dashboard用于同步统计数据的html文件。
  • coresqlite-web:共享maibot-core,用于为sqlite-web提供操作MaiBot数据库的能力。
  • 部署时的预处理任务preprocessoradaptercore:共享adapter-configcore-config,用于初始化coreadapter的配置文件。