【k8s学习】GitOps介绍

Principles of GitOps

【本文内容】

  • 什么是GitOps?
  • 为什么GitOps受欢迎?GitOps好处。

1. 什么是GitOps

Infrastructure as Code

并不只是程序的源代码才叫Code。相应的,网络配置、Configuration配置(如Kubernetes yaml文件)、Policy配置(如Webserver跳转Policy)、Security配置,都是Code的一种 --> 即X as Code

比如:创建Kubernetes组件,一般情况下会定义一系列的yaml配置文件,然后将配置应用到生产环境。

【传统的做法】

  • DevOps人员在他的本地电脑上创建上述文件,并在本地测试。
  • DevOps人员把配置上传到了Git Repository上,以便可以保留历史版本。
    每个人都能查看并且提交修改,通常会直接提交到main branch下。
    每次配置的提交没有自动化测试,有可能提交上来的yaml文件是不可用的,或者这个版本的改动会影响到已经存在的配置。
  • 那么这个配置怎么生效呢?DevOps人员通过登陆到Kubernetes集群中,通过kubectl命令(如kubectl apply -f <filename>)使这些配置生效。
    即每个Team member可能都有登陆Kubernetes集群并修改这些配置的权限。
  • 这会导致不知道谁在什么时候run过上述的命令。也无法追踪是不是在run命令的时候使用了错误的配置。

即尽管我们遵循着X as Code的理念,即把一切都变成了Code,并上传到Git Repo上,但因为手工的execute过程依然无法把整个流程串起来。

【GitOps做法】
即把Infrastructure Code当做Project Code来对待,也有CI/CD的过程,而不是人工的在生产环境中apply/execute。

image.png
  • 首先上述的Kubernetes yaml文件,依然会上传到Git Repository中,和传统的不一样的是,任何人都不能随意的在Main Branch上直接改,而是需要先拉一个分支,在自己的分支上做修改。
  • 在这个分支上,有CI Pipeline(可以验证这些配置文件,自动化测试等)。
  • 等这些改动都测试完毕后,另些一些组员可以Approve这些改动。
  • 最后才Merge到Main branch上,在Main branch上有CD Pipeline,即部署到相应的环境中(比如Kubernetes集群配置的改动)。

这些流程听上去是不是很熟悉?因为我们的程序代码就是这样被部署到Production中的(即完全的CI/CD)。

GitOps的优点:

  • Automated Process:自动化的配置部署流程。
  • More Transparent:更透明,而不是Ops人员手工敲命令。
  • High Quality Infrastructure Code:让配置文件的代码质量变的更高。

2. CD Pipeline: Push vs Pull Model

所同上述所介绍的,当配置文件Merge到Main Branch后,就自动触发了CD Pipeline(即自动将配置部署到目标机器上,而不是通地Ops人员手动远程输命令配置)。

【GitOps提供了两种方式来触发】:

  • Push Deployment:这个方式比较熟悉,因为传统的DevOps中就经常用到,比如通过Jenkins build,再通过post的方式,PUSH到目标的Server中。
  • Pull Deployment:在目标Server中预先安装了Agent,再从Git Repository中PULL配置文件,Agent会隔一段时间去check下代码是否有改动,如果发现Git Repo中的代码有改动,那么就会拉取代码开始部署。

通过Pull模式做部署的工具有:fluxargo

3. GitOps的其它好处

  • Easy Rollback:通过Git版本控制,加上全自动的部署可以让回滚变的很容易。
  • Single Source of Truth:相比于存放在Ops人员本地电脑的配置文件,我们改用了Git仓库来管理配置文件,然后生产环境只从Git Repo中拉取代码,这会让所有的配置改动都在Git Repo中有记录。
  • Increasing Security:因为有了全自动的CD流程,所以Ops人员不再需要每个人都拥有生产环境执行命令的权限了。

4.总结
image.png

GitOps主要由4部分组件:

  • Infrastructure as Code(可能是yaml文件)
  • Version Control(Git)
  • Pull / Merge Requests
  • CI / CD Pipeline(flux cd, argo cd)

参考:
https://www.youtube.com/watch?v=f5EpcWp0THw
https://gitops-community.github.io/
https://www.gitops.tech/#what-is-gitops

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 162,825评论 4 377
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,887评论 2 308
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 112,425评论 0 255
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,801评论 0 224
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 53,252评论 3 299
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 41,089评论 1 226
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,216评论 2 322
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 31,005评论 0 215
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,747评论 1 250
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,883评论 2 255
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,354评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,694评论 3 265
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,406评论 3 246
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,222评论 0 9
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,996评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,242评论 2 287
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 36,017评论 2 281

推荐阅读更多精彩内容