MiraiForum

    • 注册
    • 登录
    • 搜索
    • 热门
    • 最新
    • 未解决
    • 标签
    • 群组
    • 友情链接

    Mirai Kubernetes集群/Docker部署方案

    其他项目发布
    1
    1
    356
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • Z
      zeroash 最后由 zeroash 编辑

      最近搭了个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交互了...
      
      1 条回复 最后回复 回复 引用 1
      • 1 / 1
      • First post
        Last post
      Powered by Mamoe Technologies & NodeBB | 友情链接 | 服务监控 | Contact