<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Mirai Kubernetes集群&#x2F;Docker部署方案]]></title><description><![CDATA[<p dir="auto">最近搭了个Kubernetes集群玩，没有找到关于Mirai没有很好的部署到容器的方案，于是这个方案就诞生了。</p>
<p dir="auto"><a href="https://github.com/Deliay/k8s-mirai" target="_blank" rel="noopener noreferrer nofollow ugc">https://github.com/Deliay/k8s-mirai</a></p>
<pre><code>cd helm

# 需要按照values.yaml中的内容自行修改
vim ./values.yaml

# 安装mirai到你的k8s集群
helm install mirai ./
</code></pre>
<p dir="auto">项目分两个部分，第一部分是容器化的mirai各种必须组件，第二部分是helm chart帮助你自动创建各种mirai需要的资源。</p>
<h3>容器化的Mirai</h3>
<p dir="auto">默认的容器化Mirai 我在 <a href="https://github.com/Deliay/k8s-mirai/tree/main/mirai" target="_blank" rel="noopener noreferrer nofollow ugc">这里</a> 做了一个基本的打包模板，里面包含了基本的几个插件：</p>
<ul>
<li>fix-protocol-version-1.9.10.mirai2</li>
<li>mirai-api-http-2.9.1.mirai2</li>
<li>mcl-addon-2.1.1</li>
</ul>
<p dir="auto">为了容器的「不可变」，本方案不推荐在运行时动态的安装插件，默认提供的镜像如果不满足需求，推荐手动重新构建属于自己的docker镜像。</p>
<p dir="auto">另外项目中还做了<a href="https://github.com/Deliay/k8s-mirai/blob/main/.github/workflows/build-mirai-image.yml" target="_blank" rel="noopener noreferrer nofollow ugc">github actions</a>来持续编译你docker镜像，更<strong>酷</strong>的事情是你可以参考 <a href="https://github.com/Deliay/Mikibot/actions/runs/7322444742/workflow" target="_blank" rel="noopener noreferrer nofollow ugc">这个actions</a> 的实现来全自动将你更新的镜像部署到你的Kubernetes集群。</p>
<h3>容器化的签名服务</h3>
<p dir="auto">使用 <a href="https://github.com/Deliay/unidbg-fetch-qsign-container" target="_blank" rel="noopener noreferrer nofollow ugc">unidbg-fetch-qsign-container</a> 这个项目，也可以使用这个项目的Dockerfile来打包自己的签名服务，这个项目默认只支持8.9.63, 8.9.68, 8.9.70这几个版本。</p>
<h3>Helm Chart</h3>
<p dir="auto">配置文件通过<code>values.yaml</code>管理，自动挂载到容器中，这个Chart还会帮你创建用于持久化登录、日志的PVC。</p>
<h4>部署资源一览</h4>
<p dir="auto">默认情况下将会部署下列资源</p>
<ul>
<li>mirai (本体)</li>
<li>mirai-sign (签名服务)</li>
<li>mirai-service (mirai-api内网暴露)</li>
<li>mirai-sign-service (签名服务内网暴露)</li>
<li>mirai-bots-pvc (用于存储登录状态)</li>
<li>mirai-logs-pvc (用户存储日志)</li>
</ul>
<h4>配置管理</h4>
<p dir="auto"><code>values.yaml</code>会管理和自动生成 <code>mirai-api-http</code> 和<code>unidbg-fetch-qsign</code>的配置（因为这两个需要暴露端口），其他配置文件通过<code>values.yaml</code>中的<code>configuration</code>挂载到容器中，<code>path</code>指定要覆盖的路径，<code>content</code>为文件内容，这部分配置在容器启动时，覆盖到容器中。</p>
<pre><code>  configurations:
    - name: accountLogin
      path: config/Console/AutoLogin.yml
      content: |-
          ...自动登录相关设置

    - name: xxxBlaBlaBla
      path: config/XXX插件/BlaBla.yml
      content: |-
          ...BlaBla的配置
</code></pre>
<h3>如何登录？</h3>
<p dir="auto">本方案暂时没有对登录方面有任何的建树，我是手动覆盖<code>mirai-bots-pvc</code>中的文件实现的登录，期待其他大佬的方案。</p>
<h3>日常管理</h3>
<h5><strong>更新配置</strong></h5>
<p dir="auto">如果需要修改配置，则直接修改 <code>values.yaml</code> 的值，然后 <code>helm upgrade</code> 之后 <code>kubectl rollout</code> 你部署的release即可。</p>
<pre><code># 我的release是mirai，namespace也是mirai
helm upgrade -n mirai mirai -f ./values.yaml
kubectl rollout restart -n mirai deployment/mirai
</code></pre>
<h5><strong>执行命令</strong></h5>
<p dir="auto">镜像打包方案是基于mcl的，可以直接<code>kubectl attach</code>到容器中去和mcl交互</p>
<pre><code>kubectl attach -n mirai -it deployment/mirai
&gt; ...这里就可以和mcl交互了...
</code></pre>
]]></description><link>https://mirai.mamoe.net/topic/2591/mirai-kubernetes集群-docker部署方案</link><generator>RSS for Node</generator><lastBuildDate>Mon, 16 Mar 2026 17:48:39 GMT</lastBuildDate><atom:link href="https://mirai.mamoe.net/topic/2591.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 25 Dec 2023 17:12:46 GMT</pubDate><ttl>60</ttl></channel></rss>