我已经好几年没有玩《我的世界》了,但最近我又开始想重新玩起来了。不过在一家初创公司工作,意味着你没有太多时间去做这样的事情。自然而然,我需要一个正当的工作理由来让我玩这款游戏。在研究开发者平台的过程中,我偶然发现了一些用于部署Minecraft服务器的Helm图表。真是太走运了!
但我实际上对它们的制作精良程度感到惊讶。稍加调整,我知道我可以通过它们来展示一个完美展现开发平台亮点的例子。
在这篇文章中,我将带你一步步操作如何在你的 Kubernetes 集群上运行 Minecraft 服务器,连接到该服务器,并以有趣的方式解释优秀的开发者平台应该具备的特点!
写这篇博客也是一个很好的借口,在工作时间玩一会儿《我的世界》,所以这也算是一点小福利……🤷♂️
我们知道Kubernetes可能有点复杂。因此,我们创建了Cyclops,这是一个用于在Kubernetes上构建开发者平台的开源框架。您可以简化Kubernetes的复杂性,并通过一个自定义界面来部署和管理您的应用程序,以满足您的需求。
我们正在将Cyclops作为一个开源项目来开发。如果你有兴趣试一试,这里有一份快速入门指南,你可以直接在我们的仓库中找到。如果你喜欢这个项目,可以用点个星标⭐来表示支持。
在 Kubernetes 上运行 Minecraft⭐ 星项目Cyclops ⭐
要完成这个教程,你需要两样东西:一个Kubernetes集群和一个Minecraft账号(真的没想到这两个东西竟然会成为要求条件 😅)。没有Minecraft账号你也可以跟着做,不过那样你就只能启动服务器,而无法真正玩游戏了。
我使用 Minikube 来运行我的 Kubernetes 集群,运行得很顺利。你可以在这里了解如何设置 Minikube:这里。
我的世界服务器的图片
大部分的辛苦工作不是我做的,这份荣誉归功于Geoff Bourne。我在浏览时发现了他的minecraft-server-charts项目,就很好奇想试一试。
虽然你可以使用 Geoff 创建的 Helm 图表,这些图表也可以正常工作,但我为了更好地说明我的观点,稍微调整了一下 values.schema.json
,你可以在这里找到我调整过的文件 here。
接下来的步骤是设置Cyclops(设置Cyclops的过程)。Cyclops允许你导入这些Helm图表文件,从而立即拥有一个开发平台!
Cyclops 在你的集群里运行;只需要两个命令就可以搞定:
(注意:保持原文的标点和格式一致,特别是英文冒号翻译成中文冒号,并且保留了英文的括号解释部分。)
(去除括号内的提示后)
Cyclops 在你的集群里运行;只需要两个命令就可以搞定:
kubectl apply -f https://raw.githubusercontent.com/cyclops-ui/cyclops/v0.15.4/install/cyclops-install.yaml && kubectl apply -f https://raw.githubusercontent.com/cyclops-ui/cyclops/v0.15.4/install/demo-templates.yaml
运行这两个命令来部署cyclops和示例模板。
切换到全屏;退出全屏
几分钟后(等它启动了),使用以下命令访问它在localhost:3000:这个网址:localhost:3000
使用 kubectl 命令将 svc/cyclops-ui 服务的 3000 端口转发到本地的 3000 端口,并指定命名空间为 cyclops。
kubectl port-forward svc/cyclops-ui 3000:3000 -n cyclops
点击全屏: 进入全屏模式 / 退出全屏: 退出全屏模式
现在你已经设置了Cyclops实例,需要在“Templates(模板)”选项卡中将Helm图表导入为模板。
为什么说是好的开发平台?导入模板后,进入模块
标签并创建一个新的模块。首先,选择一个模板来创建模块。请选择你之前导入的Minecraft模板。
Cyclops将为你提供一个简单的用户界面,并提供多种选项来部署你的Minecraft服务器。这些选项之前在 Helm 图表中定义的。
虽然我已经很久没有玩《我的世界》了,但现在一切都变得简单明了。我可以不用研究这些选项代表什么,就能选择我的服务器设置,并快速搭建我的《我的世界》服务器!
虽然我自己不会通过开发者平台来设置这些东西,但其实很简单。你可以想象,这些功能更像是应用程序中的功能开关,而不仅仅是设置下界区域和生成结构,这些功能标志可以开启或关闭。
或者你不必选择难度等级,而是可以选择你的应用的资源需求,比如“小”、“中等”或“大”,而无需知道实际需要多少CPU或内存,也无需担心配置不当。
但幕后发生的事情远比这里显示的要多得多。
有些事情不应该由我来修改,而应该由更熟悉 Kubernetes 的人来处理。在这种情况下,这些选项在 UI 中没有。例如,你不会在 UI 中找到 replicaCount
设置,但查看 values.yaml
文件,你会发现这一部分:
# ### 警告 ### # Minecraft 不是水平扩展的,调整这里很可能会破坏你的环境。 # ### 警告 ### replicaCount: 1
进入全屏 退出全屏
这就是我所说的,当我提到这是一个好的开发平台时的意思。我可以指定对我重要的事情(比如我的服务器的难度等级和设置选项),但总有一个懂基础设施的人在把控。这个人会创建一个用户界面,设定验证规则,并规定我可以调整的范围。
一旦你调整好设置(并接受Minecraft的服务协议,将其打开),点击Deploy
,Cyclops 就会帮你搞定剩下的。
不仅能够配置这些选项并部署它们,而且我还在我集群中运行了一个漂亮的结果可视化展示。‘部署’、‘服务’甚至‘密钥(secrets)’这些术语从未被提及,但这些资源都是通过模板自动生成的,无需我手动创建。
但是技术方面就说到这儿吧,咱们来玩玩 Minecraft 吧!
这是一张我的世界(Minecraft)中某个角色或特定场景的图片,可能与独眼巨人有关。
最后一步来了!开始玩!现在你只需要等待它部署完成(当你看到 Deployment 变成绿色时,就知道它已经准备好了),然后发布服务。
运行以下命令来转发端口:
kubectl port-forward svc/<module-name>-minecraft 3001:25565
全屏模式 退出全屏
现在启动你的Minecraft游戏,并登录到你的账号。点击_多人_和添加服务器。将服务器名字设为你想要的,然后将服务器地址填为localhost:3001
。
行了,你可以开始了!
告诉你的老板你正在研究开发平台这方面的工作Cyclops是一个用于构建开发平台的开源框架,非常灵活;Minecraft只是一个有趣的例子。Cyclops自带了许多预定义的模板,但你可以导入你自己的Helm图表以获得动态渲染的UI。试一下,并告诉我们你的想法!
如果你有任何 很酷的 Helm 图表示例 如这些,可以在评论里分享链接,或者直接通过我们的 Discord 服务器 分享给我们和社区 👾
现在可以尽情享受《我的世界》了,这里是你在工作中玩游戏的理由。
⭐ Cyclops项目 ⭐