当前位置: 首页 > news >正文

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
http://www.jsqmd.com/news/278649/

相关文章:

  • 基于51/STM32单片机智能分拣系统扫码二维码刷卡识别传送APP设计(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • .NET 7.0在.NET Core Web API中实现限流
  • 从零搭建安全微服务网关,Spring Cloud Gateway鉴权全解析
  • 基于51单片机自行车码表里程表霍尔测速时钟显示超速报警设计5(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • 【Java单例模式终极指南】:20年架构师亲授7种实现方式的性能、线程安全与反序列化陷阱全解析
  • 面试官最爱问的HashMap底层原理,一次性讲清楚所有核心细节
  • 基于51/STM32单片机无线多功能门铃留言录音视频监控安全门禁设计(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • 7.4 进阶实战:使用 IaC 代码化管理你的 DevOps 流水线
  • Unsloth部署GPT-OSS:开源模型本地化实战教程
  • 依赖版本打架怎么办?5个真实案例带你实战解决Maven冲突难题
  • c#进阶疗法 -jwt+授权
  • Java Debug效率革命?飞算JavaAI一键修复器全面评测
  • 如何在30分钟内完成Spring Boot 3与MyBatis-Plus的无缝对接?真相在这里
  • 单例被破坏?Spring Bean不是单例?——深入JVM类加载、反射、反序列化场景下的5大失效真相
  • 8.1 拒绝两眼一抹黑:日志、监控、告警三位一体的可观测性方法论
  • 零售行业OCR应用案例:商品标签识别系统搭建全过程
  • Maven依赖冲突怎么破?资深工程师教你7种高效排查与隔离手段
  • 【企业级Excel导出黄金标准】:从5分钟到8秒——基于EasyExcel 3.0+自研缓冲池的千万级导出压测实录
  • 3种高效Selenium登录方案曝光:自动点击不再被反爬拦截
  • JNI简单学习(java调用C/C++) - 实践
  • Java导出Excel慢如蜗牛?3个被忽略的JVM参数+2种零拷贝写入法,立竿见影提速17倍
  • 建议收藏】大模型推理技术详解:从显存管理到算法加速的全景指南
  • 2026皮带上料机选购指南:热门企业产品性能大比拼,传动链条/乙型网带/非标链条/料斗提升机,上料机公司怎么选择
  • 【资深架构师亲授】CORS跨域配置最佳实践,企业级项目都在用
  • 大模型入门必收藏!一文看懂AI、机器学习、深度学习、LLM和Agent的关系
  • 揭秘Java CORS跨域难题:5步快速配置,彻底解决前后端分离痛点
  • C#进阶疗法 -- 拦截器
  • 浙江正规的胶辊包胶供应商有哪些,泰兴金茂辊业特色显著
  • Spring Cloud Gateway鉴权过滤器深度剖析(架构师私藏笔记曝光)
  • 国产化替代中WordPress如何兼容信创环境公式编辑?