什么是GitOps

持续的GitOps,新时代的DevOps实践,通过Kubernetes集群来实现基于git的全自动化的流程来提高交付速度。简单地说,GitOps是使用Git拉请求管理基础设施部署和软件部署的艺术和科学。

两个关键概念:

  • 软件的描述表示: 使用Kubernetes,应用程序和底层基础结构之间的关系纯粹是声明性的。您使用声明式(YAML)请求您希望从基础设施中获得什么。这些YAML的实现细节被底层的Kubernetes集群抽象出来,这些集群具有控制器、调度器、KubeDNS、KubeProxy、操作符等,这使我们能够从传统的“基础结构作为代码”转移到“数据描述的基础结构”。更多信息请访问GitHub。这里的关键是,应用程序所需的每个声明性标记(来自application Developer / application Operator / Cluster Operator)都被充实到持续交付管道中的YAML中,并最终推入GitOps存储库。并且应该对集群中的任何手动YAML更改都零容忍。

  • 连续同步:连续同步的意思是,不断地查看git存储库,以将任何状态更改反映到Kubernetes集群中。这是一个强大的想法,来自一个叫做Flux的工具。Flux试图将部署自动化从Kubernetes集群外部转移到使用Kubernetes操作符的集群中。

持续GitOps是四个主要组件的交集,它们共同创造了奇迹:

  • Git存储库:将应用程序的声明性定义存储为YAML的源代码存储库。
  • Kubernetes集群:我们部署应用程序的底层集群。
  • 同步代理:Kubernetes操作符扩展,它负责将Git存储库和应用程序状态持续同步到集群中。
  • 持续部署管道:编排整个自动化流程的连续部署管道。

为什么使用GitOps ?

使用拉请求来管理基础设施可能看起来有点像一个奇怪的黑客——使用锤子来刷墙或者把车开到水里。

但是当你仔细观察时,你会发现GitOps背后的实践是很有意义的。通过将基础设施管理任务转化为一系列的拉请求,您可以实现以下目标:

  • 您将获得一个用于控制基础设施的工具和接口。这样就不需要使用不同的工具来控制不同类型的基础设施。

  • 您可以获得对您的配置所做的所有更改的版本控制。这对于回滚更改和审计非常方便。

  • 您可以使用diff来检测更改并自动生成警报。这不仅意味着您有一种不断监视更改的方法,而且如果实际情况与应该配置的方式不同,那么很容易发现问题。

  • 因为您使用的是Git拉请求(大多数软件开发人员已经很熟悉了),所以您不必为了管理基础设施而向您的团队教授新工具。

  • 通过持续的部署自动化提高了生产力。

  • 通过推动代码而不是容器来增强开发人员的体验。

  • 由于所有集群更改的自动审计日志,提高了稳定性。

  • 更高的可靠性来自Git内置的恢复/回滚和fork,并且来自单一的可靠来源。

  • 端到端工作流的一致性和标准化。

  • 更强的安全性,因为Git具有强大的正确性和用于跟踪和管理更改的加密技术。

  • 更低的停机时间带来的成本效益,极大地提高了生产率。

参考:

https://www.weave.works/technologies/gitops/

https://www.atlassian.com/git/tutorials/gitops

https://www.cloudbees.com/gitops/what-is-gitops

https://medium.com/@imarunrk/continuous-gitops-the-way-to-do-devops-in-kubernetes-896b0ea1d0fb

