2 如何实施GitOps

1 如何实施GitOps

我们正真实施 GitOps 的具体流程如下:

  • 遵循 GitOps 的标准流程,将代码仓库和配置仓库相分离
  • 基于 OAM 框架模型,DevOps 团队需要将任何上线的变更都需要通过声明式 API 来实现
  • 选择合理的工具集
  • 从变更频率高或易于中断的应用程序开始

1.1 GitOps工具集

除了 Kubernetes 集群外,GitOps 的实施通常还要依赖于如下工具

  • Git 和 Git Server:显然,这是实施 GitOps 的基础和中心;GitHub、GitLab 或任何形式的支持自动化 Pipeline 必要功能的 Git Server 均可;

  • CI Server:CI Pipeline 的基础设施,如 Jenkins 和 Tekton 等;

  • Agent Operator(Deploy Operator):CD Pipeline 的基础组件

    • GitOps 中,可用的解决方案包括 ArgoCD、Flux、Jenkins X、WKSctl 和 Gitkube 等;
  • Canary Deployer
    • flux 提供的名为 Flagger 的 Kubernetes Operator 支持金丝雀发布
    • 它能够结合 Istio、Linkerd、App Mesh、NGINX、Skipper、Contour、Gloo 或 Traefik 等自动实施流量路由和流量迁移,以及根据 Prometheus 实现Canary 分析

1.2 什么是 GitOps

什么是 GitOps?

  • 一套使用 Git 来管理基础架构和应用配置的实践,一项事关部署流程的技术风格

  • 在运行过程中以 Git 为声明性基础架构和应用的单一事实来源

  • 使用 Git 拉取请求来自动管理基础架构的置备和部署

  • Git 存储库包含系统的全部状态,因此系统状态的修改痕迹既可查看也可审计

  • 与 DevOps 相比,GitOps 更侧重于基于工具和框架的实践,其实可以将他更好的理解为建立在 CI/CD 上的一种抽象

  • 简单来说:GitOps = IaC + MRs + CI/CD

    • MRs:Merge Requests

如何开始使用 GitOps ?

  • 存在支持声明式管理的基础架构
    • 天然适配 Kubernetes 和云原生开发的运维模式
    • 原生支持基于 Kubernetes 的持续部署
  • 用于构建开发流程、对应用进行编码、管理配置、置备 Kubernetes 集群以及在 Kubernetes 或容器注册中心进行部署

2 GitOps 具体示例

在下面示例中分别是 FluxCD 和 Argo CD、Tekton and ArgoCD ,但是他们都遵循了 GitOps 的范式标准

2.1 GitOps示例一:FluxCD

2.1.1 Flagger

Flagger 是 Flux CD 中的一个组件其支持功能如下:

支持 Canary releases(金丝雀发布)、A/B testing(A/B 测试)、Blue/Green mirroring(蓝绿部署)等部署策略,它依赖于 Service MeshIngress Controller 实现流量策略

支持基于 Prometheus、Datadog 等进行发布分析,以及基于 Slack 等进行告警

2.2 GitOps示例二:ArgoCD

ArgoCD:专用于Kubernetes的声明式GitOps CD工具

2.3 GitOps示例三:Tekton and ArgoCD

此类示例才是我们应该使用的:

适用于无服务器的现代 CI/CD 工作流使用

  • Tektoon:CI 流水线(用于交付)
  • Argo CD : CD 流水线(用于部署)

openshift 上是如何实现现代化的云原生 GitOps 构建


如上图:

  • 首先 Tekton 定义 knative 流水线,然后步骤是:
    1. 开发人员推送代码至代码仓库
    2. 通过 webhook 提交事件然后被 Tekton 所接收并触发对应的流水线
    3. 然后执行 build 并做单元测试
    4. 执行镜像构建,并推送到镜像仓库
    5. 随后向我们的配置仓库进行一个 pull 操作,并取到对应的配置内容
    6. 然后更具获取到的配置内容来测试部署我们的应用程序(这一步并不是真正的部署,而是变更推送能适配到刚才提交的新镜像的配置信息而已)
    7. 然后将测试部署的配置再次推送到配置仓库中,并通知 Argo CD
  • 接着 Argo CD 执行 CD 流水线
    1. Argo CD 通过事件看到了 Tekton 的变更,就会将提交的新的配置文件拉取至 argo CD 本地
    2. 然后再由 Argo CD 按照对应的分支,更具不同分支并判别这次的部署操作。(如果是来之 dev 分支,那么就会将应用部署至 dev 环境中。如果是来自其他分支那么就会部署到其他环境中)
    3. 如果再测试分支上部署并运行没有问题,就会合并代码并部署至生产环境中

2.4 基于 Tekton 和 ArgoCD 的 GitOps 示意图

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