什么是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. Nacos、Apollo、SpringCloud Config微服务配置中心对比

    1为什么需要配置中心 配置实时生效: 传统的静态配置方式要想修改某个配置只能修改之后重新发布应用,要实现动态性,可以选择使用数据库,通过定时轮询访问数据库来感知配置的变化.轮询频率低感知配置变化的延时 ...

  2. nginx配置好访问返回502错误

    CentOS服务器配置好Nginx重新加载了配置文件,浏览器访问提示错误: 502 Bad Gatewaynginx/1.16.1 如图: 页面上直接显示了nginx名称,一般是说nginx服务器返回 ...

  3. Superset 稀奇古怪的bug

    1.filterbox 及 native filter 等组件里面,日期筛选器下拉框,显示的不是日期格式,而是时间戳格式,如: 解决方法: 修改superset\utils\core.py 里面的js ...

  4. yolov5输出解码实现

    yolov5输出解释--以yolov5s.pt为例 写在前面.这几天在用Tensort部署一个工训赛检测圆环的模型,发现输出怎么都对不上,通过查阅各方资料,便有了这篇文章,希望能帮助到大家 输出维度 ...

  5. .NET Core GC压缩(compact_phase)底层原理浅谈

    简介 终于来到了GC的最后一个步骤,在此之间,大量预备工作已经完成.万事俱备,只欠东风 清除 如果GC决定不压缩,它将仅执行清除操作.清除操作非常简单,把所有不可到达对象(gap),转换成Free.也 ...

  6. dart 中在实例化 new 关键字可以省略不写

    dart 中在实例化 new 关键字可以省略不写 class Person { String name; int age; String sex; Person(this.name, this.age ...

  7. 六. Redis当中的“发布” 和 “订阅” 的详细讲解说明(图文并茂)

    七. Redis 当中 Jedis 的详细刨析与使用 @ 目录 七. Redis 当中 Jedis 的详细刨析与使用 1. Jedis 概述 2. Java程序中使用Jedis 操作 Redis 数据 ...

  8. Netty实战入门教程

    概述 Netty 是一个异步的.基于事件驱动的网络应用框架,用于快速开发可维护.高性能的网络服务器和客户端 Netty 在 Java 网络应用框架中的地位就好比:Spring 框架在 JavaEE 开 ...

  9. spring boot配置mybatis-plus

    一.maven配置 <mybatis-plus.version>3.2.0</mybatis-plus.version> <mysql-connector.version ...

  10. Anoii网络库之Timer实现

    Timer的实现挺值得拿出来聊一聊的 Anoii网络库的事件循环: Timer是使用poll的timeout参数实现的,所以定时的精度是毫秒,对于一个网络库而言这足够了.如果不够的话,还可以使用tim ...