Mirai Kubernetes集群/Docker部署方案
-
最近搭了个Kubernetes集群玩,没有找到关于Mirai没有很好的部署到容器的方案,于是这个方案就诞生了。
https://github.com/Deliay/k8s-mirai
cd helm # 需要按照values.yaml中的内容自行修改 vim ./values.yaml # 安装mirai到你的k8s集群 helm install mirai ./
项目分两个部分,第一部分是容器化的mirai各种必须组件,第二部分是helm chart帮助你自动创建各种mirai需要的资源。
容器化的Mirai
默认的容器化Mirai 我在 这里 做了一个基本的打包模板,里面包含了基本的几个插件:
- fix-protocol-version-1.9.10.mirai2
- mirai-api-http-2.9.1.mirai2
- mcl-addon-2.1.1
为了容器的「不可变」,本方案不推荐在运行时动态的安装插件,默认提供的镜像如果不满足需求,推荐手动重新构建属于自己的docker镜像。
另外项目中还做了github actions来持续编译你docker镜像,更酷的事情是你可以参考 这个actions 的实现来全自动将你更新的镜像部署到你的Kubernetes集群。
容器化的签名服务
使用 unidbg-fetch-qsign-container 这个项目,也可以使用这个项目的Dockerfile来打包自己的签名服务,这个项目默认只支持8.9.63, 8.9.68, 8.9.70这几个版本。
Helm Chart
配置文件通过
values.yaml
管理,自动挂载到容器中,这个Chart还会帮你创建用于持久化登录、日志的PVC。部署资源一览
默认情况下将会部署下列资源
- mirai (本体)
- mirai-sign (签名服务)
- mirai-service (mirai-api内网暴露)
- mirai-sign-service (签名服务内网暴露)
- mirai-bots-pvc (用于存储登录状态)
- mirai-logs-pvc (用户存储日志)
配置管理
values.yaml
会管理和自动生成mirai-api-http
和unidbg-fetch-qsign
的配置(因为这两个需要暴露端口),其他配置文件通过values.yaml
中的configuration
挂载到容器中,path
指定要覆盖的路径,content
为文件内容,这部分配置在容器启动时,覆盖到容器中。configurations: - name: accountLogin path: config/Console/AutoLogin.yml content: |- ...自动登录相关设置 - name: xxxBlaBlaBla path: config/XXX插件/BlaBla.yml content: |- ...BlaBla的配置
如何登录?
本方案暂时没有对登录方面有任何的建树,我是手动覆盖
mirai-bots-pvc
中的文件实现的登录,期待其他大佬的方案。日常管理
更新配置
如果需要修改配置,则直接修改
values.yaml
的值,然后helm upgrade
之后kubectl rollout
你部署的release即可。# 我的release是mirai,namespace也是mirai helm upgrade -n mirai mirai -f ./values.yaml kubectl rollout restart -n mirai deployment/mirai
执行命令
镜像打包方案是基于mcl的,可以直接
kubectl attach
到容器中去和mcl交互kubectl attach -n mirai -it deployment/mirai > ...这里就可以和mcl交互了...