news 2026/4/23 19:37:53

7.3 实战演练:监听镜像变更与监听应用定义的双模式工作流打造

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
7.3 实战演练:监听镜像变更与监听应用定义的双模式工作流打造

7.3 实战演练:监听镜像变更与监听应用定义的双模式工作流打造

1. 引言:两种 GitOps 模式之争

在 GitOps 实践中,有两种主流模式:

  1. 监听应用定义(App-of-Apps):Argo CD 监听 Git 中的应用定义变更,自动同步。
  2. 监听镜像变更(Image-based):Argo CD Image Updater 监听镜像仓库的新 Tag,自动更新 Git 并触发部署。

两种模式各有优劣,本节将通过实战对比,帮你选择最适合的场景。


2. 模式一:监听应用定义(传统 GitOps)

2.1 工作流

开发者提交代码 ↓ CI 构建镜像并推送 (myapp:v1.2.3) ↓ 开发者/CI 修改 Git 中的应用定义 (更新 image.tag) ↓ Argo CD 检测到 Git 变更 ↓ 自动同步到集群

2.2 实现步骤

步骤 1:CI 构建镜像

# .github/workflows/ci.yml-name:Build and Pushrun:|docker build -t myapp:${GITHUB_SHA} . docker push myapp:${GITHUB_SHA}

步骤 2:更新应用定义
有两种方式:

方式 A:CI 自动更新(推荐)

-name:Update Deploymentrun:|git clone https://github.com/org/deploy-repo.git cd deploy-repo # 使用 yq 或 sed 更新 values.yaml yq eval '.image.tag = "${GITHUB_SHA}"' -i apps/myapp/overlays/prod/values.yaml git commit -m "Update myapp to ${GITHUB_SHA}" git push

方式 B:开发者手动更新
开发者收到 CI 构建成功的通知后,手动修改 Git 中的应用定义。

步骤 3:Argo CD 自动同步
Argo CD 检测到 Git 变更,自动同步。

2.3 优缺点

优点

  • 完全符合 GitOps 原则(Git 是唯一事实来源)
  • 变更可审计(所有部署都有 Git 提交记录)
  • 支持手动审批(PR Review)

缺点

  • 需要 CI 系统有 Git 写权限(安全风险)
  • 流程稍显复杂(需要两步:构建 + 更新 Git)

3. 模式二:监听镜像变更(Image-based GitOps)

3.1 工作流

开发者提交代码 ↓ CI 构建镜像并推送 (myapp:v1.2.3) ↓ Argo CD Image Updater 检测到新镜像 ↓ 自动更新 Git 中的应用定义 ↓ Argo CD 检测到 Git 变更 ↓ 自动同步到集群

3.2 实现步骤

步骤 1:安装 Argo CD Image Updater

kubectl apply -n a
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/19 19:08:03

lvgl v8版本显示二维码代码示例

效果:void lvgl_widgets_demo() {char* title (char*)"我不是萧海哇";lv_obj_t* qrcodelv_qrcode_create(lv_scr_act(),200 , lv_color_black(), lv_color_white());lv_qrcode_update(qrcode, title, strlen(title));lv_obj_align(qrcode, LV_ALIGN_CENTER, 0, 0); …

作者头像 李华
网站建设 2026/4/21 4:50:10

HashMap为什么线程不安全?底层实现原理告诉你真相

第一章:HashMap为什么线程不安全?底层实现原理告诉你真相 HashMap的底层数据结构 Java中的HashMap基于哈希表实现,采用“数组 链表/红黑树”的结构存储键值对。当发生哈希冲突时,元素会被添加到链表中;当链表长度超过…

作者头像 李华
网站建设 2026/4/20 1:29:06

依赖冲突频繁爆发?掌握这4种高阶策略,轻松实现项目稳定构建

第一章:依赖冲突频繁爆发?重新认识Maven的依赖解析机制 在大型Java项目中,依赖冲突是开发过程中最常见的痛点之一。Maven作为主流的构建工具,其依赖解析机制直接影响着最终打包结果的稳定性和可预测性。理解Maven如何选择和解析依…

作者头像 李华
网站建设 2026/4/21 10:35:55

【HashMap源码级剖析】:掌握put/get操作的底层执行流程

第一章:HashMap底层实现原理概述 HashMap 是 Java 集合框架中应用最广泛的数据结构之一,它基于哈希表实现键值对的存储与查找,提供平均时间复杂度为 O(1) 的高效访问性能。其核心机制依赖于数组、链表和红黑树的组合结构,在处理哈…

作者头像 李华
网站建设 2026/4/16 2:26:43

Java中如何正确判断字符串为空?99%的开发者都忽略的细节

第一章:Java中字符串为空判断的常见误区 在Java开发中,字符串为空判断是日常编码中最常见的操作之一。然而,许多开发者在处理这一看似简单的逻辑时,常常陷入误区,导致程序出现空指针异常(NullPointerExcept…

作者头像 李华