本文来自极狐GitLab 资源中心。原文链接:https://resources.gitlab.cn/articles/614fb704-882f-4601-927f-00a8b1dca2ed。
GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab :https://gitlab.cn/install?channel=content\&utm_source=csdn 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。
更多关于极狐GitLab :https://gitlab.cn 或者 DevOps 的最佳实践,可以关注文末的极狐GitLab 公众号。
虽然有很多 DevOps 工具可以实现 GitOps 的部分功能,但极狐GitLab 是唯一一个可以覆盖应用程序从构思到代码再到部署全流程的协作平台工具。
本文为 GitOps 系列内容的第一部分,我们将从流程方面深入挖掘 GitOps,并解释极狐GitLab 是如何实现这些功能的。
"GitOps " 是 DevOps 词典中最新的流行语,与其他的新概念一样,它有许多不同的解释。不过从核心上来说,GitOps 指的是将 Git 存储库作为构建基础设施和部署应用程序所有代码的唯一可信数据源。
将代码部署到不同的云环境需要一定程度的自动化,有一些声明式工具可以帮助加速这个过程。例如,Terraform 可以用来将 Kubernetes 配置到任何公开可用的云中,而 Helm 和 Kubernetes 可用于将应用程序部署到这些 Kubernetes 集群中。
GitOps 和极狐GitLab
通过使用像 Git 这样的版本控制系统作为唯一可信数据源,工程师能够以持续交付的形式更新其应用程序的底层源代码。
"版本控制系统确保一切都被记录且可见,审计跟踪使团队保持合规性。" Brad Downey 在 DevOps.com 的一篇文章中说,"GitOps 将更易于还原有问题的更改,从软件开发和基础架构的角度成为系统中的唯一可信数据源。"
极狐GitLab 基于 Git 构建,是支持整个 DevOps 生命周期的单一应用程序。除了作为应用开发的重要工具,极狐GitLab 还是一个协作平台,允许所有各方参与代码生产过程。
"协作是整个 GitOps 过程的关键。" Brad 说,"基础架构团队、开发团队,甚至管理层、项目管理、安全和业务参与人,都需要共同协作,以快速高效的方式生产这些代码。"
接下来我们用一个例子解释极狐GitLab 如何允许团队在命名之前就能很好地执行 GitOps。
用 epics 规划项目
Brad(操作演示人)为本次 GitOps 系列创建了一个名为 "Scale the Cloud " 的 epic 示例,以演示在极狐GitLab 中扩展 Kubernetes 集群的过程。
由于 GitOps 的部署以版本控制为中心,所以第一步是定义项目范围并确定参与人。接下来,我们会共享项目实现可能需要的所有信息,例如,编码、以代码形式对基础架构进行的更改、哪些更改必须被审查并最终部署到生产中。
在关联的版本库中打开一个 epic 示例后,您可以在描述中添加一些目标和任务。一个 epic 示例可以让您跟踪不同项目和里程碑的问题。issue 是极狐GitLab 中协作创意和规划工作的主要媒介。因为极狐GitLab 是多云的,所以 Brad 在演示中打开了三个独立的 issue,阐述了将 Kubernetes 集群部署到以下不同独立环境:Azure(AKS)、Google(GKE)和 Amazon(EKS)所需的条件。
通过极狐GitLab 促进协作和透明度
我们可以在 epic 层级看到,EKS 集群内部的扩展 issue 已经完成。点击 issue 可以看到,从 issue 列出的任务列表中创建了一个合并请求,而且 MR 已经被合并。
要查看原始代码和当前代码之间有什么变化,请在 MR 内单击变更。
"我可以看到我合并前和合并后通过的所有测试。"Brad 说,"我还可以看到评论的编辑历史记录。而且,记录下来我自己批准并合并了它。"
扩展到 GKE 的 issue 还未完成。当 Brad 打开合并请求时,我们看到它仍然是一个进行中的工作(WIP),这意味着尚未进行任何更改。在 Terraform 的 MR 上有一个评论,显示节点数需要从两个节点变为五个节点,以准备部署 GKE 环境。由于 Brad 也是这个 MR 的审批人,他点击解决 WIP 状态来启动流水线,并选择删除源分支以合并更新的节点数。
"GitOps 与代码和协作都有紧密联系。极狐GitLab 使协作成为可能,每个人都能以同样的进度工作。"Brad 说。
为了让极狐GitLab 成为一个有效的协作工具,它还需要透明化,这也是为什么组织中的每个人默认都能看到 issue 和相关的 MR。issue 和 MR 可以分配给某个协作者,或者在评论部分给该协作者打上标签,将其添加到待办事项列表中。
返回到 Epic 视图(即参与人经常用来查看项目进度的视图),我们看到将 GKE 扩展到五个节点的部署正在进行中。
"每个人都能够在同一个系统中工作,并了解事情的进展情况。"Brad 说,"无论你是在基础架构中还是在应用程序开发中,所有的更改都遵循同样的流程,即,定义工作主体,将其分配给个人,团队协作,然后部署这些代码,并将 Git 存储库作为唯一可信数据源使用。"
学习极狐GitLab 的相关资料:
- 极狐GitLab 官网:https://gitlab.cn
- 极狐GitLab 官网文档:https://docs.gitlab.cn
- 极狐GitLab 论坛:https://forum.gitlab.cn/
- 极狐GitLab 安装配置:https://gitlab.cn/install
搜索【极狐GitLab】公众号,后台输入加群 ,备注gitlab,即可加入官方微信技术交流群。