使用 Ansible 的 Helm 模块构建 Kubernetes Minecraft 服务器

您所在的位置:网站首页 ansible编写playbook 使用 Ansible 的 Helm 模块构建 Kubernetes Minecraft 服务器

使用 Ansible 的 Helm 模块构建 Kubernetes Minecraft 服务器

2023-03-24 02:08| 来源: 网络整理| 查看: 265

Ansible 的转向内容集合的最佳成果之一是将Ansible的“核心”存储库中的数千个模块传播到更多独立的存储库中。这意味着长期延迟的问题和模块的移动(通常是由于 repo 中的大量问题和拉取请求)可以更快地进行。

显然,并非所有模块都会像其他模块一样受到喜爱和赞赏——这就是开源的工作方式:更受欢迎的东西会蓬勃发展,而其他模块可能会有点萎靡不振——但是Kubernetes集合是一个很好的积极影响的例子能够合并一些期待已久的Helm模块。

特别感谢LucasBoisserie的工作,三个新的 Helm 模块被合并到 Kubernetes 集合中:

掌舵

掌舵_info

helm_repository

Ansible 长期以来一直有一个helm 模块,但它在很长一段时间内都被破坏了,只能与旧版本的 Helm 一起使用,并且计划在 Ansible 2.14 中弃用。该版本的模块在 Ansible 的常规社区发行版中仍然可以正常工作,因为它现在已移至community.general集合。

但是,如果您想使用这些新模块来使用 Kubernetes 容器编排系统自动化您的 Helm 部署,您可以使用community.kubernetes集合来实现。

Helm 是什么?

Helm 说这是“查找、共享和使用为 Kubernetes 构建的软件的最佳方式”。

目前有几十种方法可以将软件部署到 Kubernetes 和OpenShift集群中(您甚至可以使用原生的 Ansible 和k8s 模块来实现),但 Helm 通常是 Kubernetes 部署最简单的入口,尤其是当您使用重新开始您的 Kubernetes 之旅。

Helm 的工作方式是人们维护“图表”,这些图表是描述“如何将应用程序 XYZ 部署到 Kubernetes”的模板。图表可以具有覆盖部署图表的默认设置的“值”。

Helm Hub](https://hub.helm.sh/)上有数千个[图表,您可以使用它来安装流行的软件。如果您的软件不包括在内,您可以构建和托管自己的 Helm 图表存储库。

什么是我的世界?

对于某一代人(或他们的父母),这个问题不需要答案:Minecraft是有史以来最畅销的电子游戏,它吸引了非常广泛的观众,因为有这么多你可以用不同的方式玩它。

我记得在大学毕业后的几年里,我在这里或那里花了一个小时照料我在我的小虚拟 Minecraft 世界中建造的农场。 Minecraft 现在几乎可以在任何有屏幕的计算设备上运行,网络游戏变得非常流行。为了支持这一点,Minecraft 团队维护了一个Minecraft 服务器应用程序,您可以运行该应用程序与您的朋友一起玩网络游戏。

Ansible 适合在哪里?

更多关于 Ansible

Ansible 快速入门指南

Ansible 备忘单

免费在线课程:Ansible 要领

下载安装 Ansible

电子书:自动化企业

电子书:Ansible for DevOps

免费 Ansible 电子书

最新 Ansible 文章

我喜欢将 Ansible 视为将自动化结合在一起的“粘合剂”。我之前写过Ansible 如何在云原生环境中发挥作用,所以我不会重复为什么我使用 Ansible 来管理我的 Kubernetes 基础设施。

在本文中,我将向您展示如何编写一个简短的 Ansible 剧本来管理集群中 Helm 的 Minecraft 图表的设置。在现实世界的基础设施中,该剧本将是以下剧本的一小部分:

搭建或配置Kubernetes集群

将监控工具部署到集群中

将应用部署到集群中

在编写 playbook 之前,您必须安装 Ansible 的官方Kubernetes 集合。您可以通过在 requirements.yml 文件中要求它(Ansible Tower 可以使用它来自动安装集合)或手动安装它来执行此操作:

ansible-galaxy collection install community.kubernetes

一旦你有了集合,就该编写剧本了。为了方便您查看代码或下载文件,我在 GitHub 上发布了我的 minecraft.yml playbook 作为 Gist。

该剧本使用了许多 Kubernetes 集合的模块:

1.k8s模块创建一个命名空间,minecraft。

2.helm_repository模块添加itzgHelm存储库,其中包含Minecraft Helm图表。

3.helm模块部署图表并创建Minecraft服务器实例。

4.k8s_info模块检索运行 Minecraft 的 NodePort,以便您可以从 Minecraft 连接到它。

该剧本假设您有一个正在运行的 Kubernetes 或 OpenShift 集群以及一个已经指向该集群的 kubeconfig 文件。如果没有,请在您的工作站上创建一个 Minikube 集群:

确保您已安装Minikube。

2、运行minikube start,等待集群创建完成。

确保已安装Ansible和Helm,然后运行 playbook:

ansible-playbook minecraft.yml

几分钟后,Minecraft 服务器将生成一个生成区域并准备好连接!该剧本应在其输出末尾提供 Minecraft NodePort(例如,Minecraft NodePort:32393)。

使用minikube ip获取 Minikube 集群的 IP 地址,将 NodePort 添加到其中(在我的示例中为 192.168.64.19:32393),然后打开 Minecraft 并连接到它:

点击多人游戏。

单击直接连接。

输入服务器地址(Minikube IP 和 Minecraft NodePort)。

点击加入服务器。

瞧!您应该能够在运行在您自己的 Kubernetes 集群上的小型虚拟 Minecraft 世界中玩耍。

我的世界游戏玩法

图片来源:

(杰夫·格尔林,CC BY-SA 4.0)

查看服务器日志:

kubectl logs -f -n minecraft -l app=minecraft-minecraft;

在日志中,您可以看到我成功地在我的 Minecraft 小世界中找到了许多死亡方式!

Minecraft 服务器日志

图片来源:

(杰夫·格尔林,CC BY-SA 4.0)

超越一步

有很多方法可以将 Minecraft 服务器等应用程序部署到 Kubernetes 集群中。对我们来说幸运的是,Ansible 已经通过其 Kubernetes 集合支持大多数这些选项!如果你想超越简单的部署和图表更新,你可以使用 Ansible 用 Operator SDK 构建一个Kubernetes operator——事实上,有人已经用 Ansible 构建了一个社区 operator,它运行一个我的世界服务器!

在使用 Ansible 管理使用 Raspberry Pis 构建的七节点 Kubernetes 集群后,我受到启发写了这篇文章。您可以在Turing Pi ClusterGitHub 存储库中了解更多信息。

如果您想了解有关 Ansible 的更多信息,请务必注册AnsibleFest,这是 10 月 13 日至 14 日的虚拟体验。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3