GitOps 改变了团队管理基础设施和部署的方法,使得一切更加自动化、可预测,并且易于版本控制。但一个问题是,我们能否做得更好呢?
我们专注于构建内部开发者平台(了解更多此处)。IDP的核心价值之一是让开发者尽可能快且安全地进行开发。然而,我们发现传统的GitOps工作流程给开发者带来了不少麻烦。
在这篇文章中,我会简要回顾一下 GitOps 的历史——它的起源,我们发现它在哪些方面有所不足,以及我们如何进一步推动它的发展……
请支持我们 🙏
我们知道使用Kubernetes可能会很复杂。因此,我们创建了Cyclops,一个用于在Kubernetes上构建开发平台的开源框架,以抽象出Kubernetes的复杂性。并通过一个可以自定义的UI来部署和管理您的应用程序,以符合您的需求。
我们正在开发Cyclops作为开源项目。如果你想试试,这里可以找到快速入门指南。如果觉得不错,可以给它点个⭐支持一下。
GitOps的一个先决条件是将基础设施视为代码。不再手动访问充当服务器的机器并使用命令行指令在它们上面启动应用程序,而是出现了像Kubernetes和Terraform这样的工具。这些工具允许你将基础设施定义成代码,这意味着你可以将你希望的基础设施状态写下来,比如Kubernetes的清单文件。
随着基础设施即代码变得越来越流行,对这种代码的协作需求也日益增长。渐渐地,传统代码开发中的最佳实践也开始被应用于基础设施即代码领域。
这就意味着我们将git当作唯一的信息源头。
使用 Git 版本控制系统来查看谁修改了什么以及修改的时间。
将撤销变得像使用git revert
一样简单。
通过拉取请求和代码评审来促进团队间的合作。
自动化地进行代码的测试以及代码部署,实现代码基础设施。
就这样,GitOps诞生了。简而言之,你的Git仓库代表了集群状态,而GitOps操作员不断努力,保持集群状态与Git仓库中的定义同步。
趣闻:GitOps有部署代码的两种方法。一种是推送方法,即外部工具将代码推送到集群中;另一种是拉取方法,即内部工具将代码拉入集群中。
正如我提到的,GitOps的一个前提条件是基础设施即代码。在典型的设置中,一家公司会有一个仓库用于存储基础设施即代码——例如Terraform,Helm图表,甚至是普通的Kubernetes清单。无论是什么形式,通常归DevOps团队所有和管理。
然而,DevOps工程师并非唯一需要与这种配置打交道的人。虽然基础设施即代码有许多优点,但这让产品开发人员不太开心。产品开发人员了解他们的应用,但是用这新的编程语言表达他们的需求却很困难(即使这种语言是‘看似简单’的YAML)。
而这往往是GitOps中最痛苦的部分。开发人员不理解代码化的基础设施,依赖DevOps工程师完全编写代码,或者经历一个痛苦的代码审查过程。这让开发人员不爽,也让DevOps工程师成了开发人员的救火队员。
但这是我们可以更进一步推进GitOps的地方。
独眼龙
Cyclops 是一个 开源 工具,用于在 Kubernetes 上构建内部开发者平台。它 使得 DevOps 工程师能够创建自定义 UI,并在 Kubernetes 上实现自助服务。DevOps 工程师可以导入他们的 Helm 图表,Cyclops 就会根据导入的图表自动生成一个 UI。
在那里,开发人员可以利用这个界面来配置和部署他们的应用程序。开发人员不需要了解Helm图表(即代码即基础设施)的工作原理,只需填写界面上的几个字段,输入会自动验证,并点击按钮即可部署。
这些字段是由他们的DevOps工程师创建的,这些工程师可以完全自由地决定需要抽象多少Kubernetes和Helm的内容,无论是多还是少。
但酷的地方在于,Cyclops 可以直接将此配置部署到集群中,也可以将配置推送到 Git 中。
从那里,你可以使用其他 GitOps 操作符来同步这些更改回集群,在那里 Cyclops 可以再次管理应用。通过 Cyclops 进行的任何更改都会在应用到集群之前先推送到 Git 仓库!
这种方法可以让你将 GitOps 的所有优势与开发者平台提供的流畅的开发体验结合起来——即让开发者快速且独立地完成工作,同时首次出现时加上“GitOps 即 GitOps”以便读者理解。
Cyclops 完全开源,你可以通过一个 kubectl
命令来设置它,并且附带了一些预定义的 UI 帮助你快速上手。你可以在我们的仓库中找到快速入门指南,你还可以支持我们,比如给我们的 repo 加星标。要重现上面的图片,你可以在这里了解如何使用 GitOps 来设置 Cyclops 详情。
我们也非常兴奋地告诉你,我们即将迎来第二次第二周首发!活动时间为3月10日至14日,并以在Product Hunt上的首发结束!如果你有兴趣跟进,可以加入我们的Discord或在LinkedIn,,我们将每天介绍一项新功能! 🤘
⭐ 在 GitHub 上的 Star Cyclops (星耀独眼巨人) ⭐