GitOps的更多相关文章

  1. 15分钟在阿里云Kubernetes服务上快速建立Jenkins X Platform并运用GitOps管理应用发布

    本文主要介绍如何在阿里云容器服务Kubernetes上快速安装部署Jenkins X Platform并结合demo实践演示GitOps的操作流程. 注意:本文中使用的jx工具.cloud-envir ...

  2. GitOps:Kubernetes多集群环境下的高效CICD实践

    为了解决传统应用升级缓慢.架构臃肿.不能快速迭代.故障不能快速定位.问题无法快速解决等问题,云原生这一概念横空出世.云原生可以改进应用开发的效率,改变企业的组织结构,甚至会在文化层面上直接影响一个公司 ...

  3. GitOps入门与实践:如何集成Git和K8S?

    也许你之前听说过GitOps,但是对其并不了解.在本文中,我将对其进行简单介绍,它其实是一个应用程序开发和管理中的一个术语,其核心思想是将应用系统的声明性基础架构和应用程序存放在Git的版本控制库中. ...

  4. GitOps初阶指南:将DevOps扩展至K8S

    本文转自Rancher Labs 在过去十年的编程中,出现了一些革命性的转变.其中之一是源于围绕DevOps的实践,它将开发和运维团队整合到一个共享的工作流程中,此外还有持续集成和持续交付(CI/CD ...

  5. 采用GitOps的11大原因

    Kubernetes允许我们单纯地使用声明性的配置文件来管理我们的应用部署和其他基础设施组件(例如,我们现在都是YAML开发者).这使我们能够把所有这些文件放到Git仓库中,然后把它挂到流水线上(Je ...

  6. Argo CD使用指南:如何构建一套完整的GitOps?

    随着Kubernetes继续将自己确立为容器编排的行业标准,为你的应用和工具找到使用声明式模型的有效方法是成功的关键.在这篇文章中,我们将在AWS中建立一个K3s Kubernetes集群,然后使用A ...

  7. 云原生项目实践DevOps(GitOps)+K8S+BPF+SRE,从0到1使用Golang开发生产级麻将游戏服务器—第1篇

    项目初探 项目地址: 原项目:https://github.com/lonng/nanoserver 调过的:https://github.com/Kirk-Wang/nanoserver 这将是一个 ...

  8. 使用 Flux+Flagger+Istio+Kubernetes 实战 GitOps 云原生渐进式(金丝雀)交付

    在这篇指南中,你将获得使用 Kubernetes 和 Istio 使用 GitOps 进行渐进式交付(Progressive Delivery)的实际经验. 介绍 gitops-istio GitOp ...

  9. Linkerd 2.10(Step by Step)—将 GitOps 与 Linkerd 和 Argo CD 结合使用

    Linkerd 2.10 系列 快速上手 Linkerd v2.10 Service Mesh(服务网格) 腾讯云 K8S 集群实战 Service Mesh-Linkerd2 & Traef ...

  10. Kubernetes GitOps 工具

    Kubernetes GitOps Tools 译自:Kubernetes GitOps Tools 本文很好地介绍了GitOps,并给出了当下比较热门的GitOps工具. 简介 在本文中,将回顾一下 ...

随机推荐

  1. Windows bat批处理文件结束某个程序进程,删除文件夹

    Windows bat批处理文件结束某个程序进程,删除文件夹 bat文件内容: @echo off setlocal :: 要结束的应用程序进程名 set "PROCESS_NAME=助手. ...

  2. linux安装软件配置

    CentOS7更换yum为阿里源 1 备份本地源mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backu ...

  3. w3cschool-微信小程序开发文档-框架

    https://www.w3cschool.cn/weixinapp/1g7f1q8l.html MINA文件结构 文件结构 MINA程序包含一个描述整体程序的app和多个描述各自页面的page. 一 ...

  4. biancheng-Spring Cloud Alibaba Seata

    随着业务的不断发展,单体架构已经无法满足我们的需求,分布式微服务架构逐渐成为大型互联网平台的首选,但所有使用分布式微服务架构的应用都必须面临一个十分棘手的问题,那就是"分布式事务" ...

  5. Kotlin:【泛型】

  6. C#生成目录

    在使用C#时,特别是做项目时,有时不会关注生成结果的目录结构的管理.但这样随着动态链接库的增多,文件夹中的文件数量会急剧增加.毕竟许多产品级的软件的清晰的目录是我们追求的目标. 通过以下简单的几步我们 ...

  7. Flink同步mysql写入Iceberg异常,一秒写入一次

    1.现象 在Iceberg数据湖治理过程中发现,同步任务运行7天没有写入数据,运行7天后突然大批量产生Commit,一秒产生一个Commit. 2.问题 Flink写入checkpoint时会在che ...

  8. Codeforces 319B Psychos in a Line 题解 [ 绿 ] [ 单调栈 ] [ 动态规划 ] [ adhoc ]

    Psychos in a Line:很好的单调栈优化 dp 题! 观察 我们先观察,一个精神病人会一直杀到什么时候.显然,会杀到右边第一个比他大的精神病人那里,然后他就杀不动了. 因此我们可以从右往左 ...

  9. 开源EFCore 对比实体与实际数据库结构的工具-GZY.EFCoreCompare

    前言 GZY.EFCoreCompare 是一个用于 对比数据库结构和 EF Core 代码中的 DbContext 的库. 它基于 EF Core 的 Scaffolding 机制,生成 Datab ...

  10. [HNOI2009] 图的同构计数

    因为要求本质不同的图,容易想到群论. 为了方便处理,将边是否存在转化为边的黑白染色问题(实际上就是 \([SHOI2006]\) 有色图 的弱化版本,最终公式也差不多). 根据 \(Burnside\ ...