我们如何进一步推进 GitOps
GitOps 改变了团队管理基础设施和部署的方式,使一切变得更加自动化、可预测和版本控制。但我们不禁思考:我们能做得更好吗?
我们致力于构建内部开发者平台(点击此处了解更多信息)。IDP 的核心价值之一是让开发者能够尽可能快速地、安全地进行开发。然而,我们意识到传统的 GitOps 工作流程正在给开发者带来诸多不便。
在这篇文章中,我将为您简要介绍 GitOps 的历史——它是如何开始的,我们发现它有哪些不足,以及我们做了哪些工作来进一步推动它的发展……
支持我们🙏
我们知道 Kubernetes 的使用并非易事。因此,我们创建了 Cyclops,一个用于在 Kubernetes 上构建开发者平台的开源框架。它能够抽象化 Kubernetes 的复杂性,并通过可定制的 UI 部署和管理您的应用程序,满足您的需求。
我们正在将 Cyclops 开发为一个开源项目。如果您有兴趣尝试一下,可以参考我们代码库中的快速入门指南。如果您喜欢,请给我们一个 star ⭐ 来表示您的支持。
什么是 GitOps?
GitOps 的先决条件是基础设施即代码。无需手动访问充当服务器的机器,然后使用 CLI 命令在其上启动应用程序,Kubernetes、Terraform 等工具已经发展起来。它们允许你将基础设施定义为 代码,这意味着你可以将所需的基础设施状态记录下来——就像 Kubernetes 清单一样。
随着基础设施即代码 (IaaS) 的日益普及,协作开发此类代码的需求也日益增长。常规代码开发中常用的最佳实践也正在基础设施即代码领域逐渐被采纳。
这意味着使用 git 作为单一事实来源。
使用 git 版本控制来查看谁在何时更改了什么。
使回滚变得如此简单git revert
。
通过拉取请求和代码审查实现协作。
自动化代码测试和基础设施即代码部署。
于是,GitOps 诞生了。简而言之,你的 git 仓库代表着集群状态,而 GitOps 运维人员会持续不断地维护集群状态与 git 仓库中定义的状态同步。
有趣的是:使用 GitOps 部署有两种方法。推送方法是指集群外部的工具将代码推送到集群中;拉取方法是指集群内部的工具将代码拉取到集群中。
我们如何进一步推进 GitOps
正如我所提到的,GitOps 的先决条件是基础设施即代码。在典型的设置中,一家公司会有一个专门用于存储基础设施即代码的存储库——这可以是Terraform、Helm charts,甚至是简单的Kubernetes manifests。无论它是什么,通常都归 DevOps 团队所有。
然而,DevOps 工程师并非唯一需要使用此配置的人。虽然“基础设施即代码”有很多优点,但产品开发人员对此并不感冒。产品开发人员了解他们的应用程序,但用一种新的编程语言表达他们的需求却很困难(即使像 YAML 这样“简单”的语言)。
而这往往是 GitOps 最痛苦的部分。开发人员不理解“基础设施即代码”,只能依赖 DevOps 工程师来创建完整的代码,否则就得经历痛苦的 PR 和审查流程。这对开发人员来说既不是什么乐趣,因为他们根本不了解自己在做什么;对 DevOps 来说也同样不是什么乐趣,因为他们只是在充当开发人员的“服务台”。
但这正是我们可以将 GitOps 更进一步的地方……
独眼巨人
Cyclops是一款开源 工具,用于在 Kubernetes 上构建内部开发者平台。它使 DevOps 工程师能够在 Kubernetes 之上创建自定义 UI,并为其他开发者提供自助服务。简单来说,DevOps 工程师可以导入他们的 Helm 图表,Cyclops 会基于此图表创建 UI。
从这里开始,开发人员可以使用此 UI 来配置和部署他们的应用程序。开发人员无需学习 Helm Chart 的工作原理(即基础设施即代码),只需在 UI 上填写几个字段,验证输入,然后按下按钮即可部署。
这些领域是由他们的 DevOps 工程师创建的,他们可以完全自由地抽象出他们想要的 Kubernetes 和 Helm 的任意部分(或多或少)。
但很酷的是,Cyclops 可以将该配置直接部署到集群,也可以将配置推送到 Git 存储库。
然后,您可以使用其他 GitOps 操作员将这些更改同步回集群,然后 Cyclops 就可以再次管理应用程序了。通过 Cyclops 完成的任何更改都会在应用到集群之前推送到 git!
这种方法允许您将 GitOps 的所有优势与开发者平台的流畅开发者体验相结合 - 让开发人员快速且独立。
了解更多
Cyclops完全开源,只需一条命令即可设置kubectl
,并且它自带一些预定义的 UI 来帮助您快速上手。您可以在我们的代码库中找到快速入门指南 ,同时,不妨考虑通过 star 来支持我们的代码库!要复制上图,您可以点击此处了解更多关于如何使用 GitOps 设置 Cyclops 的信息。
我们也很高兴地告诉大家,我们即将迎来第二个产品发布周!发布周将从3月10日持续到14日,并以Product Hunt发布会结束!如果您有兴趣持续关注,欢迎加入我们的Discord或在LinkedIn上关注我们,我们每周都会发布一项新功能!🤘
鏂囩珷鏉ユ簮锛�https://dev.to/cyclops-ui/how-we-took-gitops-a-step-further-3dbc