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.mzph.cn/news/1194514.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于51/STM32单片机智能分拣系统扫码二维码刷卡识别传送APP设计(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

基于51/STM32单片机智能分拣系统扫码二维码刷卡识别传送APP设计(设计源文件万字报告讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码STM32-S128RFID刷卡识别分拣计数信息管理电机传送舵机导向按键声光提醒TFT彩屏(无线方式选择) 产品功能描述&…

.NET 7.0在.NET Core Web API中实现限流

参考文档:https://blog.csdn.net/zls365365/article/details/133627445 文章目录安装NuGet包配置appsettings.json添加中间件测试结果安装NuGet包 配置appsettings.json //配置限流,IP限制适应于所有全局,规则为1分钟最多访问10次"IpRateLimiting&q…

从零搭建安全微服务网关,Spring Cloud Gateway鉴权全解析

第一章:从零认识微服务网关鉴权体系 在现代微服务架构中,网关作为所有外部请求的统一入口,承担着路由转发、限流熔断、安全控制等关键职责。其中,鉴权体系是保障系统安全的核心环节。通过在网关层实现统一的身份验证与权限校验&am…

【Java单例模式终极指南】:20年架构师亲授7种实现方式的性能、线程安全与反序列化陷阱全解析

第一章:单例模式的核心原理与应用场景 单例模式是一种创建型设计模式,确保一个类在整个程序生命周期中仅存在唯一实例,并提供全局访问点。其核心在于控制实例化过程——通过私有化构造函数、静态私有实例变量以及公有静态获取方法三者协同实现…

基于51单片机自行车码表里程表霍尔测速时钟显示超速报警设计5(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

基于51单片机自行车码表里程表霍尔测速时钟显示超速报警设计5(设计源文件万字报告讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码 51单片机自行车码表霍尔测速里程计超速报警时钟5 产品功能描述: 本系统由STC89C52单片机核心、DS1302…

面试官最爱问的HashMap底层原理,一次性讲清楚所有核心细节

第一章:HashMap底层原理概述 HashMap 是 Java 集合框架中最常用、最核心的键值对存储结构之一,其设计目标是在平均情况下实现 O(1) 时间复杂度的插入、查找与删除操作。它基于哈希表(Hash Table)实现,内部采用数组 链…

基于51/STM32单片机无线多功能门铃留言录音视频监控安全门禁设计(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

基于51/STM32单片机无线多功能门铃留言录音视频监控安全门禁设计(设计源文件万字报告讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码51单片机自行车码表霍尔测速里程计超速报警时钟5 产品功能描述: 本系统由STC89C52单片机核心、DS130…

Unsloth部署GPT-OSS:开源模型本地化实战教程

Unsloth部署GPT-OSS:开源模型本地化实战教程 你是否也曾在尝试微调大模型时被漫长的训练时间、高昂的显存消耗卡住?有没有想过,其实可以用更轻量、更高效的方式完成本地化部署和训练?今天我们要聊的 Unsloth,正是为解…

7.4 进阶实战:使用 IaC 代码化管理你的 DevOps 流水线

7.4 进阶实战:使用 IaC 代码化管理你的 DevOps 流水线 1. 引言:流水线也是基础设施 传统 DevOps 中,CI/CD 流水线的配置散落在各个系统的 UI 界面中: Jenkins Job 配置在 Jenkins 界面 GitHub Actions 配置在 .github/workflows/ Argo CD Application 通过 kubectl apply…

c#进阶疗法 -jwt+授权

ASP.NET Core JWT 认证与授权实战指南 什么是 JWT? JWT(JSON Web Token)是一种基于 JSON 的开放标准(RFC 7519),用于在各方之间安全地传输信息。JWT 可以被验证和信任,因为它是数字签名的。 JWT…

依赖版本打架怎么办?5个真实案例带你实战解决Maven冲突难题

第一章:依赖版本打架怎么办?5个真实案例带你实战解决Maven冲突难题 在实际开发中,Maven依赖冲突是Java项目常见的“隐性故障源”。不同库引入同一依赖的不同版本时,可能导致类找不到、方法不存在甚至运行时异常。通过分析和解决真…

Java Debug效率革命?飞算JavaAI一键修复器全面评测

Java开发过程中,Bug排查始终是影响开发效率的核心痛点。无论是新手面对控制台冗长报错日志的手足无措,还是资深开发者花费数小时排查隐藏的逻辑漏洞、依赖冲突,甚至是简单的语法疏漏,都在无形中消耗着开发人员的时间与精力。为验证…

如何在30分钟内完成Spring Boot 3与MyBatis-Plus的无缝对接?真相在这里

第一章:Spring Boot 3与MyBatis-Plus整合概述在现代Java后端开发中,Spring Boot 3以其自动配置、起步依赖和响应式编程支持等特性,成为构建微服务架构的首选框架。与此同时,MyBatis-Plus作为MyBatis的增强工具,在简化C…

单例被破坏?Spring Bean不是单例?——深入JVM类加载、反射、反序列化场景下的5大失效真相

第一章:单例模式的核心概念与设计哲学 单例模式(Singleton Pattern)是创建型设计模式中最基础且广泛应用的一种,其核心目标是确保一个类在整个应用程序生命周期中仅存在一个实例,并提供一个全局访问点。这种设计不仅节…

8.1 拒绝两眼一抹黑:日志、监控、告警三位一体的可观测性方法论

8.1 拒绝两眼一抹黑:日志、监控、告警三位一体的可观测性方法论 1. 引言:可观测性的三个支柱 在云原生时代,系统复杂度呈指数级增长。当生产环境出现问题时,如果缺乏可观测性,你就像在黑暗中摸索。 可观测性(Observability) 不是监控(Monitoring)的升级版,而是一个…

零售行业OCR应用案例:商品标签识别系统搭建全过程

零售行业OCR应用案例:商品标签识别系统搭建全过程 在零售行业,每天都有大量的商品需要录入系统、核对信息、更新库存。传统的人工录入方式不仅效率低,还容易出错。有没有一种方法,能快速准确地从商品标签上提取文字信息&#xff…

【企业级Excel导出黄金标准】:从5分钟到8秒——基于EasyExcel 3.0+自研缓冲池的千万级导出压测实录

第一章:企业级Excel导出性能瓶颈的根源诊断 在大型企业系统中,批量导出海量数据至Excel文件是常见需求,但随着数据量增长,导出操作常出现响应缓慢、内存溢出甚至服务崩溃等问题。这些问题背后往往隐藏着深层次的技术瓶颈&#xff…

Maven依赖冲突怎么破?资深工程师教你7种高效排查与隔离手段

第一章:Maven依赖冲突的本质与常见场景 在Maven项目构建过程中,依赖冲突是开发者频繁遭遇的问题之一。其本质源于Maven的“传递性依赖”机制与“最近路径优先”(Nearest-First)的依赖解析策略之间的交互。当多个路径引入同一依赖的…

3种高效Selenium登录方案曝光:自动点击不再被反爬拦截

第一章:Selenium模拟登录的核心挑战在自动化测试和数据采集场景中,Selenium 因其强大的浏览器操控能力成为模拟用户登录的首选工具。然而,实际应用中会面临诸多技术障碍,直接影响脚本的稳定性与成功率。动态内容加载 现代网页广泛…

JNI简单学习(java调用C/C++) - 实践

JNI简单学习(java调用C/C++) - 实践2026-01-21 12:21 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !i…