4.7 KiB
MaiBot Helm Chart
这是麦麦的Helm Chart,可以方便地将麦麦部署在Kubernetes集群中。
当前Helm Chart对应的麦麦版本可以在Chart.yaml中查看appVersion项。
详细部署文档:Kubernetes 部署
可用的Helm Chart版本列表
| Helm Chart版本 | 对应的MaiBot版本 | Commit SHA |
|---|---|---|
| 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分为几个大部分。
-
EULA&PRIVACY: 用户必须同意这里的协议才能成功部署麦麦。 -
pre_processor: 部署之前的预处理Job的配置。 -
adapter: 麦麦的Adapter的部署配置。 -
core: 麦麦本体的部署配置。 -
statistics_dashboard: 麦麦的运行统计看板部署配置。麦麦每隔一段时间会自动输出html格式的运行统计报告,此统计报告可以部署为看板。
出于隐私考虑,默认禁用。
-
napcat: Napcat的部署配置。考虑到复用外部Napcat实例的情况,Napcat部署已被解耦。用户可选是否要部署Napcat。
默认会捆绑部署Napcat。
-
sqlite_web: sqlite-web的部署配置。通过sqlite-web可以在网页上操作麦麦的数据库,方便调试。不部署对麦麦的运行无影响。
此服务如果暴露在公网会十分危险,默认不会部署。
-
config: 这里填写麦麦各部分组件的运行配置。这里填写的配置仅会在初次部署时或用户指定时覆盖实际配置文件,且需要严格遵守yaml文件的缩进格式。
-
override_*_config: 指定本次部署/升级是否用以下配置覆盖实际配置文件。默认不覆盖。 -
adapter_config: 对应adapter的config.toml。此配置文件中对于
napcat_server和maibot_server的host和port字段的配置会被上面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的配置会自动迁移到新的存储卷的配置文件中。
动态生成的ConfigMap
adapter的配置中的napcat_server和maibot_server的host和port字段,会在每次部署/更新Helm安装实例时被自动重置。
自动重置的原因:
- core的Service的DNS名称是动态的(由安装实例名拼接),无法在adapter的配置文件中提前确定。
- 为了使adapter监听所有地址以及保持Helm Chart中配置的端口号,需要在adapter的配置文件中覆盖这些配置。
因此,首次部署时,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,上述问题也同样会出现,需要注意。