從Helm圖表到開發(fā)界面,5分鐘變身神器
Helm 真是太棒了……
…直到你把它交给一个程序员。
实际上,Helm 是专为那些懂 Kubernetes 的人设计的。作为 DevOps 工程师,你可以定义复杂部署,管理特定环境的配置信息,并通过模板简化逻辑复用。真是太酷了。
但对于大多数开发者来说,Helm图表却很让人困惑。Helm假定开发者有一定的Kubernetes熟悉度,而这正是很多开发者目前没有的。这没关系。他们应该专注于构建和发布产品,而不是去担心底层的基础设施。
然而,这样做却导致了摩擦,因为开发人员开始过度依赖于DevOps团队进行每一个小改动和部署。
Helm 很棒,不过作为用户界面可能不太合适。
但是,让我们来修复它!在这篇文章里,我将向你展示如何将任何 Helm 图变成一个简单的界面,你的开发人员(或者甚至非技术人员)都可以轻松使用。这只需要五分钟。
准备,预备,开始 ⏳
1. 独眼巨人
Cyclops(https://github.com/cyclops-ui/cyclops)是一个 开源工具,允许你从 Helm 图表构建内部开发者平台。简单来说,你只需导入一个 Helm 图表,Cyclops 就会根据这个 Helm 图表生成一个界面。
在那里,开发人员可以使用此UI来配置、部署并管理运行在Kubernetes集群上的应用程序。
设置非常简单,只需输入两个命令即可开始。您也可以在这里找到,方便大家访问:我们的网站或代码库。
运行以下命令来安装cyclops和示例模板:
kubectl apply -f https://raw.githubusercontent.com/cyclops-ui/cyclops/v0.18.2/install/cyclops-install.yaml &&
kubectl apply -f https://raw.githubusercontent.com/cyclops-ui/cyclops/v0.18.2/install/demo-templates.yaml
点击进入全屏 点击退出全屏
要访问cyclopsui,你可以直接将服务的端口转发,但在实际生产环境中使用时,你可以通过 ingress 或负载均衡器来让其对外访问。
kubectl port-forward svc/cyclops-ui -n cyclops 3000:3000
使用 kubectl 命令将 cyclops 命名空间中的 svc/cyclops-ui 服务的 3000 端口进行端口转发到本地的 3000 端口。
点击全屏 恢复原尺寸
你可以在 http://localhost:3000/ 访问 Cyclops。
2 准备好你的 Helm 模板 🗃️当您在我们的仓库时,给它点个星吧!
⭐在 GitHub 上给 Cyclops 点个星⭐
你可能已经有一些Helm图表躺在文件夹里了;这些就足够好了。如果没有的话,你可以使用我的!我使用helm create
命令创建了一个图表,还没对它进行任何修改。更多详情,可以访问我的GitHub仓库!
让我们花一点时间仔细看看这个图表。它由5个资源组成:一个部署、一个服务、一个服务账户、一个入口和一个水平 Pod 自动扩缩器。HPA 和 ingress 默认是关闭的,但是你可以在 values.yaml
文件中启用它们。
这里的值文件虽然很小,但是即使这只是“默认的Helm图表”,也可能使大多数开发者望而却步。
my-chart/
├── Chart.yaml # 关于图表的元数据(如名称、版本等)
├── values.yaml # 默认配置值
├── **values.schema.json** # 由 values.yaml 生成
├── templates/
│ ├── deployment.yaml
│ ├── hpa.yaml # 默认禁用
│ ├── serviceaccount.yaml,
│ ├── service.yaml
│ ├── ingress.yaml # 默认禁用
└── .helmignore
全屏模式 退出全屏
我将会使用和玩玩这个图表,但你也可以用你手头的任何图表用你自己的方式做同样的事情。
我还要在图表中加一个东西- 一个架构文件。虽然我的Helm图表没有自带架构文件,但你的图表可能已经有了这个文件(如上文中的values.schema.json
)。我自动生成了我的架构文件,并删掉了多余的行。你可以在这里看到最终版本的架构文件here。
现在终于轮到好玩的部分了。
如果你已经安装了Cyclops,在浏览器中打开它。你会看到一个空的模块界面,但我们首先应该点击模板选项卡。
出厂自带,Cyclops 自带多个模板以帮助你快速上手,但我们来添加自己的模板,这样我们就可以自由尝试,这样我们就可以玩一玩了。
点击 添加模板引用
按钮,填写相应的字段,使它指向您的 Helm 模板。
⚠️ 如果你使用的是存放在私有仓库中的Helm图表,你可以在这里查看如何做 更多详情:如何访问 ⚠️
添加完图表,回到模块标签页。这个页面仍然是空的,但让我们用新模板部署一个模块!
部署模块的第一步是选择一个模板,这一步骤中,在下拉菜单中找到你之前导入的模板并点击它。还记得我们之前提到的 value.schema.json
吗?这就是 Cyclops 用来渲染 UI 的 JSON 文件。
模板-1 图片如下:
正如你所见,这里的字段对应于 value.schema.json
中定义的字段。如果在 Helm 图表的模式中进行更改,例如在这里移除几个字段(如 此处),UI 也会相应地发生变化。
"模板2"
环眼神不仅仅是你的Helm图表的一个漂亮界面。填写完表单后,你的模板就会渲染,你可以将其部署为一个模块。环眼神可以将它直接部署到你的集群中,或者如果你更喜欢 GitOps 流程,你可以将配置推送到 Git。最终目标是一样的:你将使用 UI 中提供的值将你的 Helm 图表部署到集群中。
在这里,开发人员可以轻松访问他们可能需要的所有内容:重启应用,查看日志,检查状态,修改配置,等等。
你是个平台工程师,哈利,魔法师 🧙♂️!虽然 Helm 图表可能让大多数开发人员望而却步,但一个简单的用户界面会更受欢迎。通过将 Kubernetes 的复杂性抽象掉,并仅在用户界面上展示相关的配置选项,你已经为开发人员提供了一个更安全、更快捷且更自主的工作流程。
不再需要与DevOps团队来回沟通进行常规的代码变更。不再需要学习Helm这样的新工具。相反,开发人员获得了一种流畅、专注的体验,让他们能够自信地交付代码。这就是平台工程的核心思想:提供标准化、自助式的基础设施,使开发团队更高效。
如果你想了解更多关于平台工程和内部开发者平台的构建,加入我们的Discord频道来和我们聊聊。
⭐ 星单眼怪项目 ⭐
共同學(xué)習(xí),寫下你的評論
評論加載中...
作者其他優(yōu)質(zhì)文章