GitOps 与传统 CI/CD 的区别

问题描述 投票:0回答:3

在正常的kubernetes CI/CD过程中,会发生以下过程:

  • 从 git 克隆代码
  • 构建并推送 docker 镜像
  • 使用更新的代码更新 kubernetes 部署

根据gitops定义

GitOps 是一种新的持续部署方法,它利用 Git 作为声明性基础设施和应用程序的单一事实来源,提供修订和更改控制。使用 GitOps,系统通过提交拉取请求(以及后续合并)来运行,以实现 Git 存储库中表示的系统的所需状态

我对 gitops 的理解是,当你更新 git 中的任何内容时(因为这是事实来源),kubernetes 的所需状态会更改为最新状态,并部署最新代码。

没有 gitops 的传统 CI/CD 的最终结果:新代码部署为 kubernetes 部署

gitops 的最终结果:新代码部署为 kubernetes 部署

我无法弄清楚其中的区别。抱歉,如果你听起来很奇怪。但我是个新手,正在探索 gitops 。

git kubernetes continuous-integration continuous-deployment
3个回答
1
投票

GitOps 只不过是将 CI/CD 原则扩展到应用程序代码之外:扩展到基础代码。简单的。您可以考虑使用 Git 作为事实来源,并结合 Terraform(配置)、Ansible(配置管理)和 Kubernetes(编排)作为示例……以实现让 Git 1:1 反映您的目标的目标。下文。这不是什么新鲜事,不要担心这些花哨的术语......


0
投票

CICD聚焦全链条:

  • 您签入您的代码
  • 代码得到测试
  • 容器已创建并上传
  • 容器已部署
  • 容器接受测试

中间还有许多其他步骤。这就是为什么它是持续集成和部署的原因。你也可以说,一个端到端的过程。

GitOps 不关心你的代码、docker 构建等等。它纯粹专注于保持您的应用程序更新(部署部分),以极端的形式实现完全自动化的渐进式交付,包括流量转移和运行状况检查、自动回退等。

除此之外,还有其他一些有时很重要的小细节,例如推与拉、集群自治、关注点分离。


-1
投票

简短回答 - GitOps 是一个框架,CI/CD 是一个过程!

GitOps 旨在利用 Git 作为事实来源,并使开发人员能够执行 IT 操作。它通过持续集成和持续交付 (CI/CD) 来自动化 Git 工作流程。让我在这里举个例子 - 我有一个 kubernetes 集群,我为它设置了 CI/CD 管道以实现自动化,但我们过去常常看到有人直接在集群上手动更改应用程序版本的事件(到处都有发生!)。我们利用 GitOps 来声明我的集群,以便每次有人进行手动更改时,它都会覆盖它并将其恢复到在 Git 中声明的原始状态(使用 Flux 等 GitOps 代理完成)。

© www.soinside.com 2019 - 2024. All rights reserved.